我相对较新的Sweave和R一般而且在我的情节标签中尝试渲染基本数学符号时遇到了问题。我相信问题可能是由Sweave或tikzDevice包引起的,因为如果我使用png或pdf设备,我能够完美地渲染数学符号。
将此代码写入png或pdf设备会产生预期的输出 - >符号
qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) + scale_x_discrete(paste("",">","6k"))
在下面的文件中使用运行Sweave产生的.tex输出文件替换了>符号与¿符号
<<fig=FALSE, echo=FALSE>>=
require(tikzDevice)
require(ggplot2)
require(reshape2)
tikz('sweave-math-symbols.tex', width=5.9, height=2.7)
qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) + scale_x_discrete(paste("",">","6k"))
@
使用Sweave输出文件的LaTeX文档位于
之下\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
%opening
\title{Sweave Math Symbols}
\author{Phiri}
\begin{document}
\maketitle
\begin{abstract}
\end{abstract}
\section{Illustration}
\input{sweave-math-symbols.tex}
\end{document}
这个问题源于何处以及如何解决?
答案 0 :(得分:3)
您的Sweave文件在没有修改的情况下为我工作(在Ubuntu 10.04上),但您可以尝试将>
包装在TeX数学分隔符($$
中,即$>$
);坦率地说,我很惊讶/不明白为什么它可以正常没有在某些情况下的分隔符。
答案 1 :(得分:3)
您需要tikz(..., sanitize = TRUE)
,以便tikzDevice
可以转义特殊字符。有关详细信息,请参阅?tikz
。
正如我一直认为在代码块中手动打开设备一样尴尬,这里有knitr
中的等效块来保持血腥细节:
<<sweave-math-symbols, dev='tikz', sanitize=TRUE, fig.width=5.9, fig.height=2.7>>=
library(ggplot2)
qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) +
scale_x_discrete(paste("",">","6k"))
@
但>
中尚未考虑tikzDevice
,因此您必须在选项中手动指定(\textgreater{}
):
<<setup, include=FALSE>>=
options(
tikzSanitizeCharacters = c("%", "$", "}", "{", "^", "_", "#", "&", "~", ">"),
tikzReplacementCharacters = c("\\%", "\\$", "\\}", "\\{", "\\^{}", "\\_{}", "\\#", "\\&", "\\char`\\~", "\\textgreater{}")
)
@
答案 2 :(得分:0)
您应该在此处使用T1
编码,请参阅TeX.SX上相关问题的以下答案:https://tex.stackexchange.com/a/2376/8057
对于tikzDevice
,只需将\usepackage[T1]{fontenc}
写入用于测量文本和生成最终输出的前导码(选项tikzDocumentDeclaration
和tikzMetricPackages
)。