MacTex 2021 的透明度问题,之前的修复对 XeLaTex 不再有效

MacTex 2021 的透明度问题,之前的修复对 XeLaTex 不再有效

最近修复了 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 特定的行,例如mathspecetc; 将得到:

在此处输入图片描述

所以我尝试将代码复制粘贴到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}

在此处输入图片描述

相关内容