单字母宏

单字母宏

这个帖子我了解到单字母宏据称对排版过程有重大影响。过去n多年来,我一直在重新定义诸如 '\d'、'\x'、'\z' 和 '\e' 之类的字母,因为相应的数学符号无处不在。我的问题是

  1. 这些符号的真正用途是什么?为什么我的 PDF 没有损坏,
  2. 如果重新定义它们实际上不会造成任何干扰,那么重新定义它们会有什么危害呢?

答案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说命令已经定义,请仔细考虑后再决定重新定义它。

相关内容