小型大写字母可以自动用于缩写和首字母缩略词吗?

小型大写字母可以自动用于缩写和首字母缩略词吗?

有没有办法强制 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 样式正则表达式或更简单正则表达式的文本编辑器,您甚至可以在一次运行中替换所有想要的缩写。

相关内容