首页 > 解决方案 > markdown header-includes 中的指令被忽略

问题描述

我正在使用 bookdown 创建一个文档。主要目标是打印机 pdf 输出,所以我想获得超链接作为脚注。为此,我在 index.Rmd 的 YAML 标头中添加了以下几行。

header-includes:
  - \let\oldhref\href 
  - \renewcommand{\href}[2]{#2\footnote{\url{#1}}}

这完全没有效果。相反,如果我将以下内容添加到项目目录中的 preamble.tex 文件中,我会得到我想要的行为。

\let\oldhref\href 
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}

我在尝试使用 header-includes 包含包时也遇到了同样的问题。他们只是没有被使用,我在文档构建中遇到错误。同样,将 \usepackage 添加到 preamble.tex 作品中。

所以我显然遗漏了一些关于 header-includes 的东西,但我不知道它是什么。

有什么建议么?

编辑:

要在 Windows 上使用最新版本的 RStudio 以及来自 CRAN 的最新版本 bookdown 来重现此问题(至少是问题的 \usepackage 版本),请使用 RStudio 创建一个新的 Bookdown 项目,并确保您在 LaTex 环境中安装了包放置然后在 index.Rmd 中编辑提供的标题以给出:

--- 
title: "A Minimal Book Example"
author: "Yihui Xie"
date: "`r Sys.Date()`"
site: bookdown::bookdown_site
documentclass: book
header-includes:
  - \usepackage{placeins}
bibliography: [book.bib, packages.bib]
biblio-style: apalike
link-citations: yes
description: "This is a minimal example of using the bookdown package to write a book. The output format for this example is bookdown::gitbook."
---

在 01-intro.Rmd 文件中,在代码之后立即添加以下代码以生成图形:

\FloatBarrier

使用 Build Book 选项卡构建 PDF 书籍,您将看到错误:

! Undefined control sequence.
l.179 \FloatBarrier

将 \usepackage 语句放在 preamble.tex 中可以消除错误。

标签: rmarkdownr-markdownbookdown

解决方案


推荐阅读