2014-03-31 30 views
3

我正在嘗試使用XeLaTeX,knitr和tikz - 並且因爲ghostscript錯誤而失敗。我已經嘗試了許多不同的方法,情況如下:knitr xelatex和tikz:最小示例上的Ghostscript錯誤

  1. XeLaTeX與knitr:工作
  2. PDFLaTeX與knitr:工作
  3. PDFLaTeX與knitr和tikz:工作
  4. XeLaTeX與knitr和tikz :失敗

簡單的文檔我發在這裏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 I更新包並安裝knitr和tikzDevice(最新版本,通過install.package)。

任何指針,將不勝感激; XeLaTeX + knitr + tikz組合並不具有特別的奇特性:在knitr圖形手冊中推薦使用tikz,並且需要使用與主文檔相同的字體,而XeLaTeX是引擎的一種非常常見的選擇 - 我需要Unicode支持它提供以使用的Charis SIL,IPA字符等

回答

2

我只是測試的knitr的CRAN版本tikzDevice,其中R 3.0.3和的texlive 2013(基本上相同的環境和你除了我使用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} 

tikzDevice with XeTeX and knitr

+0

非常感謝您的幫助!魔鬼確實在細節上,我必須承認,現在我正在尋找越來越複雜的解決方案;我想我在調試另一個問題時添加了eval = FALSE,然後不僅忘記了這一點,而且對我來說幾乎看不到它。 – fsmunoz