knitr 生成的图形标题中的特殊字符

knitr 生成的图形标题中的特殊字符

我想通过knitr生成的字幕传递特殊字符和格式。

我试图理解两件事:

1)是否可以LaTeX通过标题传递语法?

2)如何定义字幕/子字幕字符串的编码?

请考虑以下 MWE

\documentclass{article}
\usepackage{subfig}
\begin{document}

<<fig-sub, fig.cap='Three \textit{plots}', fig.subcap=c('Erdős–Rényi', 'Barabási-Albert'), out.width='.30\\linewidth',dev='tikz',sanitize=TRUE>>=
library(ggplot2)

x<-1:10
y<-rnorm(10)

ggplot(data.frame(x,y), aes(x,y)) + geom_line()
ggplot(data.frame(y,x), aes(y,x)) + geom_line()
@

\end{document}

答案1

答案(我发现)非常简单。knitr/R如果正确转义(反斜杠),将传递给 TeX 特殊字符。可能还需要使用双引号" "而不是单引号' '

\documentclass{article}
\usepackage{subfig}
\begin{document}

<<fig-sub, fig.cap="Three \\textit{plots}", fig.subcap=c("Erd\\H{o}s-R\\'enyi", "Barab\\'asi-Albert"), out.width='.30\\linewidth',dev='tikz',sanitize=TRUE>>=
library(ggplot2)

x<-1:10
y<-rnorm(10)

ggplot(data.frame(x,y), aes(x,y)) + geom_line()
ggplot(data.frame(y,x), aes(y,x)) + geom_line()
@

\end{document}

答案2

如果您有大量包含这些特殊字符的标题,那么更好的另一个选择是将该行添加\usepackage[utf8x]{inputenc} 到文档的序言中,并将该行添加pdf.options(encoding = "CP1250")到块中。

因此更改后的 MWE 将如下所示:

\documentclass{article}
\usepackage{subfig}
\usepackage[utf8x]{inputenc} 
\begin{document}


<<fig-sub, fig.cap='Three \textit{plots}', fig.subcap=c('Erdős–Rényi', 'Barabási-Albert'), out.width='.30\\linewidth',sanitize=TRUE>>=
library(ggplot2)
pdf.options(encoding = "CP1250")

x<-1:10
y<-rnorm(10)

ggplot(data.frame(x,y), aes(x,y)) + geom_line()
ggplot(data.frame(y,x), aes(y,x)) + geom_line()
@

\end{document}

注意:由于出现错误,dev='tikz'所以我跳过了它。我希望你的问题与此无关,并且无论如何它都会正常工作。

相关内容