csvsimple 重复头部元素而不是 CSV 行元素

csvsimple 重复头部元素而不是 CSV 行元素

我尝试将 CSV 文件格式化为表格,但遇到了一个问题,即csvsimple在文件中出现 % 符号后,包会重复头部元素。考虑以下 MWE(从我原来的 classicthesis 文件中大大减少):

\documentclass[paper=a4]{scrreprt}

\RequirePackage{tabularx}
\usepackage{filecontents}

\RequirePackage{csvsimple}

\csvset{every csv/.style={
  separator=semicolon,
  respect percent
}}

\begin{filecontents*}[overwrite]{Courses.csv}
A;B;C;D;E;F;G;Portion;H;I
a;b;c;d;e;f;g;100%;1,00;3,00
a;b;c;d;e;f;g;100%;2,00;4,00
\end{filecontents*}

\begin{document}

\begin{table}[h]
  \centering
  \begin{tabularx}{\textwidth}{XXXXXXXXXX}
    \csvreader[no head, late after line=\\]{Courses.csv}{}{\csvlinetotablerow}\\
  \end{tabularx}
\end{table}

\end{document}

输出如下所示: 在此处输入图片描述

请注意,第一和第二个数据行(表格的第二行和第三行)中缺少 % 符号,并且最后两列填充的是列标题而不是内容。我验证了 csvsimple 是否配置为尊重 % 符号(请参阅包选项),并且 filecontents 的输出实际上是正确的。(注意:即使respect all不改变此行为)

奇怪的是,如果我删除该no head标志,csvsimple 会正确打印第一个表行,但会跳过所有剩余行。即使我添加了 100 行,也只会打印 1 行:

在此处输入图片描述

我有点不知道还能尝试什么。如何配置/说服 csvsimple 正确打印表格中的所有行?

答案1

cvssimple 在本地设置百分比字符的 catcode,而在单元格组成组的表格中,它又丢失了。在 tabularx 之前更改它:

\documentclass[paper=a4]{scrreprt}

\RequirePackage{tabularx}
\usepackage{filecontents}

\RequirePackage{csvsimple}

\csvset{every csv/.style={
  separator=semicolon,
  respect percent
}}

\begin{filecontents*}[overwrite]{Courses.csv}
A;B;C;D;E;F;G;Portion;H;I
a;b;c;d;e;f;g;100%;1,00;3,00
a;b;c;d;e;f;g;100%;2,00;4,00
\end{filecontents*}


\begin{document}

\begin{table}[h]
  \centering
  \catcode`\%=12
  \begin{tabularx}{\textwidth}{XXXXXXXXXX}
    \csvreader[no head, late after line=\\]{Courses.csv}{}{\csvlinetotablerow}\\
  \end{tabularx}
\end{table}

\end{document}

在此处输入图片描述

相关内容