我正在尝试 - 但目前还没有成功 - 开发一些代码,允许我调用一个命令(打印一个特定的表),其中一些字段“预先填充”,因为它们在文本的很多地方用作命令。
举个例子,
\documentclass[a4paper, 11pt, oneside]{book}
\newcommand{\MaterialNamei}{Acrylonitrile butadiene styrene}
\newcommand{\MaterialCodei}{ABS}
\newcommand{\MaterialTempMini}{-20}
\newcommand{\MaterialTempMaxi}{80}
\newcommand{\MaterialNameii}{Thermoplastic Polyurethane}
\newcommand{\MaterialCodeii}{TPU}
\newcommand{\MaterialTempMinii}{-50}
\newcommand{\MaterialTempMaxii}{80}
\newcommand{\MaterialNameiii}{Polylactic acid}
\newcommand{\MaterialCodeiii}{PLA}
\newcommand{\MaterialTempMiniii}{-10}
\newcommand{\MaterialTempMaxiii}{60}
\newcounter{material}
\newcommand{\matetable}[1] {
\stepcounter{material}
I can get \romannumeral\thematerial
and obviously \MaterialNamei
% but here I have an error ...
\begin{tabular}{| p{2cm} | p{7cm} | }
\hline
Material Full Name & \csname \MaterialName\romannumeral\thematerial
\endcsname \\
\hline
Comments & #1 \\ \hline
\end{tabular}
}
\begin{document}
\matetable{blah}
\matetable{bluh}
\end{document}
非常感谢你的帮助!
答案1
在您的代码中\csname \MaterialName\romannumeral\thematerial\endcsname
,这样编写\MaterialName
的 被评估,并且 将其替换为 的宏名\csname
。您希望行为使用\MaterialNamei
应与 一起使用的宏调用\csname MaterailName\romannumeral\thematerial\endcsname
。因此:
\documentclass[a4paper, 11pt, oneside]{book}
\newcommand{\MaterialNamei}{Acrylonitrile butadiene styrene}
\newcommand{\MaterialCodei}{ABS}
\newcommand{\MaterialTempMini}{-20}
\newcommand{\MaterialTempMaxi}{80}
\newcommand{\MaterialNameii}{Thermoplastic Polyurethane}
\newcommand{\MaterialCodeii}{TPU}
\newcommand{\MaterialTempMinii}{-50}
\newcommand{\MaterialTempMaxii}{80}
\newcommand{\MaterialNameiii}{Polylactic acid}
\newcommand{\MaterialCodeiii}{PLA}
\newcommand{\MaterialTempMiniii}{-10}
\newcommand{\MaterialTempMaxiii}{60}
\newcounter{material}
\newcommand{\matetable}[1] {
\stepcounter{material}
I can get \romannumeral\thematerial
and obviously \MaterialNamei
% but here I have an error ...
\begin{tabular}{| p{2cm} | p{7cm} | }
\hline
Material Full Name & \csname MaterialName\romannumeral\thematerial
\endcsname \\
\hline
Comments & #1 \\ \hline
\end{tabular}
}
\begin{document}
\matetable{blah}
\matetable{bluh}
\end{document}
此外,我还将创建使用材料 x 的快捷方式:
\newcommand*{\MaterialName}[1]{%
\csname MaterialName\romannumeral#1\endcsname}
\newcommand*{\MaterialCode}[1]{%
\csname MaterialCode\romannumeral#1\endcsname}
\newcommand*{\MaterialTempMin}[1]{%
\csname MaterialTempMin\romannumeral#1\endcsname}
\newcommand*{\MaterialTempMax}[1]{%
\csname MaterialTempMax\romannumeral#1\endcsname}
这种方式\MaterialName{1}
或\MaterialName{\thematerial}
调用正确的命令比总是键入更容易使用\csname
。