longtable と expl3 マップ関数による偽の空白行

longtable と expl3 マップ関数による偽の空白行

私は expl3 シーケンスにいくつかのデータを持っていて、それを longtable で使用しています。すべて正常に動作しますが、インライン マップ本体の後に空白行が追加されます。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}

これによって次のものが生成されます:

空白行

インライン マップの最後のループを で閉じて\hline、フッターに直接実行することを意図しています。私は texlive と pdflatex の古いバージョン (Ubuntu 18.04 以降) を使用していますが、このエラーは最新であると想定している overleaf でも発生しているため、エラーは私のものであると推測します。

答え1

それ\clist_map_function:nN以外の場合はセルが開始されます。逆に、\clist_map_function:nNTeX がセルの開始として受け取るものを考慮する前に、完全な結果が提供されます。

テーブルがこの種の問題の原因となることはよく知られています。

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

ここに画像の説明を入力してください

関連情報