如果我在子文件夹中有一个 eps 文件并使用 graphicspath 指向它,它似乎无法进行转换,日志显示:
(epstopdf) Output file: </path/to/image/img-eps-converted-to.pdf>
(epstopdf) Command: <repstopdf --outfile=/path/to/image/img-eps-converted-to.pdf /path/to/image/img.eps>
(epstopdf) \includegraphics on input line 72.
runsystem(repstopdf --outfile=/path/to/image/img-eps-converted-to.pdf /path/to/image/img.eps)...executed safely (allowed).
Package epstopdf Info: Result file: </path/to/image/img-eps-converted-to.pdf>.
./chapters/results2.tex:72: Package pdftex.def Error: File `/path/to/image/img-eps-converted-to.pdf' not found.
如果我运行epstopdf --outfile=/path/to/image/img-eps-converted-to.pdf /path/to/image/img.eps
它,它会正常工作。如果我用 运行相同的命令repstopdf
,它会返回:
!!! Error: Output filename '/path/to/image/img-eps-converted-to.pdf' not allowed in restricted mode.
跑步ls -ld /path/to/image
回报:
drwxrwxr-x
文件例如:
测试.tex:
\documentclass[maintest.tex]{subfiles}
\graphicspath{{/path/to/image/}}
\epstopdfsetup{outdir=/path/to/image/}
\begin{document}
\begin{figure}
\includegraphics{img.eps}
\end{figure}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
主测试.tex:
\documentclass{book}
\usepackage{mystyle}
\begin{document}
\subfile{chapters/test}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
mystyle.tex:
\usepackage[utf8x]{inputenc}
\usepackage{graphicx}
\usepackage{subfiles}
\usepackage{epstopdf}
答案1
运行外部程序存在安全风险。因此默认设置是一种妥协。允许使用一些或多或少安全的程序(希望更多“更多”)。这称为受限 shell 转义模式。功能epstopdf
太强大,它可以覆盖任意文件。因此,创建了一个受限版本,它遵循TeX Live 2015repstopdf
的策略texmf.cnf
,限制输出文件的写入:texmf.cnf
% Allow TeX \openin, \openout, or \input on filenames starting with `.'
% (e.g., .rhosts) or outside the current tree (e.g., /etc/passwd)?
% a (any) : any file can be opened.
% r (restricted) : disallow opening "dotfiles".
% p (paranoid) : as `r' and disallow going to parent directories, and
% restrict absolute paths to be under $TEXMFOUTPUT.
openout_any = p
openin_any = a
% Write .log/.dvi/etc. files here, if the current directory is unwritable.
%TEXMFOUTPUT = /tmp
在您的情况下,输出文件名以“/”开头,因此它是一个绝对文件名,并且TEXMFOUTPUT
可能未设置变量。
可能的解决方案/解决方法:
由于文件位于当前工作目录的子文件夹中,请尝试使用相对文件名。
如果检测到受限 shell 逃逸,则由软件包作者(我)提供的TeX Live
epstopdf-sys.cfg
将程序名称设置为repstopdf
。如果检测到完整 shell 逃逸,epstopdf
则使用。因此,您也可以使用 运行您的项目pdflatex -shell-escape
。