请考虑以下文档:
\documentclass{article}
\usepackage{microtype}
%\usepackage{adobecaslon}
\begin{document}
Some \textls[250]{letterspaced text}.
\textls*[100]{SPEECH}
\end{document}
通过 pdfTeX 运行此文件,然后复制并粘贴“字母间距文本”将得到l e t t e r s p a c e d t e x t
。请注意,单词之间只有一个空格;我无法自动取消选择。如果我使用 Adobe Caslon(通过取消注释注释行),则复制并粘贴“SPEECH”将得到:S P EE C H
。
我发现了大量有关拆分连字符和正确编码文本以在 PDF 中复制和粘贴的信息(事实上,我实际处理的文档在这方面已经设置得很好了!),但我找不到有关此问题的任何信息。更一般地说,我发现accsup
提供替换文本,但这显然有缺点,即它需要 PDF 1.5,这可能意味着它不能用于生成符合 PDF/A-1 的文档(因为 PDF/A-1(2005)使用 PDF v1.4)。我不知道在实践中使用 PDF/A-2 或 -3 是否有问题……
我尝试做出一个定义:
% Make letterspaced text copy and paste correctly from PDF
\usepackage{accsupp,letltxmacro}
\LetLtxMacro{\plaintextls}{\textls}
\DeclareDocumentCommand \textls {s O{100} m}{%
\BeginAccSupp{method=pdfstringdef,ActualText=#3}%
\IfBooleanTF{#1}{\plaintextls*[#2]{#3}}{\plaintextls[#2]{#3}}%
\EndAccSupp{}%
}
效果还不错,但尽管\DeclareDocumentCommand
新命令很强大,但在某些情况下它却不起作用。它似乎存在两类问题:它在命令的某些参数中不起作用,并且当要显示的文本包含宏(例如)时它不起作用\MakeUppercase
。