如何在 xtable 环境中更改行高?

如何在 xtable 环境中更改行高?

我想更改行高,使除标题行之外的所有行都具有固定高度 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参数,但这会将命令放在行的前面,因此不起作用。commandrep("\\[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。复制、粘贴并编译)。

ugly table here

尽管为了保持恒定的高度,我宁愿\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

Better looking table

而且,如果你真的不想访问你的 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}

获得:

zebra table

相关内容