
ドキュメント全体でテーブルを何度もコピーする必要があるプロジェクトを実行しています。テーブルの基本構造は同じですが、入力の一部を変更する必要があります。変数データを入力するだけで、テーブル全体を再度設定しなくてもよい基本レイアウト (または何らかのテンプレート) を定義できるかどうか疑問に思っています。
問題は、後で変更するためにテーブルをコピーして貼り付けるときに、人為的なエラーが発生する可能性が非常に高いことです。
私が望む例を見てみましょう。まず、テーブルの定義は次のとおりです。
\begin{table}[h]
\makebox[\linewidth]
{
\begin{tabular}{|l|l|l|}
\hline
[static] & [static] & [static] \\ \hline
[static] & [DYNAMIC] & [DYNAMIC] \\ \hline
[static] & [DYNAMIC] & [DYNAMIC] \\ \hline
[static] & [DYNAMIC] & [DYNAMIC] \\ \hline
\end{tabular}
}
\caption{[DYNAMIC}
\label{[DYNAMIC]}
\end{table}
私が探しているのは、テーブルを複製するときに [static] でマークされたものは変更されないが、[dynamic] でマークされたものは各テーブルで変更されるようなテーブルを複製する方法です。つまり、変更が必要なデータを簡単に「貼り付ける」ことができるような基本レイアウトを定義する方法を探しています。
私はこれについて Google で検索しましたが、うまくいかなかったので、LaTeX でもこれが可能かどうか、また可能であれば、正しい方法は何なのか疑問に思っています。
ありがとう :)
答え1
たとえば、キー値システムを使用できますexpl3
。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\archietable}{m}
{
\begin{table}[htp]
\centering
\keys_set:nn { archie/table } { #1 }
\begin{tabular}{|l|l|l|}
\hline
STATIC & STATIC & STATIC \\ \hline
STATIC & \l_archie_table_XA_tl & \l_archie_table_YA_tl \\ \hline
STATIC & \l_archie_table_XB_tl & \l_archie_table_YB_tl \\ \hline
STATIC & \l_archie_table_XC_tl & \l_archie_table_YC_tl \\ \hline
STATIC & \l_archie_table_XD_tl & \l_archie_table_YD_tl \\ \hline
\end{tabular}
\caption{\l_archie_table_caption_tl}
\label{\l_archie_table_label_tl}
\end{table}
}
\keys_define:nn { archie/table }
{
XA .tl_set:N = \l_archie_table_XA_tl,
XB .tl_set:N = \l_archie_table_XB_tl,
XC .tl_set:N = \l_archie_table_XC_tl,
XD .tl_set:N = \l_archie_table_XD_tl,
YA .tl_set:N = \l_archie_table_YA_tl,
YB .tl_set:N = \l_archie_table_YB_tl,
YC .tl_set:N = \l_archie_table_YC_tl,
YD .tl_set:N = \l_archie_table_YD_tl,
caption .tl_set:N = \l_archie_table_caption_tl,
label .tl_set:N = \l_archie_table_label_tl,
}
\ExplSyntaxOff
\begin{document}
\archietable{
XA = foo,
XB = bar,
XC = baz,
XD = foobar,
YA = gnu,
YB = gnat,
YC = gnocco,
YD = whatever,
caption=First caption,
label=flabel,
}
\archietable{
XA = 1,
XB = 2,
XC = 3,
XD = 4,
YA = 5,
YB = 6,
YC = 7,
YD = 8,
caption=Second caption,
label=slabel,
}
\end{document}
値を変更しますSTATIC
。 の定義内のテキスト内のスペースは\archietable
として挿入する必要があることに注意してください~
。
キーを指定する順序は重要ではありません。