2

我使用 LaTeX 进行脑成像 (fMRI) 的科学报告。我tabular在 LaTeX 中有一个数组,其中包含很多行和列,它们都是大脑区域,并且在每个相交的单元格中都有一些关于它们连接的数据。

该数组的内容在另一个使用命令tabular加载的 .tex 文件中单独定义。\input在这个另一个 .tex 文件中,数组的每个单元格的内容是使用数百个命令tabular单独定义的。\newcommand数组中除了这些命令tabular外没有其他内容。数组在里面以允许对单元格值进行一些基本计算(尽管这不是必需的)。到目前为止一切正常。\newcommandtabular\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 命令、包和/或额外工具来完成这项任务?elseifelseforwhile

感谢您的任何帮助 :)

4

0 回答 0