dcolumn 和 csvsimple 之间可能存在冲突

dcolumn 和 csvsimple 之间可能存在冲突

好的,我正在尝试使用 .csv 文件向文档中添加表格。

经过修改后,我得到了这个表:

\usepackage{makeidx}  % allows for indexgeneration
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{mathtools}
\usepackage{csvsimple}
\usepackage{dcolumn}
\usepackage[toc]{glossaries}

\newcolumntype{d}[1]{D{.}{.}{#1}}

\begin{document}

\begin{table}
     \csvreader[no head,
        tabular=c | d{2}  l | d{2} | l,
        table head = Nivel & \mathrm{Tokens} & (Max) & \mathrm{Tempo} & Sucesso \\\hline,
        late after line= \\,
        late after last line=\\\hline]{BC14.csv}{}
    {\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv}
\end{table}

\end{document}

.csv 文件包含以下内容:

01,1.35,(2),12.2,0.65
02,1.7,(3),45,0
03,1.2,(3),58.2,0.05
04,2.63158,(4),76.47369,0.10526
05,1,(2),70,0
06,1.2,(2),30.5,0.35
07,1,(3),60,0
08,2.10526,(3),38.78947,0.26316
09,2.05263,(3),77.1579,0.10526
10,0.52941,(3),100,0

输出如下: 桌子

我到处都找过了,但没有找到 dcolumn 无法对数字进行四舍五入的例子,而且也没有找到同时使用 dcolumn 和 csvsimple 的例子。

答案1

dcolumn首先,和并不冲突csvsimple,如果csvsimple去掉,直接手工填入数据来排版表格,输出的结果是一样的。

dcolumn包适用于按小数点对齐的列,但dcolumn不对数字进行四舍五入。

要自动四舍五入数字,还有其他软件包。siunitx例如允许四舍五入数字(以及许多其他事情)。

排版列代币速度小数点后有两位数字,可以使用以下代码:

\documentclass{article}
\usepackage{csvsimple}
\usepackage{siunitx}

\begin{document}

\begin{table}
     \csvreader[no head,
        before reading=\sisetup{round-mode=places,round-precision=2,round-integer-to-decimal},
        tabular={c | S l | S | l},
        table head = Nivel & {Tokens} & (Max) & {Tempo} & Sucesso \\\hline,
        late after line= \\,
        late after last line=\\\hline]{BC14.csv}{}
    {\csvcoli & \csvcolii & \csvcoliii & \csvcoliv & \csvcolv}
\end{table}

\end{document}

在此处输入图片描述

答案2

dcolumn和包之间没有冲突csvsimple。只是表头中的某些信息设置不正确。

假设您想继续使用该dcolumn软件包,您应该做以下两件事:

  • 更换指令

    tabular=c | d{2}  l | d{2} | l,
    

    tabular=c | d{1.5} l | d{3.5} | l,
    

    基本上,该d{2}规范是有缺陷的,因为它只为数字的整数部分保留了 2 位数字的空间,并且根本没有空间为小数部分。

  • 更换线路

    table head = Nivel & \mathrm{Tokens} & (Max) & \mathrm{Tempo} & Sucesso \\\hline,
    

    table head = Nivel & \multicolumn{1}{c}{Tokens} & (Max) & \multicolumn{1}{c|}{Tempo} & Sucesso \\\hline,
    

经过这两个修改,你的表格就可以排版得很好了。

相关内容