在contour
包中,宏\con@put
定义为:
\newcommand*\con@put[3]{%
\rlap{\hskip#1\raisebox{#2}[0pt]{#3}}%
}
但是如果将其改为\rlap
,\llap
那么您就不再获得轮廓。例如,尝试
\documentclass{article}
\usepackage{contour}
\makeatletter
\renewcommand*\con@put[3]{%
\llap{\hskip#1\raisebox{#2}[0pt]{#3}}%
}
\makeatother
\begin{document}
\colorbox{black}{This text is not visible
\contour{white}{but this is.}}
\end{document}
您将获得以下内容:
为什么这不起作用? 形成轮廓的特殊效果是什么? 如果决定按照上述示例\rlap
进行操作,需要进行哪些更改才能仍然获得轮廓?\llap
\rlap
答案1
包contour
多次设置文本:首先,将文本设置为指定的颜色几次,水平和垂直略微移动。然后将“内部”部分打印为黑色。结果是指定颜色的“轮廓”。更改背景颜色使其稍微可见:
\documentclass{article}
\usepackage{contour}
\begin{document}
\colorbox{red}{This text is not visible
\contour{white}{but this is.}}
\end{document}
包默认contour
先放16份指定颜色的副本,星型使用32份,或者可以在的可选参数中指定副本数量\contour
。
更改\rlap
为 会使\llap
第一个文本打印在左侧而不是右侧。最后一个黑色文本放在右侧,在黑色背景下不可见。再次将背景更改为红色:
\documentclass{article}
\usepackage{contour}
\makeatletter
\renewcommand*\con@put[3]{%
\llap{\hskip#1\raisebox{#2}[0pt]{#3}}%
}
\makeatother
\begin{document}
\colorbox{red}{This text is not visible
\contour{white}{but this is.}}
\end{document}
contour
只是为了好玩: is 包的替代品pdfrender
,它可以使用矢量字体的 PDF 特征设置轮廓:
\documentclass{article}
\usepackage{pdfrender}
\usepackage{color}
\begin{document}
\colorbox{black}{This text is not visible
\textpdfrender{
TextRenderingMode=Stroke,
StrokeColor=white,
LineWidth=.25pt,
}{but this is.}}
\colorbox{red}{This text is not visible
\textpdfrender{
TextRenderingMode=FillStroke,
FillColor=red,
StrokeColor=white,
LineWidth=.25pt,
}{but this is.}}
\end{document}
如果给出了contour
选项包选项,包也可以使用此 PDF 功能。则不使用。outlines
\con@put
答案2
按照 Heiko 的解释,我最后一个问题的答案是:
\documentclass{article}
\usepackage{contour}
\makeatletter
\renewcommand*\con@put[3]{%
\llap{\raisebox{#2}[0pt]{#3}\hskip-\dimexpr\wd0+#1\relax}%
}
\makeatother
\begin{document}
\setbox0\hbox{but this is.}
\colorbox{black}{This text is not visible
\contour{white}{but this is.}}
\end{document}