csvsimple、siunitx 和 tabularx

csvsimple、siunitx 和 tabularx

在 MWE 中

\documentclass{article}

\usepackage{filecontents}
\usepackage{csvsimple}
\usepackage{xcolor}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage{siunitx}

\definecolor{ColourTable}{gray}{0.3}
\definecolor{ColourHeader}{gray}{0.7}
\definecolor{ColourCells}{gray}{0.95}

\makeatletter

\newcommand{\DBTable}[2]
{
  \csvloop
  {
    file = #1.csv,
    before reading = 
      \begingroup 
      \ttfamily
      \renewcommand{\arraystretch}{1.07}
      \setlength{\arrayrulewidth}{1pt}
      \arrayrulecolor{white}
      \sisetup{detect-all=true},
    after head = 
      \begin{tabular}{#2}
      \rowcolor{ColourTable}
      \multicolumn{\csv@columncount}{l}{\color{white}\bfseries #1} \\ \hline
      \rowcolor{ColourHeader} \bfseries 
      \csvlinetotablerow,
    before line = \\ \hline \rowcolor{ColourCells},
    late after last line = \end{tabular},
    after reading = \endgroup,
    command = \csvlinetotablerow 
  }
}

\makeatother

\begin{filecontents*}{Articles.csv}
ID,Bezeichnung,Price,Stock
A1273,HDMI cable 1.8 m,8.95,45
A1367,VGA cable 3.0 m,4.95,10
\end{filecontents*}

\begin{document}

\DBTable{Articles}{l|l|l|l}

% \DBTable{Articles}{l|l|S[table-format=3.2]|S[table-format=2.0]}  

\end{document}

输出结果为

MWE 的输出

我想使用

  1. S包的列类型siunitx
  2. tabularx而不是环境tabular

第一个问题与列标题需要支撑有关。但是,我不知道如何在命令中实现这一点\csvloop

至于第二个问题,当我tabular通过tabularx添加一定宽度和可拉伸的列类型进行替换时,出现错误。

编辑

我的最终目标是生成代码

\documentclass{article}

\usepackage{filecontents}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{siunitx}

\definecolor{ColourTable}{gray}{0.3}
\definecolor{ColourHeader}{gray}{0.7}
\definecolor{ColourCells}{gray}{0.95}

\begin{filecontents*}{Articles.csv}
ID,Bezeichnung,Price,Stock
A1273,HDMI cable 1.8 m,8.95,45
A1367,VGA cable 3.0 m,4.95,10
\end{filecontents*}

\begin{document}

% \DBTable{Articles}{10cm}{l|X|S[table-format=3.2]|S[table-format=2.0]}

\begingroup
\ttfamily
\renewcommand{\arraystretch}{1.07}
\setlength{\arrayrulewidth}{1pt}
\arrayrulecolor{white}
\sisetup{detect-all=true},
\begin{tabularx}{10cm}{l|X|S[table-format=3.2]|S[table-format=2.0]}
\rowcolor{ColourTable} \multicolumn{4}{l}{\color{white}\bfseries Articles} \\ \hline
\rowcolor{ColourHeader} ID & Bezeichnung & {Price} & {Stock} \\ \hline
\rowcolor{ColourCells} A1273 & HDMI cable 1.8 m & 8.95 & 45 \\
\rowcolor{ColourCells} A1367 & VGA cable 3.0 m & 4.95 & 10
\end{tabularx}
\endgroup

\end{document}

\DBTable使用显示 (1) 文件名、(2) 表格宽度和 (3) 列规格参数的命令自动从 CSV 文件中获取。

基于该csvsimple软件包,这完全可行吗?解析 CSV 文件(例如,使用 LaTeX3 命令)会更好吗?

相关内容