![通过 \def 自定义缩写](https://linux22.com/image/231850/%E9%80%9A%E8%BF%87%20%5Cdef%20%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BC%A9%E5%86%99.png)
我想通过\de
f 命令定义首字母缩略词。我知道有 acronym 包,但输入太多了(\ac{myacronym}
vs. \myacronym
)。
我遇到的问题是\def\myacronym{acronym expanded}
,对于 ,它后面没有空格,所以我只能在标点符号前使用它。对于\def\myacronym{acronym expanded }
,我不能在标点符号前使用它,因为它总是会导致空格。
我的问题是:如何检测首字母缩略词后面是否有标点符号,以便我可以仅在需要时动态生成空格。此外,如果能够检测首字母缩略词前面是否有字符串“。”,那就太好了,这样我就可以动态地将首字母缩略词变为大写。
我想这有点难做到,因为这些参数没有传递给函数,但也许有人有个主意。
答案1
如果我理解正确的话,\xspace
xspace 包中的宏就是这样做的。
用法:
\usepackage{xspace}
...
\newcommand\myacronym{whatever\xspace}
与 plain.tex 类似。
答案2
使用xspace
包,并放在\xspace
定义的末尾。
答案3
您已经获得了 \def 问题的答案。
这只是一个注释。
我过去常常一边写一边格式化缩写,但发现在长文档中这样做非常分散注意力。所以现在我在起草时直接输入缩写(全部大写),然后在最后阶段使用文本编辑器将它们全部更改为我需要的标记。每章大约需要 0.3 秒,让我免于所有额外的输入。
顺便说一句,总的来说,我推荐用于排版缩略词的软件包glossaries
。
答案4
我不知道有什么方法可以回头判断首字母缩略词是否应该大写,但你可以假装大写。如果你定义\Myacronym
为正确的大写版本,那么你可以相应地使用\myacronym
或\Myacronym
。虽然这不是你想要的,但在扫描源文本时它实际上看起来会更好:比较
就这样上床睡觉。 \Myacronym 一大早就起床了。
和
然后就去睡觉了。\myacronym 早上很早就起床了。
在快速扫描中,眼睛无法识别\
并将其视为噪音;因此第二个上的小“m”看起来有点奇怪。