У меня есть следующий документ, представляющий собой таблицу (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}