如何关闭操纵特殊效果?

如何关闭操纵特殊效果?

这个答案,我建议使用 morbusg 的解决方案使用 XeLaTeX 生成带轮廓的文本。它的作用正如其名称所示:

\documentclass{article}
\begin{document}
% ref https://tex.stackexchange.com/a/108348/ by morbusg
\special{pdf:bcolor [.8 0 .8] [0]} % two arrays: first defines fill, second the stroke.
% If array has one entry, it's meaning grayscale, if three: RGB, if four: CMYK.
\special{pdf:literal direct .4 w 2 Tr} % .4 here is the stroke width
Here is some text.
\end{document}

轮廓文字

这很棒。

然而现在Artefact2 不仅想打开效果,还想关闭它并且,尽管我可以想出一些可行的方法,但我不确定哪种方法是正确的。

如何关闭该效果?

\special{pdf:bcolor [0] [0]} 
\special{pdf:literal direct 0 w 0 Tr}

有效。将第一行替换为

\special{pdf:bcolor 0}

我认为这可能会更好,基于我尝试解释http://project.ktug.org/dvipdfmx/doc/tug2005.pdf。但说实话,我不知道。

如果有用于检查此类事物的标准参考或手册,我将特别感谢指点。

另外,我不知道应该如何标记它......

答案1

对于颜色,由于您一开始就bcolor最好只是弹出堆栈\special{pdf:ecolor} 进行变换,您已经使用了文字 pdf,这让事情变得更有趣,您可以使用 q 和 Q 来保存和恢复图形状态,但这会丢失当前位置,除非您在同一点执行它们,如果您限制在水平框中,这很容易,如果您需要考虑换行,则更难

还要注意%

在此处输入图片描述

\documentclass{article}
\begin{document}
% ref http://tex.stackexchange.com/a/108348/ by morbusg
\leavevmode
\special{pdf:literal q}\special{pdf:bcolor [.8 0 .8] [0]}% two arrays: first defines fill, second the stroke.
% If array has one entry, it's meaning grayscale, if three: RGB, if four: CMYK.
\special{pdf:literal direct .4 w 2 Tr}% .4 here is the stroke width
\setbox0\hbox{Here is some text.}%
\usebox0\special{pdf:ecolor}\special{pdf:literal Q}\kern\wd0{}\
more text
\end{document}

答案2

如果你看幻灯片 11,恢复最后保存的颜色的命令是:

\special{pdf:ecolor}

这是我的解决方案:

% StrokeColor, FillColor, StrokeWidth, Text
\newcommand*{\fillstroke}[4]{%
% ref: http://tex.stackexchange.com/a/225639/125447
% Tr: rendering mode (0=Fill, 1=Stroke, 2=FillThenStroke)
% w: stroke width
\special{pdf:bcolor #1 #2}%
\special{pdf:literal direct #3 w 2 Tr}%
#4%
% ref: http://project.ktug.org/dvipdfmx/doc/tug2005.pdf
\special{pdf:ecolor}%
\special{pdf:literal direct 0 Tr}%
}

相关内容