csvsimple longtable 标头问题

csvsimple longtable 标头问题

longtable我正在尝试在包的帮助下从 CSV 文件创建一个csvsimple。除了第一个标题下方的一行额外内容(它不适用于下一页的连续标题),我设法使几乎所有内容都井然有序。

我猜测它来自这两行代码:

after first line=\\\midrule\endhead,
late after line=\\,

看起来是在表格的第一行(即标题)后面csvsimple应用了两个换行符( )。\\

问题是,如果我从参数中删除换行符after first line,它似乎会抛出错误或根本不编译。如果我尝试使用late after first line,它会删除多余的行,但不会midrule按指定方式显示。

平均能量损失

\documentclass[draft]{article}
\begin{filecontents*}{test.csv}
  a,b,c
  1,2,3
  4,5,6
\end{filecontents*}
\usepackage{mwe}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{csvsimple}
\begin{document}
\csvloop{
  file=test.csv,
  respect all,
  separator=comma,
  no head,
  before reading={
    \begin{longtable}{lll}
    \toprule
  },
  command={\csviffirstrow
    {\textbf{\csvcoli} & \textbf{\csvcolii} & \textbf{\csvcoliii}}
    {\csvcoli & \csvcolii & \csvcoliii}
  },
  after first line=\midrule\endhead,
  late after line=\\,
  late after last line=\\\bottomrule,
  after reading=\end{longtable}
}
\end{document}

输出

问题

答案1

以下内容应该可以工作。late after first line必须放在后面late after line才能生效。否则,它将被覆盖late after line

\documentclass[draft]{article}
\begin{filecontents*}{test.csv}
  a,b,c
  1,2,3
  4,5,6
\end{filecontents*}
\usepackage{mwe}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{csvsimple}
\begin{document}
\csvloop{
  file=test.csv,
  respect all,
  separator=comma,
  no head,
  before reading={
    \begin{longtable}{lll}
    \toprule
  },
  command={\csviffirstrow
    {\textbf{\csvcoli} & \textbf{\csvcolii} & \textbf{\csvcoliii}}
    {\csvcoli & \csvcolii & \csvcoliii}
  },
  late after line=\\,
  late after first line=\\\midrule\endhead,
  late after last line=\\\bottomrule,
  after reading=\end{longtable}
}
\end{document}

相关内容