O comando \fillwithdottedlines (retirado da classe de documento do exame) não funciona em uma tabela (Tabularray). Por que? Pode ser consertado?

O comando \fillwithdottedlines (retirado da classe de documento do exame) não funciona em uma tabela (Tabularray). Por que? Pode ser consertado?

Eu tenho o seguinte documento que é uma tabela (tabularray) que desejo preencher com linhas pontilhadas vazias. Eu defini o comando \fillwithdottedlinescomo você pode ver no MWE. Embora o comando funcione perfeitamente fora tblrdo ambiente, ele não funciona dentro dele. Por que isso acontece e como posso consertar? Remova o comentário da linha com este comando dentro da tabela para ver o erro.

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

Responder1

Não tenho certeza do que realmente está errado aqui (e, portanto, esta é apenas uma resposta parcial), mas pelo menos um dos problemas decorre da definição de \fillwithdottedlinesque exige que um espaço siga o argumento (porque o espaço delimita o argumento). . Você pode verificar isso escrevendo em uma das células da coluna da esquerda \fillwithdottedlines{5cm} {}, o que pelo menos resulta em nenhum erro, mas ainda em uma saída abaixo do ideal em relação ao alinhamento vertical. Por alguns motivos que não consigo explicar, mas provavelmente devido à forma como tblré construído, esse truque não funciona para células na coluna da direita.

Uma solução, entretanto, seria agrupar a \fillwithdottedlinesmacro em um \parbox, por exemplo, usando \parbox{\linewidth}{\fillwithdottedlines{2cm} }. Cuide do espaço necessário antes da última chave de fechamento!

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

insira a descrição da imagem aqui

informação relacionada