Linha em branco espúria com função de mapa longtable e expl3

Aug 28 2020

Eu tenho alguns dados em uma sequência expl3, que estou usando em uma tabela longa. Tudo funciona bem, mas estou recebendo uma linha em branco adicional após o corpo do mapa embutido. MWE:

\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{longtable}

\ExplSyntaxOn

\NewDocumentCommand{\printData}{}
 {
   \begin{longtable}{l}
     \hline
     Minimal~Working~Example \\
     \hline
     \endhead
     End \\
     \hline
     \endfoot
     \clist_map_inline:nn
       {comma,separated,list,of,data,also,fails,with,seq}
       {
         ##1 \\
         \hline
       }
% Uncomment to fill the blank row
%       Mystery row here! \\ \hline
   \end{longtable}
 }

\ExplSyntaxOff

\begin{document}
\printData
\end{document}

Que produz:

A intenção é que o loop final do mapa embutido seja fechado com um \hline, correndo direto para o rodapé. Estou em uma versão mais antiga do texlive e pdflatex (do Ubuntu 18.04), mas esse erro também está presente no verso, que estou assumindo que está atualizado, então presumo que o erro seja meu.

Respostas

1 egreg Aug 28 2020 at 16:03

Use \clist_map_function:nNcaso contrário uma célula seria iniciada; pelo contrário, \clist_map_function:nNentrega seu resultado completo antes que qualquer coisa que o TeX tome como o início de uma célula seja considerada.

As tabelas são bem conhecidas por serem uma fonte de problemas desse tipo.

\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{longtable}

\ExplSyntaxOn

\NewDocumentCommand{\printData}{}
 {
  \begin{longtable}{l}
  \hline
  Minimal~Working~Example \\
  \hline
  \endhead
  End \\
  \hline
  \endfoot
  \clist_map_function:nN {comma,separated,list,of,data} \aejh_entry:n
  \end{longtable}
 }

\cs_new_protected:Nn \aejh_entry:n { #1 \\ \hline }

\ExplSyntaxOff

\begin{document}

\printData

\end{document}