gpt4 book ai didi

r - Knit 钩子(Hook)在 tex 文件中的\documentclass 行之前添加代码,以避免选项与 xcolor 冲突

转载 作者:行者123 更新时间:2023-12-03 01:00:24 26 4
gpt4 key购买 nike

我正在尝试使用 rmarkdownknitr 创建 pdf 文档。我需要使用 xcolor tex 包和一些选项(例如:[table][svgnames])。

每当我尝试在 YAML header 中或在 pdf_document 下提到的序言文本文件中使用 -\usepackage[table]{xcolor} 时,includes in_header:,我收到以下错误:

! LaTeX Error: Option clash for package xcolor

选项冲突是因为,knitr 引擎 pdf_document 还直接或通过另一个包间接加载 xcolor 包。我怀疑是后者,因为这个问题最近在我更新了几个 tex 包后突然出现。

一个可能的解决方案是 add \PassOptionsToPackage{table}{xcolor}位于 tex 文件的开头,\documentclass[]{article} 行之前。当我手动执行此操作时,问题就解决了。

将其添加到序言 tex 文件或 YAML header 中,仅将其添加到 tex 文件中的 \documentclass[] 行之后。

如何解决这个问题?

是否有任何knitr hook函数可以在\documentclass[]之前添加\PassOptionsToPackage{}{}行code> tex 文件中的行。?

---
title: "xcolor options clash"
author: "xcolor, options clash"
header-includes:
- \usepackage[table]{xcolor}
output:
pdf_document:
dev: cairo_pdf
fig_caption: no
---

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

## Passage

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

```{r cars}
summary(cars)
```

## Plots

```{r pressure, echo=FALSE}
plot(pressure)
```

最佳答案

将 LaTeX 包 fancyvrb 更新到 v3.0 后,我能够重现此问题。一种解决方案是利用 LaTeX 文档类也将其参数传递给所有加载的包这一事实:

---
title: "xcolor options clash"
author: "xcolor, options clash"
classoption: table
output:
pdf_document:
dev: cairo_pdf
fig_caption: no
keep_tex: yes
---

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

## Passage

Lorem ipsum dolor sit amet, consectetur adipiscing elit ...

```{r cars}
summary(cars)
```

## Plots

```{r pressure, echo=FALSE}
plot(pressure)
```

这会生成一个以

开头的 LaTeX 文件
\documentclass[table]{article}
\usepackage{lmodern}
...

编译这个 LaTeX 文件我得到一个日志文件,其中包含:

(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty
Package: fancyvrb 2018/11/01

Style option: `fancyvrb' v3.0 <2018/11/01> (tvz)
(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)

(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
File: color.cfg 2016/01/02 v1.6 sample color configuration
)
Package xcolor Info: Driver file: pdftex.def on input line 225.

(/usr/share/texlive/texmf-dist/tex/latex/colortbl/colortbl.sty
Package: colortbl 2018/05/02 v1.0c Color table columns (DPC)

我认为 colortbl.sty 被加载这一事实表明 table 选项确实已传递到 xcolor 包。在正常工作流程中,不需要最后这些步骤。

关于r - Knit 钩子(Hook)在 tex 文件中的\documentclass 行之前添加代码,以避免选项与 xcolor 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53389743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com