有没有办法强制 LaTeX 自动使用小型大写字母来表示缩写和首字母缩略词(或者更具体地说,两个或更多大写字母的字符串)?
答案1
我认为实现这样的宏很困难。但是,我们可以借助一些预处理来实现。编写脚本来执行此操作很容易。例如,一行脚本sed
:
sed -e "s/\(\s\)\([A-Z]\+\)\([^A-Z]\)/\1\\\textsc{\2}\3/g" foo.tex
您可以按照自己的意愿进行修改。
在 Windows 平台上sed
必须手动安装,从操作系统或 MingW。只需编写一个批处理文件并配置编辑器来调用它。
答案2
您可能想看一下这个glossaries
包裹。
\usepackage[acronym,smallcaps]{glossaries}
\newacronym{WHO}{WHO}{World Health Organisation}
The \gls{WHO} recommends...
答案3
如果您不需要该glossaries
软件包的所有功能,则可以改用该acronym
软件包。主要思想保持不变。如果您希望 LaTeX 对特定类型的元素执行某些操作,则必须为它们创建标记。因此,如果您想在 LaTeX 本身内执行此操作(在我看来这是更好的选择),那么您每次使用相关元素时都需要明确标记它们。(这还有一个好处,如果您后来决定它们不应该使用小写字母,一次更改就会改变它们。)这是使用该acronym
软件包解决您的问题的方法。
\documentclass{article}
\usepackage{acronym}
\renewcommand*{\acsfont}[1]{\textsc{\MakeLowercase{#1}}}
\newacro{AM}{}
\newacro{PM}{}
\acused{AM}\acused{PM}
\begin{document}
At 3:00~\ac{PM} John went out. He didn't return until 2:00~\ac{AM}.
\end{document}
(请注意,由于textsc{AM}
与无法区分AM
,我们需要将现有的大写缩写词更改为小写,然后才能将其变为小型大写。这就是\acsfont
宏正在执行的操作。)
答案4
我自己也在考虑这个问题,因为我很快就会需要它。
对于你来说,在文本编辑器中使用 find x/replace 函数 (\textsc{x}) 执行此操作不是更容易吗?小说中使用的缩写列表不会很大。
如果您使用支持 Perl 样式正则表达式或更简单正则表达式的文本编辑器,您甚至可以在一次运行中替换所有想要的缩写。