双栏签名块循环

双栏签名块循环

我正在尝试创建一个两列的签名区域,这样签署文档的人就会列在左列或右列中,并且有足够的行来容纳每个人的签名。在每个签名行下,我想打印他们的姓名和可选的职务/公司名称(如果适用),并且我想从变量中提取姓名/职务/公司,以便我可以轻松更改它们。

我对此感到困难,因为 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}
   }%
}

这是我最初的做法,可以很好地将所有人列在一列中,并且它依赖于成员比上面显示的更扁平:

\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}

相关内容