2列の署名ブロックのループ

2列の署名ブロックのループ

署名用の 2 列の領域を作成しようとしています。これにより、文書に署名する人が左の列または右の列にリストされ、全員の署名を収容するのに十分な行が確保されます。各署名行の下に、名前と、必要に応じて役職/会社名を印刷し、名前/役職/会社を変数から取得して簡単に変更できるようにします。

foreach ループではすべてが同一になりますが、左側と右側では異なるコマンドが必要になる可能性があるため、これには困難があります。

ここに全員の名前が入った変数があります。レイアウト方法は柔軟です。

\def\members{
   {
      {Name1, Title1, CompanyName1},
      {Name2, Title2, CompanyName2}
   }, {
      {Name3},
      {Name4, Title4, CompanyName4}
   }, {
      {Name5, Title5, CompanyName5},
      {Name6}
   }, {
      {Name7, Title7, CompanyName7},
      {Name8, Title8, CompanyName8}
   }, {
      {Name9, Title9, CompanyName9},
      {Name10, Title10, CompanyName10}
   }%
}

以下は、全員を 1 つの列にリストするのにうまく機能した元のコードです。これは、メンバーが上記よりもフラットであることを前提としていました。

\foreach \x in \members {
   \ \\[8ex]
   \makebox[2.5in]{\hrulefill} \\
   \foreach \y in \x {
      \y \\[1ex]
   }
}

私が今やろうとしているのは、左/右の列を持つテーブルを組み込むことです。

\begin{tabular}{ l l }
   \begin{tabular}{@{}l@{}} \ \\[8ex] \makebox[2.5in]{\hrulefill} \\
      Name1 \\
      Title1 \\
      CompanyName1 \end{tabular}
   & \begin{tabular}{@{}l@{}} \ \\[8ex] \makebox[2.5in]{\hrulefill} \\
      Name1 \\
      Title1 \\
      CompanyName1 \end{tabular} \\
\end{tabular}

答え1

@marmot のコメントが役に立ちました。 でループする代わりに\foreach、マクロのペアを使用しました。 思ったほどきちんと分離して保存することはできませんでしたが、これで十分でしょう。

\newcommand{\sigblock}[3]{
   \makebox[2.5in]{\hrulefill} \\
      \ #1 \\
      \ #2 \\
      \ #3
}

\newcommand{\sigpair}[2]{%
   \begin{tabular}{@{}l@{}} \ \\[8ex] \sigblock #1 \end{tabular} &
   \begin{tabular}{@{}l@{}} \ \\[8ex] \sigblock #2 \end{tabular}
}

\begin{tabular}{ l l }
   \sigpair{{Name1}{Title1}{CompanyName1}}{{Name2}{Title2}{CompanyName2}} \\
   \sigpair{{Name3}{}{}}{{Name4}{Title4}{CompanyName4}} \\
   \sigpair{{Name5}{Title5}{CompanyName5}}{{Name6}{Title6}{CompanyName6}} \\
   \sigpair{{Name7{}Title7}{CompanyName7}}{{Name8}{}{}} \\
   \sigpair{{Name9}{Title9}{CompanyName9}}{{Name10}{Title10}{CompanyName10}}
\end{tabular}

関連情報