Я пытаюсь использовать XeLaTeX, knitr и tikz - и выдает ошибку ghostscript. Я пробовал много разных подходов, и ситуация следующая:
- XeLaTeX с knitr: работает
- PDFLaTeX с knitr: работает
- PDFLaTeX с knitr и tikz: работает
- 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, что означало, что knit не сработает, поскольку я использую пакеты XeTeX), и это о единственной глобальной переменной или дополнительной настройке, которую я сделал; пути кажутся правильными, например:
$ kpsewhich tikz
/usr/local/texlive/2013/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex
На R я обновил пакеты и установил knitr и tikzDevice (последние версии через install.package).
Любые указатели будут оценены; комбинация XeLaTeX + knitr + tikz не кажется такой уж экзотической: tikz рекомендован в руководстве по работе с графикой knitr и необходим для использования тех же шрифтов, что и основной документ, а XeLaTeX - очень распространенный выбор движка - и мне нужен поддержка Unicode, которую он обеспечивает для использования символов Charis SIL, IPA и т. д.