我有一个 csv 文件,其字段包含文本。由于字段可以包含换行符,因此它们用双引号括起来。使用我最喜欢的电子表格 (libreoffice) 可以很好地编辑这些文件。我想呈现此文件,但遇到了以下问题:
- 报价已呈现
- 新的行将被忽略
我使用 csvsimple,但它可能不是最好的选择。以下是包含 3 个文件的简单工作示例:
数据.csv:
"1st field", "numerical field", "string field"
"foo", 3, "bar"
"xizzy", 0, "lorem
ipsum"
"nothing", 1,"last string"
数据简单.csv:
1st field, numerical field, string field
foo, 3, bar
xizzy, 0, lorem ipsum
nothing, 1,last string
csvtest.tex:
\documentclass{article}
\usepackage{geometry}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
%\usepackage{pgfplotstable}
\usepackage{csvsimple}
\begin{document}
\csvautotabular{./data_simple.csv}
\csvautotabular{./data.csv}
\end{document}
data_simple.csv 对应的表没问题,但 data.csv 对应的表不符合我的预期。
答案1
可以通过为某个字符分配类别代码 9 来指示 TeX 忽略该字符。这不会影响\"
文件中的使用。
\begin{filecontents*}{\jobname.csv}
"1st field", "numerical field", "string field"
"foo", 3, "bar"
"xizzy", 0, "lorem
ipsum"
"nothing", 1,"last string"
\end{filecontents*}
\documentclass{article}
\usepackage{csvsimple}
\begin{document}
\begingroup\catcode`"=9
\csvautotabular{\jobname.csv}
\endgroup
\end{document}
我使用filecontents*
with\jobname.csv
作为名称只是为了避免破坏我的文件。
但请注意,您不能让一个条目跨越两行。这是因为cvssimple
TeX 会使用逐行读取文件,并且无法通过该标记判断行是否结束。