我有一张桌子
\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}