tabu 如何指定单独的绝对列宽和行高?

tabu 如何指定单独的绝对列宽和行高?

我正在尝试生成一个需要不同行宽的表格。第一列的宽度应尽可能小(仅用于打印单个数字 1、2、3 到 9),而第 3 列(我放置 * 的位置)的宽度应为 20 毫米。其余列的宽度我希望为 1 厘米。

但是我的以下代码只会生成一个等宽列表。奇怪的是,我可以使用 来增加行高\vspace{15mm}

如何控制(指定绝对值,如3mm, 23mm)tabu(而不是 tabular)中各行和各列的宽度和高度?能够指定各行和各列的宽度和高度对我来说非常重要。看来 tex 挡住了我的路 :( 我希望使用 tabu,因为我发现它更方便做一些其他事情。

\documentclass{article}
\usepackage{tabu}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabu} spread 0pt {|*{12}{[0.5pt]X[c,m]|}}
\hline
1  \vspace{5mm} & & \hspace{20mm}* & & & & & & & & & \\  \hline
2  \vspace{15mm} & & & & & & & & & & & \\  \hline
\end{tabu}
\end{table}

\end{document}

答案1

我在这里得到了一些信息这里。它是关于表格的,但它也适用于禁忌。

这是工作代码:

\documentclass{article}
\usepackage{tabu}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabu} spread 0pt {|@{}X[c,m]@{}|*{11}{[0.5pt]X[c,m]|}}
\hline
1\vspace{5mm} & & \hspace{20mm}* & & & & & & & & & \\  \hline
2\vspace{15mm} & & & & & & & & & & & \\  \hline
\end{tabu}
\end{table}

\end{document}

答案2

由于 OP 已经回答了他的问题,因此似乎找到了他所寻找的内容。但是,如果我理解正确的话,比较他问题中请求的宽度结果:

  • 第一列的宽度尽可能小
  • 接下来十列的宽度为 20 毫米
  • 最后一列的宽度为 10 毫米

对于最后一个请求,据我所知,没有一个用于设置表格的包不提供显式设置单元格/行高度的宏。它会自动调整为内容最多的单元格的高度。因此,如果有人希望确定单元格的最小高度,他可以按照 OP 在其答案中显示的方式进行操作,或者将\rule[<offset>]{<width>}{<height>}宽度设置为零。

宽度是单元格宽度,通常tabu将单元格宽度设置为其内容的宽度。对于明确的确定,它提供了确定宽度与确定表格宽度的参数之间的比率的机制。从以下问题中的数据可以看出,表格的宽度为(如果第一列的最小宽度为 4mm):

1 x 4mm + 10 x 20mm + 1 x 10mm = 214mm

纵向放置无法放入 A4 纸的内容,只能横向放置。

代码:

\documentclass[border=2mm,
               preview]{standalone}
\setlength\textwidth{250mm}
\usepackage{array,tabu}
    \begin{document}   
\begin{table}[htbp]
\centering
    \caption{OP answer}
\begin{tabu} spread 0pt {|@{}X[c,m]@{}|*{11}{[0.5pt]X[c,m]|}}
    \hline
1  \vspace{5mm} & & \hspace{20mm}* & & & & & & & & & \\ \hline
2  \vspace{15mm} & & & & & & & & & & & \\               \hline
\end{tabu}
\end{table}

\begin{table}
    \caption{Proposed solution with different determination of rows heights}
\abovetabulinesep=1mm
\belowtabulinesep=1mm
\begin{tabu}to 214mm{|X[0.4,c,m]|*{10}{X[2,cm]|}X[1,c,m]|}
    \hline
1\vspace{5mm}     & & * & & & & & & & & &    \\  \hline
\vspace{2.5mm}2\vspace{2.5mm}     & & * & & & & & & & & &    \\  \hline
3\rule{1mm}{5mm}  & & * & & & & & & & & &    \\  \hline
4 \rule{1mm}{5mm}  & & * & & & & & & & & &    \\  \hline
5\rule{1mm}{15mm} & & * & & & & & & & & &    \\  \hline
6 \rule{1mm}{15mm} & & * & & & & & & & & &    \\  \hline
7\rule{1mm}{15mm} & xxx xxx xxx xxx xxx xxx xxx xxx
                      xxx xxx xxx xxx xxx xxx xxx xxx
                       & * & & & & & & & & &    \\  \hline
\end{tabu}
\end{table}
    \end{document}

在此处输入图片描述

在代码中,规则的间距被有意设置为 1mm,这样可以看到它们在单元格中的位置。最后一行显示,行高适应单元格中的最高内容。为了看起来更好,我添加了\abovetabulinesep=1mm\belowtabulinesep=1mm

相关内容