R Markdown 文件的 YAML Header - 添加带选项的 LaTeX 包会抛出错误(有时)
YAML Header for R Markdown file - Adding LaTeX packages with options throws errors (sometimes)
在 R Markdown Cookbook 之后(以及此处的一些帖子),我正在尝试在 YAML header 中为我的 R Markdown 插入一个 collection 的 LaTeX 包文件。
当我 copy/paste 来自该网站的 header 进入我的文件时:
output:
pdf_document:
extra_dependencies:
caption: ["labelfont={bf}"]
hyperref: ["unicode=true", "breaklinks=true"]
lmodern: null
我收到错误:! LaTeX Error: Option clash for package hyperref.
只有当我在方括号中包含选项时才会发生这种情况 - 如果我删除它们,一切都会按预期进行。
在类似的情况下,我尝试以相同的方式添加 babel
包。当我这样包含它时:
extra_dependencies:
babel: ["hebrew", "english"]
我得到错误:! You can't use
end-group 字符 }' 在 \the.`
之后
我更困惑了(如果可能的话),因为当我包含 threeparttable
包的选项时,一切运行都没有问题。
这是一个要测试的文件:
---
title: "R Notebook"
author:
- Me
date: "Last compiled on `r format(Sys.time(), '%d %B %Y')`"
output:
pdf_document:
highlight: tango
keep_tex: yes
number_sections: yes
toc: yes
fig_caption: yes
extra_dependencies:
cjhebrew: null
babel: ["hebrew", "english"]
---
# Section 1
Test
当我将其编织成 PDF 时,出现错误:
!你不能在 \the 之后使用 `end-group 字符 }'。
\everypar #1->\o@everypar {\rl@everypar #1}
日志文件位于 this repo。
rmarkdown 自动加载 hyperref 包。您无法使用冲突的选项再次加载它。
您可以使用 \hypersetup{...}
更改其设置:
---
output:
pdf_document:
keep_tex: true
header-includes:
- \hypersetup{breaklinks=true}
---
test
但是你确定你需要所有的选项和包吗?
rmakdown已经使用了unicode
选项,所以不需要再添加
rmarkdown也会自动加载lmodern
包,无需再次加载
另一个问题是babel和microtype包的交互,rmarkdown默认加载。使用真正的乳胶,您可以简单地避免加载除厨房水槽之外的每个包裹,并且您永远不会遇到这个问题,或者至少您可以将 nopatch
选项直接添加到 microtype
(如果您真的需要它)...但是 rmarkdown 使这变得不必要地复杂化。
这是一个肮脏的 hack,希望没有其他包也使用这个名称作为选项:
---
title: "R Notebook"
author:
- Me
date: "Last compiled on `r format(Sys.time(), '%d %B %Y')`"
output:
pdf_document:
highlight: tango
keep_tex: yes
number_sections: yes
toc: yes
fig_caption: yes
extra_dependencies:
cjhebrew: null
babel: ["hebrew", "english"]
classoption: "nopatch"
---
# Section 1
Test
在 R Markdown Cookbook 之后(以及此处的一些帖子),我正在尝试在 YAML header 中为我的 R Markdown 插入一个 collection 的 LaTeX 包文件。
当我 copy/paste 来自该网站的 header 进入我的文件时:
output:
pdf_document:
extra_dependencies:
caption: ["labelfont={bf}"]
hyperref: ["unicode=true", "breaklinks=true"]
lmodern: null
我收到错误:! LaTeX Error: Option clash for package hyperref.
只有当我在方括号中包含选项时才会发生这种情况 - 如果我删除它们,一切都会按预期进行。
在类似的情况下,我尝试以相同的方式添加 babel
包。当我这样包含它时:
extra_dependencies:
babel: ["hebrew", "english"]
我得到错误:! You can't use
end-group 字符 }' 在 \the.`
我更困惑了(如果可能的话),因为当我包含 threeparttable
包的选项时,一切运行都没有问题。
这是一个要测试的文件:
---
title: "R Notebook"
author:
- Me
date: "Last compiled on `r format(Sys.time(), '%d %B %Y')`"
output:
pdf_document:
highlight: tango
keep_tex: yes
number_sections: yes
toc: yes
fig_caption: yes
extra_dependencies:
cjhebrew: null
babel: ["hebrew", "english"]
---
# Section 1
Test
当我将其编织成 PDF 时,出现错误:
!你不能在 \the 之后使用 `end-group 字符 }'。 \everypar #1->\o@everypar {\rl@everypar #1}
日志文件位于 this repo。
rmarkdown 自动加载 hyperref 包。您无法使用冲突的选项再次加载它。
您可以使用 \hypersetup{...}
更改其设置:
---
output:
pdf_document:
keep_tex: true
header-includes:
- \hypersetup{breaklinks=true}
---
test
但是你确定你需要所有的选项和包吗?
rmakdown已经使用了
unicode
选项,所以不需要再添加rmarkdown也会自动加载
lmodern
包,无需再次加载
另一个问题是babel和microtype包的交互,rmarkdown默认加载。使用真正的乳胶,您可以简单地避免加载除厨房水槽之外的每个包裹,并且您永远不会遇到这个问题,或者至少您可以将 nopatch
选项直接添加到 microtype
(如果您真的需要它)...但是 rmarkdown 使这变得不必要地复杂化。
这是一个肮脏的 hack,希望没有其他包也使用这个名称作为选项:
---
title: "R Notebook"
author:
- Me
date: "Last compiled on `r format(Sys.time(), '%d %B %Y')`"
output:
pdf_document:
highlight: tango
keep_tex: yes
number_sections: yes
toc: yes
fig_caption: yes
extra_dependencies:
cjhebrew: null
babel: ["hebrew", "english"]
classoption: "nopatch"
---
# Section 1
Test