我一开始使用 PGF/Tikz,对结果一直很满意。它非常适合我的 LaTeX 工作流程,因为我通常使用 pdfLatex,并且我包含在 LaTeX 中的所有图形都是 .pdf 格式。但是,基于 PSTricks 的 pst-optexp 包对我来说是一个绘制光学图表的相当有吸引力的选择。所以我尝试学习一点 PSTricks,但很快我发现透明度(不透明度)在我的 Mac OS X 上不起作用。我使用的 TeX 发行版是 MacTeX-2015。
我正在尝试的代码如下:
\documentclass{standalone}
% Do not forget load pstricks with option 'distiller'
% if you want to get transparency in generated PDF files.
\usepackage[distiller]{pstricks}
\begin{document}
\begin{pspicture}(5,5)
\psset{fillstyle=solid}
\psframe[fillcolor=red](0,1)(3,4)
\psframe[fillcolor=blue,opacity=0.7](2,2)(5,5)
\psframe[fillcolor=green,opacity=0.7](1,0)(4,3)
\pscircle[fillcolor=cyan,opacity=0.5](1.5,3.5){1.25}
\rput(2.5,2.5){\psframebox[fillcolor=magenta,opacity=0.1]{%
% PSTricks do not make transparent text. We use pdfmark ...
\special{ps:gsave [ /ca 0.3 /CA 0.3 /SetTransparency pdfmark}%
\bf\Huge\green Great Box}%
\special{ps:grestore}%
}
\end{pspicture}
\end{document}
根据链接:http://www.bakoma-tex.com/menu/trans.php我应该得到一些透明效果,但我的 .pdf 或 .ps 文件如下所示:
为了编译我使用的 .tex 文件latex-drips-ps2pdf or pstopdf
,我也尝试了,xelatex
但失败了。实际上,即使我直接使用 DocView 检查 .dvi 文件,我也没有看到任何透明度。我搜索了一些邮件列表或这里的一些帖子,但似乎没有一个对我有用。这里有人知道原因或遇到类似问题,能给我一些建议吗?提前谢谢。
编辑:
嗯...不过,我在 pst-optexp 上遇到了一个奇怪的问题。对于 PSTricks 示例,当我在 Emacs 的 DocView 中以及在 Mac 的预览应用程序或 Adobe Reader 中检查生成的 .dvi 或 .pdf 文件时,我得到了一致的结果。然而,对于此堆栈中的光学示例使用 pst-optexp,当我在 DocView 中检查 .dvi 和 .pdf 时,我可以获得与作者相同的结果。但是当在预览中打开文件时,颜色会发生变化。如果在 Adobe Reader 中打开,启动颜色是正确的,但当我放大或缩小时,颜色会开始改变。对这个奇怪的事情有什么想法吗?
以下是不同的图像,上面的图像是在 DocView 中打开的 pdf 文件,而下面的图像来自预览。
代码如下
\documentclass{standalone}
% \usepackage{pstricks}
\usepackage{pst-optexp}
\begin{document}
\begin{pspicture}(-0.2,0)(12.3,8.8)
\newpsobject{laser}{optbox}{position=start, innerlabel}
\psset[optexp]{lens=2, phwidth=0.07, outerheight=0.6}
\pnode(1,7){L}\pnode([offset=-6]L){PSLM}
\pnode([Xnodesep=2,offset=1]L){ASLM}\pnode([offset=-0.5,Xnodesep=9]L){MRef}
\pnode([offset=-7]ASLM){ML}\pnode([Xnodesep=8.5]ML){Cam}
\begin{optexp}
\laser[optboxsize=1.6 0.6](L)(PSLM){Nd:YAG}
\beamsplitter[bssize=0.4, labelangle=-90](L)(L|MRef)(MRef){BS}
\lens[abspos=1.2, lens=0.5 0.5 0.4, n=2.5, labelangle=-10](L)(PSLM){MO}
\pinhole[abspos=1.4, labelangle=10](L)(PSLM){PH}
\lens[abspos=2.3](L)(PSLM){L}
\opttripole[label=0.5](L)(PSLM)(ASLM){\psframe[dimen=outer](-0.5,0)(0.5,0.1)}{PSLM}
\lens[label=0.6 -40](PSLM)(ASLM){L}
\opttripole[label=0.5](PSLM)(ASLM)(ML){\psframe[dimen=outer](-0.5,0)(0.5,0.1)}{ASLM}
\lens[position=0.45, labelangle=180](ASLM)(ML){L}
\optretplate[labelangle=180, position=0.55](ASLM)(ML){$\lambda/2$}
\optplate[labelangle=180, position=0.62](ASLM)(ML){P}
\mirror[labeloffset=0.4](ASLM)(ML)(Cam){M}
\newpsstyle{Beam}{fillcolor=green!80!black, opacity=0.5, fillstyle=solid, linestyle=none, beaminside=false}
\drawwidebeam[beamwidth=0.1, stopinside]{1-5}
\psset{loadbeampoints}
\drawwidebeam[stopinside, savebeampoints=2]{5-7}
\drawwidebeam[loadbeampoints=2, beamdiv=-8.5]{7-8}
\drawwidebeam[loadbeampoints=2, beamdiv=-8.5, beamangle=-4]{7-8}
\drawwidebeam[beamdiv=-8.5, beamangle=-4.5]{8-9}
\drawwidebeam[loadbeampoints=2, beamdiv=-8.5, beamangle=4]{7-8}
\drawwidebeam[beamdiv=-8.5, beamangle=4.5]{8-9}
\lens[abspos=2](ML)(Cam){L}
\lens[abspos=4](ML)(Cam){L}
\crystal[abspos=6, voltage, crystalsize=1 0.6, fillcolor=yellow!90!black, fillstyle=solid](ML)(Cam){SBN}
\beamsplitter[bssize=0.6](MRef)(MRef|Cam)(Cam){BS}
\lens[n=2.4](MRef|Cam)(Cam){L}
\optbox[optboxsize=0.8 0.6, position=end](ML)(Cam){Cam}
\drawwidebeam[savebeampoints=2, stopinside]{9-13}
\drawwidebeam[loadbeampoints=2, beamdiv=-16, beamangle=5, stopinside]{13-14}
\drawwidebeam[beamangle=-5]{14-18}
\drawwidebeam[loadbeampoints=2, beamdiv=-16, beamangle=-5, stopinside]{13-14}
\drawwidebeam[beamangle=5]{14-18}
\lens[lens=0.5 0.5 0.4, n=2](L|MRef)(MRef){MO}
\pinhole[position=0.53, labelangle=180](L|MRef)(MRef){PH}
\lens[position=0.65](L|MRef)(MRef){L}
\optplate[position=0.7](L|MRef)(MRef){S}
\mirror[labeloffset=0.4](L|MRef)(MRef)(MRef|Cam){M}
\addtopsstyle{Beam}{fillcolor=red!70}
\drawwidebeam[loadbeampoints=false, beamwidth=0.1, savebeampoints]{2}{19-21}
\drawwidebeam{21-23}{16-18}
\end{optexp}
\end{pspicture}
\end{document}