如何在 TextMate 中将 PSTricks 与 XeLaTeX 结合使用?

如何在 TextMate 中将 PSTricks 与 XeLaTeX 结合使用?

我正在尝试编译使用“pstricks”和“fontspec”包的以下文件,使用 TextMate 中的 XeLaTeX,点击软件包 → LaTeX → 排版与查看 (PDF)。在我的偏好设置(Bundles → LaTeX → Preferences...)中,我已将其设置xelatex为默认排版引擎,但看起来 TextMate 仍然使用 pdfLaTeX。

\documentclass{article}
\usepackage{fontspec}
\usepackage{pstricks}
\begin{document}
    \psline(0, 0)(1, 1)
\end{document}

这会导致以下错误消息:

Package: fontspec 2016/02/01 v2.5a Font selection for XeLaTeX and LuaLaTeX

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
/usr/local/texlive/2016basic/texmf-dist/tex/latex/fontspec/fontspec.sty:28: Fat
al fontspec error: "cannot-use-pdftex"
! 
! The fontspec package requires either XeTeX or LuaTeX.
! 
! You must change your typesetting engine to, e.g., "xelatex" or
! "lualatex"instead of plain "latex" or "pdflatex".
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

l.28 \msg_fatal:nn {fontspec} {cannot-use-pdftex}

|'''''''''''''''''''''''''''''''''''''''''''''''
| This is a fatal error: LaTeX will abort.
|...............................................

答案1

每当 TextMate 检测到您正在导入 PSTricks 包时,它都会自动切换回默认pdflatex命令来编译您的 LaTeX 文件——无论您在“首选项”中如何设置“默认引擎”。这是因为 PSTricks 与 XeLaTeX 不完全兼容;因此 TextMate 认为这表明您宁愿使用 pdfLaTeX。但是 pdfLaTeX 不能与 Fontspec 一起使用,这会破坏您的文档。

解决此问题的简单方法是根据每个文档设置首选的 LaTeX 编译命令。为此,请转到软件包 → LaTeX → 文件偏好设置 → 设置排版引擎并选择赛莱特。这样,即使您导入 PSTricks 包,TextMate 也会使用 XeLaTeX 命令。

如果您不想对每个文档都执行此操作,那么唯一的其他解决方案就是编辑 TextMate-LaTeX-bundle 的源代码。1要执行此操作,请访问捆绑包 → 编辑捆绑包……,在左侧窗格中选择 LaTeX-bundle,然后导航至支持 → 垃圾桶. 右击文件文本编辑器并点击在 Finder 中显示“texmate.py”。然后,在 Finder 中,打开文件“texmate.py”,转到第 658 行并从列表中删除项目“pstricks”,使其显示为:

latex_indicators = {'xyling', 'pst-asr', 'OTtablx'}

保存文件后,导入 PSTricks 包将不再导致 TextMate 切换到 pdfLaTeX 编译器。


您可能仍会收到以下错误:

xdvipdfmx:fatal: File ended prematurely
Output file removed.
Error 256 (driver return code) generating output;
file test.pdf may not be valid.

导致我出现此错误的原因是该命令ps2pdf不在PATHTextMate 中。转到TextMate → 偏好设置... → 变量。确保变量PATH旁边有一个复选标记。如果不存在,请打开终端,输入which ps2pdf,然后添加一个名为PATHTextMate 的变量,其中包含应在终端中显示的路径,例如$PATH:/opt/local/bin:/usr/local/bin:/usr/texbin

相关内容