我有以下文档,它是一个表格(tabularray),我想用空虚线填充它。我已经定义了命令,\fillwithdottedlines
如您在 MWE 中看到的。虽然该命令在外部tblr
环境中运行良好,但在内部却不起作用。为什么会发生这种情况,我该如何修复它?请取消注释表格内包含此命令的行以查看错误。
\documentclass[12pt]{article}
\usepackage[a4paper, total={180mm,257mm},left=15mm,top=20mm]{geometry}
\usepackage{tabularray}
\makeatletter
\newlength\dottedlinefillheight
\setlength\dottedlinefillheight{9mm}
\def\fillwithdottedlines#1 {%
\begingroup
\ifhmode
\par
\fi
\hrule height \z@
\nobreak
\setbox0=\hbox to \hsize{\hskip \@totalleftmargin
\vrule height \dottedlinefillheight depth \z@ width \z@
\dotfill}%
\cleaders \copy0 \vskip #1 \hbox{}%
\endgroup
}
\makeatother
\begin{document}
\begin{tblr}{colspec={Q[0.5\linewidth-5pt,c]X[c]},row{1,2}={1cm,m},row{3}={15cm,m},vlines,hlines}
\SetCell[c=2]{c} \large \textbf{TITLE} \\
\textbf{Subtitle 1} & \textbf{Subtitle 2} \\
& \\
%\fillwithdottedlines{10cm} & \fillwithdottedlines{10cm} \\
\end{tblr}
\fillwithdottedlines{5cm}
\end{document}
答案1
我不完全确定这里到底出了什么问题(因此这只是部分答案),但至少有一个问题源于 的定义,它\fillwithdottedlines
要求参数后面有一个空格(因为空格界定了参数)。您可以通过写入左列中的一个单元格来检查这一点\fillwithdottedlines{5cm} {}
,这至少不会导致任何错误,但在垂直对齐方面仍然会导致次优输出。由于某些我无法解释的原因,但可能是由于 的构造方式tblr
,此技巧不适用于右列中的单元格。
但是,一个解决方案是将\fillwithdottedlines
宏包装在 中\parbox
,例如使用\parbox{\linewidth}{\fillwithdottedlines{2cm} }
。注意最后一个结束花括号前所需的空格!
\documentclass[12pt]{article}
\usepackage[a4paper, total={180mm,257mm}, left=15mm, top=20mm]{geometry}
\usepackage{tabularray}
\makeatletter
\newlength\dottedlinefillheight
\setlength\dottedlinefillheight{9mm}
\def\fillwithdottedlines#1 {%
\begingroup
\ifhmode
\par
\fi
\hrule height \z@
\nobreak
\setbox0=\hbox to \hsize{\hskip \@totalleftmargin
\vrule height \dottedlinefillheight depth \z@ width \z@
\dotfill}%
\cleaders \copy0 \vskip #1 \hbox{}%
\endgroup
}
\makeatother
\begin{document}
\begin{tblr}{
colspec = { Q[0.5\linewidth-5pt, c] X[c] },
row{1,2} = {1cm, m},
row{3} = {15cm, m},
vlines,
hlines,
}
\SetCell[c=2]{c} \large \textbf{TITLE} \\
\textbf{Subtitle 1} & \textbf{Subtitle 2} \\
& \\
\parbox{\linewidth}{\fillwithdottedlines{2cm} } &
\parbox{\linewidth}{\fillwithdottedlines{2cm} } \\
\end{tblr}
%\fillwithdottedlines{5cm}
\end{document}