我想将图片放入表格中,我的想法是定义新的命令如下>
\newcommand{\EJ471}{\includegraphics[scale=0.150]{EJ_471.jpg}}
但是编译器会报错。如果我使用命令名,例如\EJa
,一切都正常。我读过类似的问题
但我仍然不明白为什么它不起作用。
答案1
答案2
根据 TeX 语法规则,以\
(反斜杠)字符开头的宏的“名称”必须
- 包括一个单个非字母字符。一些示例:(
\,
插入细空格)、\%
(%
字符)、\\
(插入换行符)、\[
(打开显示数学)和\)
(关闭内联数学)。
或者
- 包含仅有的大写和小写字母字符:
a-z
和A-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 的回答具有相同的精神,但更加灵活。