如何使 \textls 文本在 PDF 中可复制粘贴?

如何使 \textls 文本在 PDF 中可复制粘贴?

请考虑以下文档:

\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。请注意,单词之间只有一个空格;我无法自动取消选择。如果我使用 Adob​​e 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

相关内容