私は、脳画像 (fMRI) の科学的報告に LaTeX を使用しています。私は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} }
...
\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 コマンド、パッケージ、追加ツールを使用すればよいですか?
助けてくれてありがとう:)