El comando \fillwithdottedlines (tomado de la clase de documento del examen) no funciona en una tabla (Tabularray). ¿Por qué? ¿Se puede arreglar?

El comando \fillwithdottedlines (tomado de la clase de documento del examen) no funciona en una tabla (Tabularray). ¿Por qué? ¿Se puede arreglar?

Tengo el siguiente documento que es una tabla (tabularray) que quiero completar con líneas de puntos vacías. He definido el comando \fillwithdottedlinescomo puedes ver en MWE. Aunque el comando funciona perfectamente en el exterior, tblrno funciona en el interior. ¿Por qué sucede esto y cómo puedo solucionarlo? Descomente la línea con este comando dentro de la tabla para ver el error.

\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}

Respuesta1

No estoy completamente seguro de qué es lo que realmente está mal aquí (y por lo tanto, esto es solo una respuesta parcial), pero al menos uno de los problemas surge de la definición de \fillwithdottedlinesque requiere que un espacio siga al argumento (porque el espacio delimita el argumento). . Puede verificar esto escribiendo en una de las celdas de la columna de la izquierda \fillwithdottedlines{5cm} {}, lo que al menos no genera errores, pero aún así genera un resultado subóptimo con respecto a la alineación vertical. Por algunas razones que no puedo explicar, pero probablemente debido a la forma en que tblrestá construido, este truco no funciona para las celdas de la columna de la derecha.

Sin embargo, una solución sería envolver la \fillwithdottedlinesmacro en un archivo \parbox, por ejemplo usando \parbox{\linewidth}{\fillwithdottedlines{2cm} }. ¡Cuide el espacio requerido antes de la última llave de cierre!

\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}

ingrese la descripción de la imagen aquí

información relacionada