使用 accsupp 自动创建替代大写文本

使用 accsupp 自动创建替代大写文本

这是从 PDF 复制文本时是否可以提供替代文本?

我本质上是想重新定义textsc/scshape以便accsupp自动使用,即复制的文本自动大写。我一直在尝试使用这个textcase包,但没有成功:

\documentclass{article}
\usepackage{accsupp}

\RequirePackage{textcase}

\begin{document}

\newcommand{\newsc}[1]{
    {\scshape{%
    \BeginAccSupp{method=escape,ActualText=#1}%
    \MakeTextLowercase{#1}%
    \EndAccSupp{}}%
    }}

\newsc{This could be} the beginning of a chapter

But there is a \newsc{mysterious} whitespace

\end{document}

我想要的是将其包装ActualText=#1成类似的东西ActualText=\MakeTextUppercase{#1},但这不起作用,因为我得到了Generic error: undefined control sequence

还有几个问题:

  • \newsc命令中的文本换行前有一个空格

  • 我不确定如何重新定义小型大写字母命令以包含新功能(因此我在 MWE 中创建了一个新命令)

  • 在引用的答案中,Ulrike 提到了类似\expandafter\PDFreplace\expandafter{\USA}让每个字符都可以选择文本的方法。这对于我的示例如何实现?

编辑:我刚刚意识到,当尝试在标题中结合使用 accsupp 与 hyperref 时,这种方法完全失效。错误是:

! Extra \else.
\KV@split ...errx {\@tempa \space undefined}\else 
                                                  \ifx \@empty #3\@empty \KV...
l.27 ...This could be} the beginning of a chapter}

答案1

定义后紧接着有一个尾随空格。请按如下方式使用:

\documentclass{article}
\usepackage{accsupp}
\usepackage{textcase}
\newcommand\newsc[1]{%
    {\scshape%
    \BeginAccSupp{method=escape,ActualText=#1}%
    \MakeTextLowercase{#1}%
    \EndAccSupp{}}}
\let\textsc\newsc

\begin{document}    
\newsc{This could be} the beginning of a chapter

But there is a \textsc{Mysterious} whitespace

\end{document}

在此处输入图片描述

相关内容