表格行换行时的放置

表格行换行时的放置

我有一张包含三列的表格,其中包括描述、简短缩写和值。描述可能是一个非常长的条目,因此我使用 p 列类型来自动换行。我使用 longtable 是因为最终表格将跨越几页。

目前,我使用这个代码

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
here is a very long text in the first column that will be broken into multiple rows & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
\hline
\end{longtable}

\end{document}

得到这个表:

当前版本

如您所见,如果第一列中的条目很短,则很容易对齐最后两列。但是,如果第一列中的文本被分成多行,那么最后两行中自然就会有一个类似但现在是空白的空间。因此,在示例中,我想要做的是将条目 l.2 和值 v.l2“上移”两“行”。

答案1

您可以使用包\multirow中的multirow功能来跨越多行单元格,例如:

\documentclass{article}
\usepackage{longtable}
\usepackage{multirow}

\begin{document}

\begin{longtable}{p{0.5\textwidth}cc} 
\hline
Column 2 &  Column 2 & Column 3\\ 
\hline
short entry & Entry s.1 & Value v.s1\\
  & Entry s.2 & Value v.s2 \\
\hline
\multirow{2}{0.5\textwidth}{here is a very long text in the first column that will be broken into multiple rows} & Entry l.1 &  Value v.l1 \\
 & Entry l.2 &  Value v.l2 \\
 \\
\hline
\end{longtable}

\end{document}

对于文本换行,您需要手动设置列宽 - 在示例中,它设置为.5\textwidth。另请参阅这是对“多行列中的文本换行”的回答

编辑: 为了避免手动检查文本跨越的行,您可以对最后两列使用嵌套表,而不是使用\multirow,fe:

\documentclass{article}
\usepackage{longtable}

\begin{document}

\begin{longtable}{p{0.5\textwidth}c} 
\hline
Column 2 &\begin{tabular}{cc}Column 2 & Column 3\end{tabular}\\ 
\hline
short entry &\begin{tabular}{cc}
    Entry s.1 & Value v.s1\\
    Entry s.2 & Value v.s2
\end{tabular}\\
\hline
here is a very long text in the first column that will be broken into multiple rows &\begin{tabular}{cc}
    Entry l.1 & Value v.l1 \\
    Entry l.2 & Value v.l2
\end{tabular}\\
\hline
\end{longtable}

\end{document}

我认为我更愿意检查两次,因为如果可能的话,我会尽量避免在表格中出现长文本。

答案2

您也可以使用 booktabs 包。

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}} 
\toprule
Column 1 &  Column 2 & Column 3\\ 
\midrule
short entry & Entry s.1 & Value v.s1\\
& Entry s.2 & Value v.s2 \\
\midrule
There is a very long text in the  & Entry l.1 &  Value v.l1 \\
first column that will be broken  &Entry 1.2 & Value v.12\\
into multi rows&&\\
\bottomrule
\end{longtable}
\end{document}

书签

答案3

由于所有列都是p{some width},您可以\newline在单元格内使用,并且行数较少。或者,您可以使用makecell允许在单元格内换行的包:

\documentclass{article}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{makecell}
\renewcommand\cellalign{lt}

\begin{document}

\begin{longtable}{p{0.5\textwidth}p{3cm} p{3cm}}
  \toprule
  Column 1 & Column 2 & Column 3 \\
  \midrule
  short entry & Entry s.1 & Value v.s1 \\
                                                                                    & Entry s.2 & Value v.s2 \\
  \midrule
  There is a very long text in the first column that will be broken into multi rows & \makecell{Entry l.1 & \\Entry 1.2} & \makecell{Value v.l1\\Value v.12} \\
  \addlinespace
  There is a very long text in the first column that will be broken into multi rows & Entry l.1\newline Entry 1.2 & Value v.l1\newline Value v.12 \\
  \bottomrule
\end{longtable}

\end{document} 

在此处输入图片描述

相关内容