我使用 LaTeX 进行脑成像 (fMRI) 的科学报告。我tabular
在 LaTeX 中有一个数组,其中包含很多行和列,它们都是大脑区域,并且在每个相交的单元格中都有一些关于它们连接的数据。
该数组的内容在另一个使用命令tabular
加载的 .tex 文件中单独定义。\input
在这个另一个 .tex 文件中,数组的每个单元格的内容是使用数百个命令tabular
单独定义的。\newcommand
数组中除了这些命令tabular
外没有其他内容。数组在里面以允许对单元格值进行一些基本计算(尽管这不是必需的)。到目前为止一切正常。\newcommand
tabular
\begin{spreadtab}
因此,\newcommand
定义如下所示:
\newcommand{\origREGIONONEdestREGIONONE}{ NA } % NA for cells on the diagonal.
\newcommand{\origREGIONONEdestREGIONTWO}{ - } % this is the default case.
...
\newcommand{\origREGINOTWOdestREGIONTWO}{ NA }
\newcommand{\origREGIONTWOdestREGIONONE}{ \ref{Spielberg1981} }
\newcommand{\origREGIONTWOdestREGIONTHREE}{ bilateral \ref{Cameron1989} }
...
所有列 x 行交叉点都有特定的\newcommand
定义。
数组代码如下所示tabular
(一个 3x3 示例,但实际上它大于 20x20):
\tiny
\begin{table}
\scalebox{0.6}{
\begin{spreadtab}{{tabular}{*{3}{c}}}
\hline
\to/from :={} & REGION 1 :={} & REGION 2 :={} & REGION 3 :={} \\
\hline
to REGIONONE :={} & \origREGIONONEdestREGIONONE :={} & \origREGIONTWOdestREGIONONE :={} &\origREGIONTHREEdestREGIONONE :={} \\
to REGIONTWO :={} & \origREGIONONEdestREGIONTWO :={} & \origREGIONTWOdestREGIONTWO :={} &\origREGIONTHREEdestREGIONTWO :={} \\
to REGIONTHREE :={} & \origREGIONONEdestREGIONTHREE :={} & \origREGIONTWOdestREGIONTHREE :={} &\origREGIONTHREEdestREGIONTHREE :={} \\
\hline
\end{spreadtab}
} % end scalebox
\caption{A table of connections between brain regions 1, 2 & 3}
\begin{enumerate}
\item \cite{Spielberg1981}\label{Spielberg1981}
\item \cite{Cameron1989}\label{Cameron1989}
\end{enumerate}
\end{table}
\normalsize
现在我想要的是能够tabular
根据列表或字符串数组(或使用任何可能的数据类型)动态生成类似的定义:
在 MATLAB 语法中,它将是:ListOfBrainRegions = { 'BRAINREGIONABC', 'BRAINREGIONDEF', 'BRAINREGIONXYZ' }
在 Python 语法中:ListOfBrainRegions = [ 'BRAINREGIONABC', 'BRAINREGIONDEF', 'BRAINREGIONXYZ' ]
列表或数组将在内部翻译成这样的代码spreadtab
(或者spreadtab
如果它导致一些问题,则不翻译):
\hline
to REGIONABC :={} & \origREGIONABCdestREGIONABC :={} & \origREGIONDEFdestREGIONABC :={} &\origREGIONXYZdestREGIONABC :={} \\
to REGIONDEF :={} & \origREGIONABCdestREGIONDEF :={} & \origREGIONDEFdestREGIONDEF :={} &\origREGIONXYZdestREGIONDEF :={} \\
to REGIONXYZ :={} & \origREGIONABCdestREGIONXYZ :={} & \origREGIONDEFdestREGIONXYZ :={} &\origREGIONXYZdestREGIONXYZ :={} \\
\hline
那么,我应该如何ListOfBrainRegions
在 LaTeX 中定义呢?然后如何在编译 .tex 文件的过程中生成 LaTeX 代码?如果我用其他编程语言来编程,例如在 MATLAB、Common Lisp 或 awk 中,任务(生成程序代码)一点也不难。似乎 LaTeX 没有内置数组、……if
命令或循环,尽管一些包提供了一些附加功能。那么,如何实现呢?或者,我应该使用哪些 LaTeX 命令、包和/或额外工具来完成这项任务?elseif
else
for
while
感谢您的任何帮助 :)