jmj*_*mjr 3 latex r lines xtable knitr
我想知道是否有一种方法可以使用 command 在 xtable 中制作一些 hlines 虚线或点线hline.after。我找不到解决办法。
MWE(RNW):
\documentclass{article}
\usepackage{booktabs}
\begin{document}
<<mytable, results='asis', echo=F>>=
library("xtable")
print(xtable(matrix(rnorm(32), 8,4), align="lllll"), booktabs=T, hline.after = c(-1,0,4,8))
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
给出这个乳胶表代码:
\begin{table}[ht]
\centering
\begin{tabular}{lllll}
\toprule
& 1 & 2 & 3 & 4 \\
\midrule
1 & 0.50 & -0.49 & -1.32 & -0.29 \\
2 & 1.01 & 0.57 & 1.35 & 0.54 \\
3 & -1.20 & 1.02 & 1.12 & 0.07 \\
4 & 0.04 & 0.14 & 0.23 & -0.38 \\
\midrule
5 & -1.71 & -0.90 & 0.59 & -0.05 \\
6 & 0.14 & -0.82 & -0.44 & 0.52 \\
7 & -0.28 & 1.91 & -1.80 & 0.53 \\
8 & 0.38 & 2.66 & 0.26 & -1.38 \\
\bottomrule
\end{tabular}
\end{table}
Run Code Online (Sandbox Code Playgroud)
\midrule我想要一条虚线,或者最好是点线,而不是第 4 行之后的实线。
我知道,在乳胶中,我可以使用arydshln包制作水平虚线,也可以操纵 \dashlinedash{}、\dashlinegap{} 和 \arrayrulewidth{} 来制作虚线。
但是在打印 xtable 时如何制作点划线呢?有没有人有办法解决吗?
add.to.row就是您正在寻找的。从print.xtable:
add.to.row:两个组件的列表。第一个组件(应称为“pos”)是一个列表,包含应在末尾添加额外命令的行的位置,第二个组件(应称为“command”)是相同的字符向量第一个组件的长度,其中包含应添加到指定行末尾的命令。默认值为NULL,即不添加命令。
不要忘记转义反斜杠,所以你必须写成\\hdashlineinstad of \hdashline。换行符\n是可选的,但它使您的 TEX 代码更清晰。
\documentclass{article}
\usepackage{booktabs}
\usepackage{arydshln}
\begin{document}
<<mytable, results='asis', echo=F>>=
library("xtable")
print(xtable(matrix(rnorm(32), 8,4), align="lllll"),
booktabs=T,
hline.after = c(-1,0,8),
add.to.row = list(pos=list(4), command="\\hdashline \n"))
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
输出:
\begin{table}[ht]
\centering
\begin{tabular}{lllll}
\toprule
& 1 & 2 & 3 & 4 \\
\midrule
1 & -0.44 & 1.18 & -1.14 & -0.50 \\
2 & 1.71 & -0.24 & 1.06 & -0.21 \\
3 & -0.50 & -0.91 & 1.84 & 1.45 \\
4 & -1.64 & -1.68 & -0.70 & 1.25 \\
\hdashline
5 & -2.03 & -0.81 & 0.35 & 1.12 \\
6 & 0.46 & 0.47 & -1.05 & -0.98 \\
7 & 0.45 & -0.05 & -0.79 & 0.17 \\
8 & 1.31 & -2.96 & -2.50 & 0.02 \\
\bottomrule
\end{tabular}
\end{table}
Run Code Online (Sandbox Code Playgroud)