%20funktioniert%20in%20einer%20Tabelle%20(Tabularray)%20nicht.%20Warum%3F%20Kann%20das%20behoben%20werden%3F.png)
Ich habe das folgende Dokument, eine Tabelle (tabularray), die ich mit leeren gepunkteten Linien füllen möchte. Ich habe den Befehl \fillwithdottedlines
so definiert, wie Sie in MWE sehen können. Obwohl der Befehl außerhalb tblr
der Umgebung perfekt funktioniert, funktioniert er innerhalb nicht. Warum passiert das und wie kann ich es beheben? Bitte heben Sie die Kommentierung der Zeile mit diesem Befehl innerhalb der Tabelle auf, um den Fehler anzuzeigen.
\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}
Antwort1
Ich bin mir nicht ganz sicher, was hier wirklich schief läuft (und daher ist dies nur eine Teilantwort), aber zumindest eines der Probleme rührt von der Definition her, die \fillwithdottedlines
erfordert, dass auf das Argument ein Leerzeichen folgt (weil das Leerzeichen das Argument abgrenzt). Sie können dies überprüfen, indem Sie in eine der Zellen in der linken Spalte schreiben \fillwithdottedlines{5cm} {}
, was zwar zu keinen Fehlern führt, aber dennoch eine suboptimale Ausgabe in Bezug auf die vertikale Ausrichtung ergibt. Aus Gründen, die ich nicht erklären kann, aber wahrscheinlich aufgrund der Art und Weise, wie die tblr
aufgebaut ist, funktioniert dieser Trick nicht für Zellen in der rechten Spalte.
Eine Lösung wäre jedoch, das \fillwithdottedlines
Makro in eine einzuschließen \parbox
, zum Beispiel mit \parbox{\linewidth}{\fillwithdottedlines{2cm} }
. Achten Sie dabei auf den benötigten Platz vor der letzten schließenden geschweiften Klammer!
\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}