在 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}
输出结果为
我想使用
S
包的列类型siunitx
;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 命令)会更好吗?