编织为PDF时,如何在RMarkdown中工作?

时间:2019-09-25 03:24:15

标签: yaml r-markdown knitr bookdown tinytex

在RMarkdown中,我有一个要编织为pdf的文档。该文档包含需要自动编号的方程式。我一直在使用$$ 1+1=2 \tag{1} $$约定来编写方程式,但是现在想切换到\begin{equation} 1+1=2 \eq:this_eq \end{equation}约定,以便可以对方程式进行自动编号和易于交叉引用。我发现的一些在线资源使得这样做似乎很简单。例如Linuxhere。但是,尝试这样做却使我心碎不已。

我将3.4.3版与RStudio(tinytex发行版)一起使用,并安装了书本(我仍然不确定在这里实现我的目标是否确实有必要)。这是一个repex:

---
title: This title
author: "This guy"
date: "This date"
header-includes:
   - \usepackage{amsmath}
output:
  pdf_document:
    toc: yes
    toc_depth: '4'
    df_print: kable
    fig_caption: yes
    latex_engine: xelatex
mainfont: Calibri Light
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## Introduction

blah blah...

\begin{equation}
S = X \bar{P}
(\#eq:signals)
\end{equation}

## Later on

blah blah \@ref(eq:signals)

当我尝试“编织为PDF”时,我遇到了错误

! Package mathspec Error: `amsmath' must be loaded earlier than `mathspec'.

已报告为错误并已“修复” here,但我无法理解该修复程序或无法遵循其说明。我要的是一组非常明确的步骤,这些步骤将使我到达可以在上面运行repex的位置而不会发生意外。

我尝试过的一些事情:

当我将pdf_document替换为bookdown::pdf_document2时,会发生相同的错误。或者当我删除

header-includes:
   - \usepackage{amsmath}

然后放

includes:
  in_header: preamble.tex

在行latex_engine: xelatex之后,其中“ preamble.tex”是包含行\usepackage{amsmath}的记事本文件

here中的注释似乎表明,甚至没有必要在YAML选项中说出任何关于amsmath的内容,这使我更加困惑。当我从YAML选项中删除任何关于amsmath的提及时,会出现错误,指出无法识别mathjax脚本,例如:

! Package amsmath Error: \bar allowed only in math mode.

1 个答案:

答案 0 :(得分:0)

当我尝试您的示例时,方程式未成功标记。

然后我将输出设置替换为bookdown::pdf_book。可以。

---
title: This title
author: "This guy"
date: "This date"
output:
  bookdown::pdf_book
mainfont: Calibri Light
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

## Introduction

blah blah...

\begin{equation}
  S = X \bar{P}
  (\#eq:signals)
\end{equation}

## Later on

blah blah \@ref(eq:signals)