命令/宏名称不能包含数字和符号

命令/宏名称不能包含数字和符号

我想将图片放入表格中,我的想法是定义新的命令如下>

  • \newcommand{\EJ471}{\includegraphics[scale=0.150]{EJ_471.jpg}}

但是编译器会报错。如果我使用命令名,例如\EJa,一切都正常。我读过类似的问题

但我仍然不明白为什么它不起作用。

答案1

答案2

根据 TeX 语法规则,以\(反斜杠)字符开头的宏的“名称”必须

  • 包括一个单个非字母字符。一些示例:(\,插入细空格)、\%%字符)、\\(插入换行符)、\[(打开显示数学)和\)(关闭内联数学)。

或者

  • 包含仅有的大写和小写字母字符:a-zA-Z。没有数字,也没有其他属于非字母类别的字符。(嗯,有将“字母类别”状态分配给非字母字符的某些方法,但这是另一个讨论的主题。)

因此,\EJ471不是一个有效的宏名。

但是,您可以定义一个更通用的宏:

\newcommand{\EJ}[1]{\includegraphics[scale=0.150]{EJ_#1.jpg}}

并将其用作\EJ{471}传递EJ_471.jpg\includegraphics命令。如果您需要处理更多以 开头EJ_(当然也以 结尾.jpg)的 jpg 文件,则只需使用适当的参数继续调用此宏即可。

答案3

有多种方法这里

结合其中的一些,我发现这对于我所处的类似情况来说是最好的。

\newcommand{\EJ}[1]{\csname EJ#1\endcsname}
\expandafter\newcommand\csname EJ471\endcsname{\includegraphics[scale=0.150]{EJ_471.jpg}}
\expandafter\newcommand\csname EJ8table\endcsname{\begin{tabular}{c|c} E & J \end{tabular}}

\EJ{471}
\EJ{8table}

这与 Mico 的回答具有相同的精神,但更加灵活。

相关内容