我正在尝试创建一个表格,其中第一列跨越 3 行,文本将换行多次。第二列和第三列各有 3 行。第二列中的单元格将包含文本,这些文本也将换行多次。所有文本都必须居左对齐。
下面是我正在尝试创建的一个示例。
任何帮助将不胜感激。
_________________________________________________________________ | | | |一些文本将放在这里|这将| |需要包装|为空| | | | |_______________________|_______________| 一些很长的文字 | | | 我想要 |一些文字将放在这里 |这将| 左中对齐 | 需要换行 | 为空 | 在此专栏中 | | | |_______________________|_______________| | | | |一些文本将放在这里|这将| |需要包装|为空| | | | _________________________________________________________________
答案1
使用方法如下multirow
:
\documentclass{article}
\usepackage{multirow}% http://ctan.org/pkg/multirow
\newcommand{\sometext}{Some text will go here that will need to wrap.}
\begin{document}
\noindent
\begin{tabular}{|p{.4\linewidth}|p{.35\linewidth}|p{.25\linewidth}|}
\hline
\multirow{12}{\linewidth}%
{\sometext\ \sometext\ \sometext} & \sometext\ \sometext & \\ \cline{2-3}
& \sometext\ \sometext & \\ \cline{2-3}
& \sometext\ \sometext & \\ \hline
\end{tabular}
\end{document}
<lines>
请注意\multirow
\multirow{<lines>}{<width>}{<content>}
表示表格中的行数\baselineskip
,而不是行数。因此,在我的示例中,第二列跨越 12 行,因此我习惯于\multirow{12}{\linewidth}{...}
垂直居中并跨越整个单元格宽度。
还有一个可选[<bigstrut>]
参数,\multirow
你可能想试试。请参阅multirow
文档了解更多信息。
请注意,在上面的示例中,表格延伸到边距,导致出现过满\hbox
警告,即使p
字号列宽加起来为\linewidth
(MWE 的结果)。这没有考虑列规则宽度(\arrayrulewidth
)和间隔(\tabcolsep
)。为了适应这种情况(如果您希望tabular
展开整个\linewidth
),请使用tabularx
包裹并且至少有一X
列:
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
%...
\noindent%
\begin{tabularx}{\linewidth}{|p{.4\linewidth}|p{.35\linewidth}|X|}
%...
\end{tabularx}
或更正列间距和规则宽度:
\noindent%
\begin{tabular}{%
|p{\dimexpr.4\linewidth-2\tabcolsep-\arrayrulewidth}|
p{\dimexpr.35\linewidth-2\tabcolsep-\arrayrulewidth}|
p{\dimexpr.25\linewidth-2\tabcolsep-\arrayrulewidth}|}
%...
\end{tabular}
答案2
如果你不需要规则,那么你只需要使用原始的规则\valign
:
\long\def\mytable#1\cr#2\endmytable{\begingroup
\tabskip=\baselineskip % comes between rows
\def\cr{\crcr\noalign{\hfil}} % comes between columns
\def\cellformat{\raggedright\noindent\strut}
\valign{&\vfil\hsize=.2\hsize\cellformat##\vfil\crcr
\multispan3\vfil\hsize=.3\hsize\cellformat#1\vfil\cr
#2\cr}
\endgroup}
\mytable
Some really long text that I would like left-center justified in this column.
Just some more text to show another paragraph and its indentation.
\cr
Some text will go here that will need to wrap&
Some text will go here that will need to wrap&
Some text will go here that will need to wrap
\cr
This will be empty&
This will be empty&
This will be empty
\endmytable
\bye
答案3
该multirow
包提供跨行功能。