![在 LuaLaTeX 中使用 PSTricks 和 babel/fontspec](https://linux22.com/image/438374/%E5%9C%A8%20LuaLaTeX%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20PSTricks%20%E5%92%8C%20babel%2Ffontspec.png)
基于示例这里,我尝试看看是否可以让 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
步骤会出错dvips
,auto-pst-pdf
因为它不能使用fontspec
。您可以尝试在使用\babelfont
期间省略:dvips
ifluatex
\usepackage{babel}
\usepackage{ifluatex}
\ifluatex
\babelfont{rm}{CharisSIL}
\fi
尽管这确实意味着您的 PStricks 绘图不会使用与正文相同的字体。