knitr 和 xcolor:不兼容的颜色定义

knitr 和 xcolor:不兼容的颜色定义

我正在使用 knitr 和 RStudio 编译 LaTeX。在我的实际项目中,我想使用 LaTeX 包“xcolor”中的一些选项,但当我包含时\usepackage[options]xcolor,我收到错误消息“第 xx 行上的颜色定义不兼容”,其中“第 xx 行”对应于 knitrout 块。我注意到 knitr 会发送\usepackage[]{color}到 .tex 文件,如果我将其更改为 xcolor,一切都会好起来。但是,我有一个更大的项目。

这是一个最小的示例 .Rnw 文件,我尝试在其中对 url 链接使用命名颜色:

\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage[T1]{fontenc}
\usepackage{url}

\definecolor{Sepia}{named}{Sepia}

% hyperref setup:
\usepackage[colorlinks,pdfpagemode=UseOutlines,%
linkcolor=red,%
urlcolor=Sepia,%
plainpages=false,%
]{hyperref}

\begin{document}

<<setup, cache=FALSE, include=FALSE>>=
library(knitr)
# Global chunk options
opts_chunk$set(keep.source=TRUE, fig.align='center')
@

A quick example. I like \texttt{knitr}: \url{http://yihui.name/knitr/}.

And now for some boring input and output.

<<quickexample>>=
sessionInfo()
x <- rnorm(100, 1, 0)
mean(x)
sd(x)

sessionInfo()
@

\end{document}

我尝试使用\PassOptionsToPackage{dvipsnames}{xcolor}在 xcolor 上的其他帖子中看到的解决方法,但无济于事。

虽然这个最小的例子确实给了我一个带有棕褐色链接的 .pdf,但在更大的项目中,大量不兼容的颜色警告使得我很难找到需要修复的其他 LaTeX 错误。(所以我想我需要更干净的日志文件。)

答案1

@Yihui 的修复来自邮件列表为我解决了这个问题:

knit_hooks$set(document = function(x) {sub('\\usepackage[]{color}', '\\usepackage{xcolor}', x, fixed = TRUE)})

附言:我也提出了一个问题正如@Yihui 所要求的那样。

答案2

我遇到了同样的问题,@Yihui 的修复没有解决它。我找到了解决方案,通过添加以下代码修改修复程序桌子xcolor 包的选项(参见xcolor 文档)并使用此评论纠正后续错误问题

我找到的解决方案如下:

  1. 首先,在前言中,从 kableExtra 包中添加要使用的包。省略彩色包裹。

    \documentclass{article}
    \usepackage{float}
    \usepackage{booktabs}`
    
  2. 接下来,在调用库之前禁用 kableExtra 自动加载包。

    options(kableExtra.latex.load_packages = FALSE 
    library(kableExtra)
    
  3. 最后,使用上面的解决方案,但添加表格选项。

    knit_hooks$set(document = function(x) {sub('\\usepackage[]{color}', `\\usepackage[table]{xcolor}', x, fixed = TRUE)})`
    

相关内容