Der Befehl \fillwithdottedlines (aus der Prüfungsdokumentklasse) funktioniert in einer Tabelle (Tabularray) nicht. Warum? Kann das behoben werden?

Der Befehl \fillwithdottedlines (aus der Prüfungsdokumentklasse) funktioniert in einer Tabelle (Tabularray) nicht. Warum? Kann das behoben werden?

Ich habe das folgende Dokument, eine Tabelle (tabularray), die ich mit leeren gepunkteten Linien füllen möchte. Ich habe den Befehl \fillwithdottedlinesso definiert, wie Sie in MWE sehen können. Obwohl der Befehl außerhalb tblrder 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 \fillwithdottedlineserfordert, 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 tblraufgebaut ist, funktioniert dieser Trick nicht für Zellen in der rechten Spalte.

Eine Lösung wäre jedoch, das \fillwithdottedlinesMakro 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}

Bildbeschreibung hier eingeben

verwandte Informationen