我正在尝试将 psfrag 与 pstool 和 LuaLaTeX 结合使用,以替换使用 gnuplot 生成的 .eps 图中的标签。我不确定 pstool 是否通常与 LuaLaTeX 配合使用,但是,处理 .eps 会导致编译错误,因为 pstool 似乎调用了 pdfLaTeX:
An error occured processing graphic:
`./fig.eps'
Check the log file for compilation errors: `./fig-pstool.log'
在 fig-pstool.log 中:
Fatal fontspec error: "cannot-use-pdftex"
梅威瑟:
\documentclass{scrbook}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{graphicx}
\usepackage{epstopdf}
\usepackage{psfrag}
\usepackage{pstool}
\begin{document}
\begin{figure}
\psfragfig*{fig}{\psfrag{SL2}[Br]{$\int_{-1}^1 \rho dh$}}
\end{figure}
\end{document}
使用 pdfLaTeX 进行编译或省略 fontspec 就可以了。
示例文件fig.eps
可以在以下位置找到Github。
答案1
据我所知psfrag
/pstool
确实在pdfLaTeX
调用 ps-magic。您的代码无法正常工作的原因是polyglossia
(在内部加载时fontspec
) 和 都fontspec
无法使用pdfLaTeX
。
为了能够继续使用这些包和/LuaLaTeX
或与这些包结合使用,您可以使用该包。除其他外,该包提供了一个条件来检查哪个编译器正在处理文件。psfrag
pstool
iftex
tex
如果您将polyglossia
和fontspec
放在一个\ifLuaTeX
分支中,一切都应该正常工作(除了命令fontspec
中的 s 字体替换psfrag
)。
% !TeX program = lualatex
\documentclass{scrbook}
\usepackage{iftex}
\ifLuaTeX
\usepackage{polyglossia}
\usepackage{fontspec}
\fi
\ifPDFTeX
% Define fonts for pdfLaTeX here
\fi
\usepackage{graphicx}
\usepackage{pstool}
\begin{document}
\begin{figure}
\psfragfig*{fig}{\psfrag{SL2}[Bl]{$\int_{-1}^1 \rho dh$}}
\end{figure}
\end{document}
在这种情况下,运行时LuaLaTeX
您可以省略epstopdf
。此外,无需明确加载,psfrag
因为这已由完成pstool
。
编辑(见评论)
积分符号消失的原因是替换的位置。替换只能发生在 区域内(e)ps
,超出其边界的所有内容都将被截断。要解决此问题,请替换文件中的标签eps
或更改替换的对齐方式。我将上述代码中[<posn>]
的从更改[Br]
为[Bl]
,现在所有内容都可见了。