csvsimple 垂直标题

csvsimple 垂直标题

.csv我正在尝试使用以下文件创建表csvsimple。这是我的文件内容:

Degrees,10,20,30,40,50,60,70,80,90
Time,1.33,0.90,0.72,0.63,0.50,0.43,0.41,0.40,0.38

这是列数未知但行数已知的表格。有没有办法在 LaTex 中根据此表格创建表格?标题Degrees和行数Time也应加粗。

非常感谢。

答案1

我建议对文件进行两次循环。第一次循环用于计算列数,第二次循环用于设置表格。

下面的代码实现了一个新的宏\docolumncount,它将文件名作为第一个参数,并将列数减 1 保存到第二个参数中,这里\mycolumncount

这用于设置表格:

\begin{filecontents*}{example.csv}
Degrees,10,20,30,40,50,60,70,80,90
Time,1.33,0.90,0.72,0.63,0.50,0.43,0.41,0.40,0.38
\end{filecontents*}

\documentclass{article}
\usepackage{booktabs,etoolbox,array}
\usepackage{csvsimple}

\makeatletter
\newcommand\docolumncount[2]{%
  \csvloop{
    file=#1,
    command=,
    after reading={\numdef\mycolumncount{\csv@columncount-1}},
  }%
}
\makeatother


\begin{document}

\docolumncount{example.csv}{\mycolumncount}

\begin{tabular}{>{\bfseries}l*{\mycolumncount}{r}}
\toprule
\csvloop{
  file=example.csv,
  no head,
  column count=\the\numexpr\mycolumncount+1\relax,
  check column count,
  command=\csvlinetotablerow,
  late after line=\\,
  late after last line=\\\bottomrule,
}
\end{tabular}

\end{document}

在此处输入图片描述

当然,为了方便起见,计数和餐桌布置可以放入一个宏中。

答案2

只需设置大量的列;如果您没有填满所有列,TeX 不会抱怨。

\begin{filecontents*}{\jobname.csv}
Degrees,10,20,30,40,50,60,70,80,90
Time,1.33,0.90,0.72,0.63,0.50,0.43,0.41,0.40,0.38
\end{filecontents*}

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

\begin{document}

\section{Good typesetting with \texttt{booktabs}}

\begin{tabular}{>{\bfseries}l*{99}{r}}
\toprule
\csvloop{
  file=\jobname.csv,
  no head,
  command=\csvlinetotablerow,
  late after line=\\,
  late after last line=\\\bottomrule,
}
\end{tabular}

\section{Bad typesetting with rules}

\begin{tabular}{|>{\bfseries}l|*{99}{r|}}
\hline
\csvloop{
  file=\jobname.csv,
  no head,
  command=\csvlinetotablerow,
  late after line=\\\hline,
  late after last line=\\\hline,
}
\end{tabular}

\end{document}

注意:我以前\jobname只是不破坏系统上的文件;更改\jobname为实际文件名。filecontents*环境用于使示例自成一体。

在此处输入图片描述

相关内容