![包 csvsimple:如何拒绝 csv 文件的最后一行](https://linux22.com/image/319669/%E5%8C%85%20csvsimple%EF%BC%9A%E5%A6%82%E4%BD%95%E6%8B%92%E7%BB%9D%20csv%20%E6%96%87%E4%BB%B6%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C.png)
最终,我想将 csv(逗号分隔变量)文件读入 LaTeX 并显示表格。我在beamer
文档类中执行此操作。我目前正在使用命令\csvautobooktabular
来csvsimple
执行此操作,我刚刚让它工作。但是我需要排除最后一行,而我正在读取的 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
,结束所有进一步的操作。如果不是,则继续读取。