最近修复了 pstricks+ Mactex 2021 上的透明度问题,该问题实际上与 Ghostscript ver> 9.53 有关。它使用 dvipdfmx-unsafe.cfg 上的某些行修改了 /usr/local/texlive/2021/texmf-dist/dvipdfmx
按照 Herbert Schulz 的建议进行了修复: 自 Mac M1 上的 MacTeX 2021 升级以来,PStricks 不再编译
几周前为我工作,现在仍然为latexTRmk。
但乳胶漆引擎(在 TexShop 中)没有给出预期的结果。
我有以下简单的代码
%%%%%%%%%%%%%%%%% fix PSTricks' transparency setup %%%%%%%%%%%%%%%%%
\begin{filecontents}[overwrite,noheader]{pst-fixtransparency.pro}
/.setfillconstantalpha.bak /.setfillconstantalpha load def
/.setstrokeconstantalpha.bak /.setstrokeconstantalpha load def
/.setalphaisshape.bak /.setalphaisshape load def
\end{filecontents}
\begin{filecontents}[overwrite,noheader]{pst-fixtransparency.sty}
\AtBeginDvi{
\special{header=pst-fixtransparency.pro}
\special{!
/.setfillconstantalpha /.setfillconstantalpha.bak load def
/.setstrokeconstantalpha /.setstrokeconstantalpha.bak load def
/.setalphaisshape /.setalphaisshape.bak load def
/.setopacityalpha {
dup .setfillconstantalpha .setstrokeconstantalpha} def
/.setshapealpha {
dup .setfillconstantalpha .setstrokeconstantalpha
true .setalphaisshape} def
}
}
\end{filecontents}
\RequirePackage{pst-fixtransparency}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{extarticle}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[dvipsnames]{xcolor}
\usepackage{pst-solides3d,pst-3dplot}
\usepackage{mathspec}
\setmainfont{Times New Roman}
%\setmathsfont(Digits,Latin,Greek)
% [Numbers={Lining,Proportional}]{Times New Roman}
\definecolor{ath}{RGB}{247,246,233}
\begin{document}
\pagecolor{ath}
We will plot the surface
$$
\mathbf{r}(u, v)=\langle(2+\sin v) \cos u,(2+\sin v) \sin u, u+\cos v\rangle
$$
\begin{center}
\psset{unit=0.5}
\begin{pspicture}*(-5,-4)(6,14)
\psset{viewpoint=15 10 15, Decran=20}
\defFunction[algebraic]{hega}(u,v){(2+sin(v))*cos(u)} {(2+sin(v))*sin(u)} {u+cos(v)}
\psSolid[object=surfaceparametree , base=0 12.6 0 8, color1=Red!50,
color2=Green!20, inouthue=(color1) (color2), function=hega, linewidth=0.3\pslinewidth, ngrid=40 0.3]
\axesIIID[linewidth=0.5pt , arrowsize=5pt, arrowinset=0, labelsep=10pt](3,2,9)(6,5,13)
\psPoint(1,3,6.3){I}
\uput[r](I){$u$ konstan}
\psline[linearc=4, linewidth=0.5pt]{->}(4,4)(3,5)(2.8,6.46)
\psline[linearc=4, linewidth=0.5pt]{->}(4,4)(3,5)(2.28,5.4)
\psPoint(0,0,8.8){L}
\uput[l](L){$v$ konstan}
\psline[linearc=0.4, linewidth=0.5pt]{->}(-2,7.1)(-2,4.6)
\psline[linearc=0.4, linewidth=0.5pt]{->}(-2,7.1)(-1.2,4.2)
\end{pspicture}
\end{center}
\end{document}
使用结果的屏幕截图乳胶漆 是
虽然使用预期结果LaTexTRmk,注释掉 XeLatex 特定的行,例如mathspec
etc; 将得到:
所以我尝试将代码复制粘贴到overleaf.com并在那里使用 XeLatex(菜单显示正在使用 TexLive 2021),结果如上所示(当然,我还上传了所有的 Times 字体)。
使用纺织机械制造商和乳胶漆TexShop 中的引擎将产生如下相同的结果:
使用 TexMaker 并选择查看 PS 文件(而不是 PDF)时,将调用生成 PDF 文件预览应用并且结果不一致(在某些时候它取得了良好的结果,否则错误filename.ps无法转换为pdf)
使用命令行
xelatex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" -no-pdf filename.tex
也不起作用。
我还检查了我的所有包裹是否都是最新的。
该问题出现在所有使用 pstricks 的文档中,生成的图片有时是正确的,但它总是将背景更改为白色(不透明)
使用 tikz 制作的图片很好。
有办法解决这个问题吗?我猜这只会影响 OS X 用户。
谢谢。
答案1
使用 来运行它更容易lualatex
,当然,这需要一些时间进行计算,但它不使用 GhostScript 而是直接创建 pdf:
\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{}
\documentclass{extarticle}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage[dvipsnames]{xcolor}
\usepackage{pst-solides3d,pst-3dplot}
\usepackage{unicode-math}
\setmainfont{Times New Roman}
\definecolor{ath}{RGB}{247,246,233}
\begin{document}
\pagecolor{ath}
We will plot the surface
\[
\mathbf{r}(u, v)=\langle(2+\sin v) \cos u,(2+\sin v) \sin u, u+\cos v\rangle
\]
\begin{center}
\psset{unit=0.5}
\begin{pspicture}*(-5,-4)(6,14)
\psset{viewpoint=15 10 15, Decran=20}
\defFunction[algebraic]{hega}(u,v){(2+sin(v))*cos(u)} {(2+sin(v))*sin(u)} {u+cos(v)}
\psSolid[object=surfaceparametree , base=0 12.6 0 8, color1=Red!50,
color2=Green!20, inouthue=(color1) (color2), function=hega, linewidth=0.3\pslinewidth,
ngrid=40 0.3]
\axesIIID[linewidth=0.5pt , arrowsize=5pt, arrowinset=0, labelsep=10pt](3,2,9)(6,5,13)
\psPoint(1,3,6.3){I}
\uput[r](I){$u$ konstan}
\psline[linearc=4, linewidth=0.5pt]{->}(4,4)(3,5)(2.8,6.46)
\psline[linearc=4, linewidth=0.5pt]{->}(4,4)(3,5)(2.28,5.4)
\psPoint(0,0,8.8){L}
\uput[l](L){$v$ konstan}
\psline[linearc=0.4, linewidth=0.5pt]{->}(-2,7.1)(-2,4.6)
\psline[linearc=0.4, linewidth=0.5pt]{->}(-2,7.1)(-1.2,4.2)
\end{pspicture}
\end{center}
\end{document}