在 LuaLaTeX 中使用 PSTricks 和 babel/fontspec

在 LuaLaTeX 中使用 PSTricks 和 babel/fontspec

基于示例这里,我尝试看看是否可以让 PSTricks 在 Overleaf 中的 LuaLaTeX 中工作。

这是我的latexmkrc文件

$hash_calc_ignore_pattern{'pdf'} = '^/(CreationDate|ModDate|ID) ';

这是我的main.tex文件,其中注释了 babel 和 fontspec 行。

\def\jobname{main}
\documentclass[12pt]{article}
\usepackage{pst-all}
\usepackage{pst-text}
\usepackage{auto-pst-pdf}
% \usepackage{babel}
% \usepackage{fontspec}
% \babelfont{rm}{CharisSIL}
\begin{document}
\section{Using pstricks with lualatex}
\psset{subgriddiv=0}
\SpecialCoor
\psset{griddots=5,subgriddiv=0,gridlabels=0pt}
\begin{pspicture}(4,4)\psgrid
  \pscircle(2,2){2}
  \qdisk(!2  2 70 sin mul add 2 -2 70 cos mul add){4pt}
  \pscoil[coilarm=3mm,coilwidth=3mm,linecolor=red]{-}%
         (2,0)(!2 2 70 sin mul add 2 -2 70 cos mul add)
  \rput(3.6,1.6){$m$}
  \rput(2.8,1){$k$}
  \psline[linecolor=blue,linewidth=1.5pt]{<-}(0,2)(2,2)
  \rput(1,2.2){$r$}
\end{pspicture}
\end{document}

这在带有 TeXLive 版本 2020 的 LuaLaTex 编译器上运行良好,并且我看到了预期的 pspicture。

问题是当我取消注释这三行时

\usepackage{babel}
\usepackage{fontspec}
\babelfont{rm}{CharisSIL}

编译器遵从(有警告,但没有错误)并生成 PDF,但缺少 pspicture。这些是我看到的警告。

Package auto-pst-pdf Warning: Creation of main-autopp.dvi failed. This warning occured on input line 124.
‪/usr/local/texlive/2020/texmf-dist/tex/latex/auto-pst-pdf/auto-pst-pdf.sty, 124‬
Package auto-pst-pdf Warning: Could not create main-pics.pdf. Auxiliary files not deleted. This warning occured on input line 124.
‪/usr/local/texlive/2020/texmf-dist/tex/latex/auto-pst-pdf/auto-pst-pdf.sty, 124‬
Package pst-pdf Warning: pspicture No. 1 undefined.
‪main.tex‬
Package pst-pdf Warning: File `main-pics.pdf' not found. Use the following commands to create it: ---------------------------------------------------- latex main.tex dvips -o main-pics.ps main.dvi ps2pdf main-pics.ps ---------------------------------------------------- . [1

那么,当我在 LuaLaTex 上用 pstricks 加载 babel/fontspec 时,似乎会发生冲突?有什么解决方法可以让它们一起工作吗?

答案1

请按如下方式使用:

\documentclass[12pt]{article}
\usepackage[pspdf={-dALLOWPSTRANSPARENCY}]{auto-pst-pdf}
 \usepackage{babel}
\usepackage{iftex}
\ifpdf
   \usepackage{fontspec}
   \babelfont{rm}{CharisSIL}
\else
  \usepackage{pst-all}
  \usepackage{pst-text}
\fi
\begin{document}
.... 

您可以尝试:

\usepackage[pspdf={-dALLOWPSTRANSPARENCY}]{auto-pst-pdf-lua}

它适用xeLatex于 PSTricks,但并不适用于所有节点示例。latexmk需要使用

latexmk -pdflua -latexoption=-shell-escape <file>

不知道如何在配置文件中设置latexmk

答案2

步骤会出错dvipsauto-pst-pdf因为它不能使用fontspec。您可以尝试在使用\babelfont期间省略:dvipsifluatex

\usepackage{babel}
\usepackage{ifluatex}
\ifluatex
\babelfont{rm}{CharisSIL}
\fi

尽管这确实意味着您的 PStricks 绘图不会使用与正文相同的字体。

相关内容