每列的小数位数不同

每列的小数位数不同

我有一张桌子

\begin{table}
\begin{tabular}{rrr}
A      & B      & C      \\
1.00   & 1.10   & 1.11   \\
10.00  & 10.10  & 10.11  \\
\end{tabular}
\end{table}

我想将其格式化为 A 列显示 0 个小数,B 列显示 1 个小数,C 列显示 2 个小数。是否可以指定列显示的小数位数?

在我的实际任务中,数字是从 knitr 中提取的,但我认为我可以在 LaTeX 而不是 R 中处理这个问题。

答案1

在...的帮助下siunitx

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx}

\begin{document}

\begin{table}
\begin{tabular}{S[round-mode=places, round-precision=0, table-format=2]
                S[round-mode=places, round-precision=1, table-format=2.1]
                S[round-mode=places, round-precision=2, table-format=2.2]}
{A}    & {B}    & {C}    \\
1.00   & 1.10   & 1.11   \\
10.00  & 10.10  & 10.11  \\
\end{tabular}
\end{table}

\end{document}

要正确输入非数字,您可以使用以下新\mc命令:

\documentclass{article}
\usepackage{siunitx}
\newcommand{\mc}[1]{\multicolumn{1}{r}{#1}}
\begin{document}

\begin{table}
\begin{tabular}{S[round-mode=places, round-precision=0, table-format=2]
                S[round-mode=places, round-precision=1, table-format=2.1]
                S[round-mode=places, round-precision=2, table-format=2.2]}
\mc{A}    & \mc{B}    & \mc{C}    \\
1.00   & 1.10   & 1.11   \\
10.00  & 10.10  & 10.11  \\
\mc{---}\\
\end{tabular}
\end{table}

\end{document}

答案2

在我的实际任务中,数字是从 knitr 中提取的,但我认为我可以在 LaTeX 而不是 R 中处理这个问题。

为什么?没有理由用困难的方式做事:)

姆韦

\documentclass[a5paper]{article}
\usepackage{booktabs,colortbl,xcolor}
\begin{document}
R raw data with whatever decimals places: 
<<thedata,echo=F>>=
df <- data.frame(
  A=c(1.00,10.00),
  B=c(1.10,10.10),
  C=c(1.11,10.11))
df
@

The same data with 0, 1 and 2  decimals in a nice \LaTeX\ format:
<<after,results='asis', echo=F>>=
library(xtable)
print(xtable(df, digits=c(0,0,1,2)),booktabs=T, include.rownames = F) 
# note that length of digits vector is 1+n  columns
@
\end{document}

相关内容