章节标题中的首字母缩略词的标题大小写与超链接一起使用

章节标题中的首字母缩略词的标题大小写与超链接一起使用

使用该acro包,我想使用首字母缩略词的长版本作为章节标题。但是,当我将它们设置为标题大小写时,首字母缩略词也应为标题大小写,而在普通文本中则为小写。使用这种方法[uppercase/cmd=\ecapitalisewords]显示文本效果很好,但 hyperref 会抱怨,并且 pdf 中生成的书签名称为uppercase/cmd=]MFA

\documentclass{article}
\usepackage{acro,mwe,mfirstuc,hyperref}

\DeclareAcronym{MFA}{short=MFA, long=my fancy acronym}

\begin{document}

\section{\Aclp*{MFA}}

To title case the section title I want to use \Aclp*[uppercase/cmd=\ecapitalisewords]{MFA}.
However, it results in a hyperref warning:

\begin{verbatim}
Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref)                removing `\ecapitalisewords' on input line 18.
\end{verbatim}

\section{\Aclp*[uppercase/cmd=\ecapitalisewords]{MFA}} % <- This is line 18

\end{document}

我发现不同的答案(来自软件包作者)但是它已经有近八年的历史了,并且提出的解决方案对我来说不起作用:

  1. 它对\capitalisewords我没有任何作用,我必须使用宏的扩展版本。
  2. list-caps似乎要求将所有单词单独大写的选项acro不再存在,并且在文档中搜索类似内容不会给出任何结果。

经过一些尝试后,我发现了一些对我有用的东西,但并不是 100% 我想要的结果:

\documentclass{article}
\usepackage{acro,mwe,mfirstuc,hyperref}

\DeclareAcronym{MFA}{short=MFA, long=my fancy acronym}
\AddToHook{cmd/subsection/before}{\acsetup{uppercase/cmd=\ecapitalisewords}}
\AddToHook{cmd/subsectionmark/after}{\acsetup{uppercase/first}}

\begin{document}

\section{\Aclp*{MFA}}
\Aclp*{MFA}

\subsection{\Aclp*{MFA}}
\Aclp*{MFA}

\end{document}

我在这里所做的是,在创建之前自动将设置uppercase/cmd为所需的命令\section,并在完成后将其设置回标准值(看到这篇文章告诉我们为什么我们不能使用钩子cmd/subsection/aftersubsectionmark建议)。在示例代码中,我们将看到渲染section我喜欢的缩写而本节呈现为我喜欢的缩写正如所料,后面的段落subsection也恢复正常。

缺点:PDF 目录中的字符串是我喜欢的缩写对于节和子节来说。对我来说这没问题,因为我不在乎有关 PDF 目录中正确大写的更多信息。

相关内容