使用该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}
我发现不同的答案(来自软件包作者)但是它已经有近八年的历史了,并且提出的解决方案对我来说不起作用:
- 它对
\capitalisewords
我没有任何作用,我必须使用宏的扩展版本。 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/after
并subsectionmark
建议)。在示例代码中,我们将看到渲染section
为我喜欢的缩写而本节呈现为我喜欢的缩写正如所料,后面的段落subsection
也恢复正常。
缺点:PDF 目录中的字符串是我喜欢的缩写对于节和子节来说。对我来说这没问题,因为我不在乎那有关 PDF 目录中正确大写的更多信息。