包 csvsimple:如何拒绝 csv 文件的最后一行

包 csvsimple:如何拒绝 csv 文件的最后一行

最终,我想将 csv(逗号分隔变量)文件读入 LaTeX 并显示表格。我在beamer文档类中执行此操作。我目前正在使用命令\csvautobooktabularcsvsimple执行此操作,我刚刚让它工作。但是我需要排除最后一行,而我正在读取的 csv 文件可以是任意长度。所以我想知道如何使用它\csvfilterreject来消除最后一行。下面是我正在尝试执行的一个简单示例:

\documentclass[]{article}
\usepackage{csvsimple}
\usepackage{booktabs}
\usepackage[T1]{fontenc}
\begin{document}
\csvautobooktabular[respect all]{test.csv}
\end{document}

它适用于该文件test.csv

a,b,c,d
1,2,3,4
5,6,7,8
9,10,11,12

如果无法使用csvsimple,有人可以提供一个使用不同包的示例吗?


我尝试了现在已接受的答案中的示例,但收到了编译错误:

(/usr/local/texlive/2015/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Fatal fontspec error: "cannot-use-pdftex"
! 
! The fontspec package requires either XeTeX or LuaTeX to function.

看来我必须使用 XeTeX 或 LuaTeX 来编译它。有什么办法可以避免这种情况吗?我目前正在使用 pdflatex 来编译我的文档,我非常不愿意做出这样的改变。

答案1

请尝试以下 MWE:

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.csv}
a,b,c,d
1,2,3,4
5,6,7,8
9,10,11,12
\end{filecontents*}



\documentclass[]{article}
\usepackage{csvsimple}
\usepackage{booktabs}
\usepackage[T1]{fontenc}
\begin{document}
\csvautobooktabular[respect all]{\jobname.csv}

\csvreader[%
  autotabular,
  before filter=\ifthenelse{\equal{\csvcoli}{9}}{\csvfilterreject}{\csvfilteraccept}
]{\jobname.csv}{}{\csvlinetotablerow}%

\end{document}

请参阅文档的第 12 页。您只需针对 if then else 条件更改代码即可。

\csvreader[%
      autotabular,
      before filter=\ifthenelse{\equal{\csvcoli}{9}}{\csvfilterreject}{\csvfilteraccept}
    ]{\jobname.csv}{}{\csvlinetotablerow}%

表示如果第 1 行 ( \csvcoli) 是9,则执行命令\csvfilterreject,结束所有进一步的操作。如果不是,则继续读取。

相关内容