我本质上是想重新定义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}