如何将预设字段放入表中?

如何将预设字段放入表中?

我正在尝试 - 但目前还没有成功 - 开发一些代码,允许我调用一个命令(打印一个特定的表),其中一些字段“预先填充”,因为它们在文本的很多地方用作命令。

举个例子,

\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

相关内容