将 pstool 与 LuaLaTeX 结合使用

将 pstool 与 LuaLaTeX 结合使用

我正在尝试将 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或与这些包结合使用,您可以使用该包。除其他外,该包提供了一个条件来检查哪个编译器正在处理文件。psfragpstooliftextex

如果您将polyglossiafontspec放在一个\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],现在所有内容都可见了。

[Bl] 对齐

相关内容