2

私は、脳画像 (fMRI) の科学的報告に LaTeX を使用しています。私はtabularLaTeXの配列を持っています。これにはかなり多くの行と列が含まれています。どちらも脳の領域であり、交差する各セルにはそれらの接続に関するデータがあります。

この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} }

...

\newcommandすべての列 x 行の交点には特定の定義があります。

配列コードは次の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... elseif...elseコマンド、forまたはループがないようです。whileでは、これをどのように実装できますか?または、このタスクにはどの LaTeX コマンド、パッケージ、追加ツールを使用すればよいですか?

助けてくれてありがとう:)

4

0 に答える 0