通过 \def 自定义缩写

通过 \def 自定义缩写

我想通过\def 命令定义首字母缩略词。我知道有 acronym 包,但输入太多了(\ac{myacronym}vs. \myacronym)。

我遇到的问题是\def\myacronym{acronym expanded},对于 ,它后面没有空格,所以我只能在标点符号前使用它。对于\def\myacronym{acronym expanded },我不能在标点符号前使用它,因为它总是会导致空格。

我的问题是:如何检测首字母缩略词后面是否有标点符号,以便我可以仅在需要时动态生成空格。此外,如果能够检测首字母缩略词前面是否有字符串“。”,那就太好了,这样我就可以动态地将首字母缩略词变为大写。

我想这有点难做到,因为这些参数没有传递给函数,但也许有人有个主意。

答案1

如果我理解正确的话,\xspacexspace 包中的宏就是这样做的。

用法:

\usepackage{xspace}
...
\newcommand\myacronym{whatever\xspace}

与 plain.tex 类似。

答案2

使用xspace包,并放在\xspace定义的末尾。

答案3

您已经获得了 \def 问题的答案。

这只是一个注释。

我过去常常一边写一边格式化缩写,但发现在长文档中这样做非常分散注意力。所以现在我在起草时直接输入缩写(全部大写),然后在最后阶段使用文本编辑器将它们全部更改为我需要的标记。每章大约需要 0.3 秒,让我免于所有额外的输入。

顺便说一句,总的来说,我推荐用于排版缩略词的软件包glossaries

答案4

我不知道有什么方法可以回头判断首字母缩略词是否应该大写,但你可以假装大写。如果你定义\Myacronym为正确的大写版本,那么你可以相应地使用\myacronym\Myacronym。虽然这不是你想要的,但在扫描源文本时它实际上看起来会更好:比较

就这样上床睡觉。 \Myacronym 一大早就起床了。

然后就去睡觉了。\myacronym 早上很早就起床了。

在快速扫描中,眼睛无法识别\并将其视为噪音;因此第二个上的小“m”看起来有点奇怪。

相关内容