将透明字符添加到类定义的宏中

将透明字符添加到类定义的宏中

这个问题与上一个问题关于使用生成的 PDF 的机器可读性moderncv

我尝试在 PDF 中添加一些隐藏的描述,因此这些信息在 PDF 上不可见或不可打印,但在复制粘贴文本提取或通过 时可以找到pdftotext。到目前为止,最好的方法是通过透明度,使用transparent包。但是,当我尝试在某些宏中添加透明字符时,会出现错误。

! Undefined control sequence.
\transparent ...n@ =\z@ \def \x {0}\else \edef \x 
                                                  {\strip@pt \dimen@ }\edef ...

接下来是调用宏的行,我试图在其中放置透明字符。

我正在使用pdflatex。这是我的 MWE(由于错误,无法工作):

\documentclass{article}
\usepackage{transparent}

\begin{document}
\section{First example}
Hello \texttransparent{0}{THIS IS FUNNY~}world

\section{Second example}
Hello \makebox[0pt]{\texttransparent{0}{THIS IS FUNNY~}}world

%the next line gives error
\section{Third \makebox[0pt]{\texttransparent{0}{ERROR~}}example}
This one gives error

%the next line gives error
\section{\texorpdfstring{Fourth \makebox[0pt]{\texttransparent{0}{ERROR~}}example}{Fourth example}}
Also error
\end{document}

就像我在开头说的那样,我的问题与moderncv宏和透明度有关。但我希望理解/修复此 MWE 中的错误将有助于我解决文档中的问题。我需要修补section文章中的宏吗?或者以不同的方式调用透明度

一如往常,感谢社区的帮助。

答案1

和在写入文件以创建目录时会被扩展。在脆弱上下文(如节标题)中使用这些宏时,您只需要使用\makebox这些宏:\texttransparent.toc\protect

\documentclass{article}
\usepackage{transparent}
\usepackage{hyperref}% You need to load hyperref to use \texorpdfstring

\begin{document}
\section{First example}
Hello \texttransparent{0}{THIS IS FUNNY~}world

\section{Second example}
Hello \makebox[0pt]{\texttransparent{0}{THIS IS FUNNY~}}world

%the next line gives error
\section{Third \protect\makebox[0pt]{\protect\texttransparent{0}{ERROR~}}example}
This one gives error

%the next line gives error
\section{\texorpdfstring{Fourth \protect\makebox[0pt]{\protect\texttransparent{0}{ERROR~}}example}{Fourth example}}
Also error
\end{document}

相关内容