longtable 和 multirow 的问题

longtable 和 multirow 的问题

我在使用多行和长表时遇到了问题。多行单元格中的内容非常大,远远超出了“非多行”行的限制。LaTeX 会忽略这一点,并在这些行后面开始下一行,因此会覆盖内容。

此后最低工作代码:

\documentclass{article}

\usepackage{longtable}
\usepackage {multirow}
\usepackage{lipsum}

\begin{document}

\begin{center}

\begin{longtable}{|p{.15\textwidth}|p{.15\textwidth}|p{0.65\textwidth}|}
    \hline  
    1 & 1.1 & \multirow{3}{.65\textwidth} {\lipsum[1] }\\
     & 1.2 & \\
     & 1.3 & \\ \hline  
     2 & 2.1 & \lipsum[2] \\ \hline  
     \end{longtable} 
    \end{center}

\end{document}

任何帮助都将不胜感激...

答案1

我仍然不确定您在寻找什么,但根据您关于添加的最后评论vspace,我很好奇您为什么不将节号(1.1、1.2 和 1.3)放在同一单元格 i 第 2 列中。如果您添加或删除文本,第三列中的单元格将自动缩小和扩展。如果您的行中有两个节包含文本,则将该节放在单独的行中,请参阅示例 2。

另外两个改进:

  1. 去除centering-environment。长桌默认居中,并使用自己的对齐算法(参见文档)
  2. 计算行时要考虑tabcolseps 和垂直规则宽度的影响,请参阅新序言。如果您有多个类似的表格,我建议您加载大批并使用 定义两种新的列类型\newcolumntype,然后您可以在表格的序言中使用它们:

\newcolumntype{M}{p{\dimexpr(0.175\linewidth-2\tabcolsep-1.5\arrayrulewidth)}}
\newcolumntype{N}{p{\dimexpr(0.65\linewidth-2\tabcolsep-\arrayrulewidth)}}

第一个表格的序言:

 \begin{longtable}{|M|M|N|}

在此处输入图片描述

\documentclass{article}

\usepackage{longtable}
\usepackage{lipsum, array}

\begin{document}

\begin{longtable}{
|p{\dimexpr(0.175\linewidth-2\tabcolsep-1.5\arrayrulewidth)}
|p{\dimexpr(0.175\linewidth-2\tabcolsep-1.5\arrayrulewidth)}
|p{\dimexpr(0.65\linewidth-2\tabcolsep-\arrayrulewidth)}|}
\hline  
1 & 1.1 \par 1.2\par 1.3 & \lipsum[1]\\\hline  
 2 & 2.1 & \lipsum[2] \\ \hline  
 \end{longtable} 
\end{document}

可以肯定的是,我会选择不同的布局,使用书签规则,没有垂直规则。

在此处输入图片描述

\documentclass{article}

\usepackage{longtable}
\usepackage{lipsum, array}

\newcolumntype{O}{p{\dimexpr(0.175\linewidth-1.5\tabcolsep)}}
\newcolumntype{P}{p{\dimexpr(0.65\linewidth-\tabcolsep)}}

\begin{document}

\begin{longtable}{@{}OOP@{}}
    \toprule \addlinespace[1ex]
    1 & 1.1 \par 1.2\par 1.3 & \lipsum[1]\\\midrule  \addlinespace[1ex]
    2 & 2.1 & \lipsum[2] \\\cmidrule(l{\tabcolsep}){3-3}
      & 2.2\par 2.3 & \lipsum[2] \\ \midrule
     \end{longtable}

\end{document}

相关内容