![单字母宏](https://linux22.com/image/336441/%E5%8D%95%E5%AD%97%E6%AF%8D%E5%AE%8F.png)
在这个帖子我了解到单字母宏据称对排版过程有重大影响。过去n多年来,我一直在重新定义诸如 '\d'、'\x'、'\z' 和 '\e' 之类的字母,因为相应的数学符号无处不在。我的问题是
- 这些符号的真正用途是什么?为什么我的 PDF 没有损坏,
- 如果重新定义它们实际上不会造成任何干扰,那么重新定义它们会有什么危害呢?
答案1
并不是因为它们是单个字母,特别是因为它们已经在 latex(和纯 tex)中内部使用,大多数重音命令都是单个字符\c
,\r
\v
等等,如果你重新定义这些命令,那么即使它们通过 inputenc 输入为字符,你也会破坏重音字母。
\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
aaa \c{c} bbb \r{a} \v{c}
aaaa ç bbb å č
but...
\def\c{oops}
\def\r{boo}
\def\v{hmm}
aaa \c{c} bbb \r{a} \v{c}
aaaa ç bbb å č
\end{document}
请注意,这特别危险,因为您没有收到任何错误,只是损坏了输出,所以如果您重新定义重音命令但有重音字母(例如在文件中.bib
),那么输出将是无意义的而没有任何警告。
因此,最好使用\newcommand
而不是\def
,如果\newcommand
说命令已经定义,请仔细考虑后再决定重新定义它。