【问题标题】:knitr with xelatex and tikz: Ghostscript error on minimal example带有 xelatex 和 tikz 的 knitr:最小示例上的 Ghostscript 错误
【发布时间】:2014-03-31 09:37:41
【问题描述】:

我正在尝试使用 XeLaTeX、knitr 和 tikz - 并因 ghostscript 错误而失败。我尝试了很多不同的方法,情况如下:

  1. XeLaTeX 与 knitr:工作
  2. 带有 knitr 的 PDFLaTeX:作品
  3. 带有 knitr 和 tikz 的 PDFLaTeX:作品
  4. 带有 knitr 和 tikz 的 XeLaTeX:失败

我做的简单文档在这里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 之前,这意味着 knit 会因为我使用 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 是一种非常常见的引擎选择 - 我需要它提供了 unicode 支持,以便使用 Charis SIL、IPA 字符等。

【问题讨论】:

    标签: r knitr tikz xelatex


    【解决方案1】:

    我刚刚使用 R 3.0.3 和 TeXLive 2013 测试了 knitrtikzDevice 的 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}
    

    【讨论】:

    • 非常感谢您的帮助!魔鬼确实在细节中,我必须承认,到目前为止,我正在寻找越来越复杂的解决方案。我想我之前在调试另一个问题时添加了 eval=FALSE,然后不仅忘记了它,而且对我来说几乎看不到它。
    猜你喜欢
    • 2018-08-28
    • 2012-06-29
    • 1970-01-01
    • 2017-04-03
    • 2016-06-24
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多