我想更改行高,使除标题行之外的所有行都具有固定高度 x,标题行具有 8 个 y。我想在xtable
环境中执行此操作,因为我需要在 knitr 代码块中生成此表。我想保留代码示例中使用的所有其他格式(第二行灰色,最后一列斜体)。
\documentclass[a5paper]{article}
\usepackage{array}
\begin{document}
<<do_table2, results = "asis">>=
library(xtable)
mydf <- data.frame(id = 1:10, var1 = rnorm(10), var2 = runif(10))
rws <- seq(1, (nrow(head(iris))-1), by = 2)
col <- rep("\\rowcolor[gray]{0.95}", length(rws))
iris$Species <- paste0("\\textit{", iris$Species, "}")
rep("\\[5pt]", nrow(head(iris)))
print(xtable(head(iris)),
add.to.row = list(pos = as.list(rws), command = col),
sanitize.text.function = identity)
@
\end{document}
注意:首先, 我尝试至少以某种方式更改行高。我想使用add.to.row
参数,但这会将命令放在行的前面,因此不起作用。command
rep("\\[20pt]", length(rws))
\[20pt]6 & 5.40 & 3.90 & 1.70 & 0.40 & \textit{\textit{\textit{\textit{setosa}}
所以我尝试把它放在最后像这样:iris$Species <- paste0("\\textit{", iris$Species, "}\\[20pt]")
或者iris$Species <- paste0("\\textit{", iris$Species, "}\\[20pt]\\")
,但也没有成功。
编辑:从乳胶的角度来看,我需要改变行内的行高,使得命令出现在行的最开头,但这对我不起作用:
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrl}
\hline
& Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\
\hline
1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa \\
\\[20pt]2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa \\
3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa \\
\\[20pt]4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa \\
5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa \\
\\[20pt]6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa \\
\hline
\end{tabular}
\end{table}
答案1
\\
对于 LaTeX,位于(文本)行的开头或结尾这一事实毫无意义。您的问题是您有空白行(重复\\
然后\\[20pt]
跟随...
尝试生成类似的东西:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrl}
\hline
& Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\
\hline
\\[20pt]1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa
\\[20pt]2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa
\\[20pt]3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa
\\[20pt]4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa
\\[20pt]5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa
\\[20pt]6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa
\\[20pt]
\hline
\end{tabular}
\end{table}
\end{document}
(顺便说一句:这是一个正确的 MWE。复制、粘贴并编译)。
尽管为了保持恒定的高度,我宁愿\strut
在行首使用或不可见的规则。例如:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{table}[ht]
\centering
\newcommand{\splat}{\vrule width 0 pt height 15pt depth 5pt\relax}
\begin{tabular}{rrrrrl}
\hline
\splat & Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\
\hline
\splat 1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa \\
\splat 2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa \\
\splat 3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa \\
\splat 4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa \\
\splat 5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa \\
\splat 6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa \\
\hline
\end{tabular}
\end{table}
\end{document}
你可以控制最低限度通过使用的定义中的depth
和参数来调整行的大小。height
\splat
而且,如果你真的不想访问你的 LaTeX 的序言(但这真的很有限,所以试着学习如何访问)并且你的xtable
东西加载了适当的包(看起来是这样,否则\rowcolor
将不可用)你可以简单地手动扩展你的宏:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrl}
\hline
\vrule width 0pt height 15pt depth 5pt\relax & Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\
\hline
\vrule width 0pt height 15pt depth 5pt\relax 1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa \\
\rowcolor{gray}{0.8}\vrule width 0pt height 15pt depth 5pt\relax 2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa \\
\vrule width 0pt height 15pt depth 5pt\relax 3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa \\
\rowcolor{gray}{0.8}\vrule width 0pt height 15pt depth 5pt\relax 4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa \\
\vrule width 0pt height 15pt depth 5pt\relax 5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa \\
\rowcolor{gray}{0.8}\vrule width 0pt height 15pt depth 5pt\relax 6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa \\
\hline
\end{tabular}
\end{table}
\end{document}
获得: