使用 csvsimple 和 autotables 排除列

使用 csvsimple 和 autotables 排除列

首先,我很抱歉没有提供完整的最小工作示例。

描述:

我有大量(主要是大型) csv 格式的表格,希望将其包含在 LaTeX 文档中。

该作业本身可以通过 csvsimple 包轻松完成,调用:

\usepackage{longtable}
\usepackage{csvsimple}

我使用以下命令包含我的表格:

{
\small
\begingroup\catcode`"=9
    \csvautolongtable[respect underscore=true]{table_file.csv}
\endgroup
}

问题:

有些表格太宽,甚至在横向模式下都无法放入 A4 纸。但是,我有许多列不需要包含在文档中。(有这些列是好事,但不是绝对必要的。)

问题:

我可以排除特定的列,同时保留使用 \cvsautotable 命令吗?

如果有帮助的话,这是我的标题,在文件中保持一致。我想要删除的列是 H 到 Br。编写自定义标题可能会起作用,但我猜它需要自定义函数才能在表中读取?(标题也包括空格...):

Name,dHf ref.(kJ/mol),DFT E0(Eh),DLPNO E0(Eh),ZPVE(J/mol),Htot(J/mol),H,C,N,O,F,Si,P,S,Cl,Br

(是的,我看到了手册 - 但不幸的是我没有从中找到解决方案......)

非常感谢。

答案1

感谢 tex.stackexchange 的一篇文章 (在 Latex 中将 CSV 文件导入为表格但文件太长),以下方法有效:

不会排除列,而是只选择所需的列。按名称引用列会很困难(例如由于使用空格字符),因此可以使用数字代替。

“autotable”函数被手动定义的布局所取代,指定一个 longtable 和标题。第 1 至第 6 列被赋予一个名称,该名称用于指定打印的列。

\csvreader[longtable=lr|rrrr,%
table head= Name & $\Delta Hf_{ref}$ (\si{kJ/mol}) & %
DFT $E_0$ (\si{E_h}) & DLPNO $E_0$ (\si{E_h}) & $ZPVE$ (\si{J/mol}) & $Htot$ (\si{J/mol}) \\ \hline\endhead,%
late after line=\\,%
,respect underscore=true]{csv_data_file.csv}
{1=\Name,2=\dHfref,3=\EzeroDFT,4=\EzeroDLPNO,5=\ZPVE,6=\Htot}%
{\Name & \dHfref & \EzeroDFT & \EzeroDLPNO & \ZPVE & \Htot}%

虽然这不是最优雅的解决方案,但它确实有效。

相关内容