csvsimple 在表格环境中,但 csv 数据包括 LaTeX 数组/表格/对齐等

csvsimple 在表格环境中,但 csv 数据包括 LaTeX 数组/表格/对齐等

我正在尝试使用 导入 csv csvsimple,并且已经克服了 csv 分隔符的挑战(通过在每个字段周围添加花括号),但现在我遇到了一个公认的奇怪问题。我会更详细地解释,但一个简化的示例足以说明这个问题。

我改编了答案中的示例信息找到这里,但将 csv 数据分离为独立文件。

jobname.csv是:

11.0; 12.3; $x^2$; seven$
1.2; 33.11; five; six

让我们的 .tex 文件成为:

\documentclass{article}
\usepackage{booktabs}
\usepackage{csvsimple}

\begin{document}
\begin{tabular}{cccc}
\toprule
1 & 2 & 3 & 4 \\
\midrule
\csvreader[
  separator=semicolon,
  no head,
  late after line=\\,
]{jobname.csv}{}{%
  \csvcoli & \csvcolii & \csvcoliii & \csvcoliv
}
\bottomrule
\end{tabular}

\bigskip

\end{document}

当我运行这个时一切都很好。

当我包含一个数组或一些使用&和的类似环境时,就会出现这个问题\\

将内容更改jobname.csv为:

11.0; 12.3; $x^2$; \begin{array}{cc}2 & 4 \\ 6 & 8\end{array}
1.2; 33.11; five; six

当我运行这个时,一切都是不太好据我所知,\\导致了问题,然后 TeX 尝试将解释&为表格环境的一部分。

我理解这类似于这个问题,但我担心自动转换我的 csv 数据以适应这些数据会非常困难,因为我的实际项目已经包含大约 300 个 LaTeX 片段单元。

答案1

首先需要在文件中$添加环境:arrayjobname.csv

11.0; 12.3; $x^2$; $\begin{array}{cc}2 & 4 \\ 6 & 8\end{array}$
1.2; 33.11; five; six

使用csvsimple-l3(2.1.0 2021-07-06)你可以得到你想要的:

\documentclass{article}
\usepackage{booktabs}
\usepackage[l3]{csvsimple}

\begin{document}

\csvreader[
  tabular=cccc,
  table head=\toprule 1 & 2 & 3 & 4 \\ \midrule,
  separator=semicolon,
  no head,
  late after line=\\,
  late after last line=\\\bottomrule,
]{jobname.csv}{}{%
  \csvcoli & \csvcolii & \csvcoliii & \expandafter\unexpanded\expandafter{\csvcoliv}
}

\end{document} 

在此处输入图片描述

答案2

以下是使用 的替代方法readarray

%dbA
\begin{filecontents*}[overwrite]{databaseA.csv}
11.0; 12.3; $x^2$; $\begin{array}{cc}2 & 4 \\ 6 & 8\end{array}$
1.2; 33.11; five; six
\end{filecontents*}

\documentclass{article}
\usepackage{readarray}[2021-08-08]
\renewcommand\typesetrowsepchar{\\}
\renewcommand\typesetcolsepchar{&}
\begin{document}
\readarraysepchar{;}
\readdef{databaseA.csv}\dbA
\readarray\dbA\arrayA[-,\ncols]

\begin{tabular}{cccc}
\hline
\typesetarray\arrayA\\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

相关内容