我正在尝试使用XeLaTeX,knitr和tikz-并出现ghostscript错误。我尝试了许多不同的方法,情况如下:
我制作的简单文档在这里http://paste.lisp.org/+31GJ,主要部分是这样的:
<<xetex-tikz, eval=FALSE, echo=FALSE>>=
options(tikzDefaultEngine='xetex')
@
A plot:
<<test, echo=FALSE,dev='tikz'>>=
plot(10,10)
@
错误消息也在注释中,但我将其粘贴在此处:
GPL Ghostscript 9.14: Unrecoverable error, exit code 1
** WARNING ** Filtering file via command -->rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='/tmp/xdvipdfmx.45a08580e905757a9f5e6fc456cb9f8b' '/dev/null' -c quit<-- failed.
** WARNING ** Image format conversion for "/dev/null" failed...
** WARNING ** Image width=0.0!
** WARNING ** Image height=0.0!
** ERROR ** pdf_ref_obj(): passed invalid object.
为了避免旧软件包的任何问题(例如,RHEL5具有texlive的旧版本),我在本地安装了以下软件包:
TeXlive 2013:
$ type xelatex
xelatex is hashed (/usr/local/texlive/2013/bin/x86_64-linux/xelatex
$ xelatex -version
XeTeX 3.1415926-2.5-0.9999.3-2013060708 (TeX Live 2013)
kpathsea version 6.1.1
GNU R
$ type R
R is /usr/local/bin/R
$ R --version
R version 3.0.3 (2014-03-06) -- "Warm Puppy"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
Ghostscript
$ type ghostscript
ghostscript is /usr/local/bin/ghostscript
$ ghostscript --version
9.14
我将R_LATEXCMD设置为xelatex(在使用pdflatex之前,这意味着自从我使用XeTeX软件包以来,编织将失败),这是我所做的唯一全局变量或其他设置。路径似乎是正确的,例如:
$ kpsewhich tikz
/usr/local/texlive/2013/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex
在R上,我更新了软件包并安装了knitr和tikzDevice(最新版本,通过install.package)。
任何指针将不胜感激; XeLaTeX + knitr + tikz的组合并不特别奇特:knitr图形手册中建议使用tikz,并且需要使用与主文档相同的字体,而XeLaTeX是引擎的非常常见的选择-我需要为了使用Charis SIL,IPA字符等,它提供了unicode支持。
最佳答案
我刚刚使用R 3.0.3和TeXLive 2013测试了 knitr 和 tikzDevice 的CRAN版本(与我的环境基本相同,除了我使用Ubuntu)。这似乎是一个非常简单的问题:您在第一个块上使用了eval=FALSE
,因此未评估该块,并且基本上忽略了options(tikzDefaultEngine = 'xetex')
。将eval=FALSE
更改为TRUE
后,一切正常(实际上,这是默认值,因此您可以省去它)。
\documentclass{article}
\usepackage{xltxtra} %used this to avoid pdflatex being used
\usepackage{tikz}
%\setmainfont{Charis SIL} %depends on xlxtra
\begin{document}
\title{Testing}
\maketitle
<<xetex-tikz, eval=TRUE, include=FALSE>>=
options(tikzDefaultEngine='xetex')
@
A plot:
<<test, echo=FALSE, dev='tikz'>>=
plot(10,10)
@
\end{document}