在表格中的某些单元格中显示两行的最简单方法是什么?
我现在能想到的唯一方法是实际有 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}
答案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}}
其中一些标题长达四行或更多行(复杂的标题位于狭窄的数字列上方)。结果实际上是相当可观的。