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