宏或 \def 在表中创建行

宏或 \def 在表中创建行

我有一张特定的表,我想通过命令向其添加行。

我可以这样做:

\newcommand\arow[3]{
 #1 & #2 & #3 \tabularnewline
}

和桌子

\begin{tabularx}{\unitlength}{ X X X }

First & Second & Third \tabularnewline
\arow{I}{AM}{ROW}
\end{tabularx}

对于简单的表格来说这是可以的,但是当情况变得更加复杂时我希望能够将行的初始化与表的放置分开。

所谓更复杂,是指命令可能需要大量变量,其中一些变量是数字。同时,表格应位于页面的其他代码中,某个地方。理想情况下,我有一个整洁的 .tex 文件,在其中列出我的所有定义,并将它们保存为一个简单的名称,然后将其添加到表格中(这样我也不会忘记表格的内容,如果我要使用表格,我会忘记,尽管\input{my_list_of_rows.tex}这可能是一个解决方案。

我想象将命令的结果行保存在一个命名更简洁的变量中,并为其准备一个单独的工作表。

例如:

my_rows.tex:
row_complex = \arow{this}{is}{a}{nastyyyy}{$\mathcal{C}$ row}
row_real    = \arow{this}{is}{a}{less nasty}{$\mathcal{R}$ow}

与表采取

\begin{tabularx}{\unitlength}{ ... }
...
row_complex
row_real
\end{tabularx}

有可能吗?该怎么做?或者,处理这种情况的其他标准方法是什么?

答案1

基本选项是 my_rows.tex

\rowdef{row_complex}{\arow{this}{is}{a}{nastyyyy}{$\mathcal{C}$ row}}
\rowdef{row_real}{\arow{this}{is}{a}{less nasty}{$\mathcal{R}$ow}}

然后添加序言

\newcommand*\arow[3]{#1&#2&#3\tabularnewline}
\newcommand*\rowdef[1]{\expandafter\def\csname row@#1\endcsname}
\newcommand*\rowuse[1]{\csname row@#1\endcsname}
\input{my_rows}

与表采取

\begin{tabularx}{\unitlength}{..}
  ...
  \rowuse{row_complex}
  \rowuse{row_real}
\end{tabularx}

相关内容