表格中某些单元格有多行

表格中某些单元格有多行

在表格中的某些单元格中显示两行的最简单方法是什么?

我现在能想到的唯一方法是实际有 2 个单独的行(中间没有线)并\multirow在此行的所有其他单元格上使用。 有没有更简单的想法?

答案1

你可以将一个嵌套tabular在另一个中tabular

在此处输入图片描述

\documentclass{article}
\begin{document}
\begin{tabular}{cccc}
  One & Two & Three & Four \\
  Een & Twee & Drie & Vier \\
  One & Two & 
    \begin{tabular}{@{}c@{}}Three \\ Drie\end{tabular}
  & Four
\end{tabular}
\end{document}

使用@{}..@{}空隙来表示嵌套插入的额外空间(水平制表符分隔)tabular

此外,上述示例将嵌套元素tabular垂直居中插入到行中。如果您希望其t上对齐或b下对齐,请使用可选参数tabular:\begin{tabular}[t]..\begin{tabular}[b]...

请注意,此方法也适用于数学模式array

答案2

当使用p类型列,可以设置列的宽度:

默认情况下,如果列中的文本对于页面来说太宽,LaTeX 不会自动换行。使用 p{'width'},您可以定义一种特殊类型的列,它将像普通段落一样换行文本。您可以使用 LaTeX 支持的任何单位传递宽度,例如“pt”和“cm”...

该列不仅允许根据给定的列大小自动将文本分成多行,还允许在表格环境中p使用:\newline

\begin{tabular}{l|p{15mm}}
  \hline
  foo & bar \newline rlz \\
  \hline
\end{tabular}

这使:
p 型柱示例

答案3

最简单的方法是使用\shortstack但它不是很灵活。

\documentclass{article}

\begin{document} 
\begin{tabular}{ccc}
    one & two & three \\
    one & two & \shortstack{aa \\ bb}\\

\end{tabular}
\end{document}

\shortstack可以选择将内容左对齐[l]、右对齐[r]或居中对齐[c](默认)。另一个想法是使用,\parbox[t]{5cm}{aa\\bb}因为它提供了垂直对齐行的选项。

答案4

以下是一些单元格定义,当表格单元格的内容基本上是文本时,这些定义效果很好:

\newcommand{\lcell}[2][1.2in]{%
  $\vcenter{\hsize#1\baselineskip11pt\vspace*{3pt}\raggedright#2\strut\par}$}
\newcommand{\slcell}[2][1.2in]{%
  $\vcenter{\hsize#1\baselineskip9.5pt\vspace*{3pt}\raggedright#2\strut\par}$}
\newcommand{\ccell}[2][.42in]{%
  $\vcenter{\hsize#1\baselineskip11pt\vspace*{3pt}\centering#2\strut\par}$}

所涉及的工作必须\usepackage{array}获得增强的设施。

当然,尺寸是针对特定工作而言的,并且需要根据具体情况进行更改;在实际工作中,肯定需要进行微调。类型假定为\lcell和的10pt\ccell或 的 8pt \slcell;我还\setlength{\extrarowheight}{1pt}为了防止单元格内容的顶部撞到上面的行,并\strut确保下面的一致间隙。

单元格中的换行符通常是手动的(尽管不一定非要这样),使用\break,如果需要在左对齐单元格中缩进续行,则\hspace*需要 。\par末尾的 确保遵守指定的基线。

对我来说,单元格的多行文本内容使用“正常”文本基线设置比使用通常的表格行分隔看起来要好得多。

对于表格标题,多行垂直居中看起来不太好;它们在底部对齐看起来更好。这是我使用的定义:

\newcommand{\thead}[2][.75in]{%
  \vbox{\hsize#1\baselineskip11pt\centering\vspace*{3pt}#2\par}}

其中一些标题长达四行或更多行(复杂的标题位于狭窄的数字列上方)。结果实际上是相当可观的。

相关内容