我正在LaTeX中创建一个报告,其中涉及到几个表。我卡住了,因为我在表格中的单元格数据超过了页面的宽度。我能否以某种方式将文本换行,使其落入表中相同单元格中的下一行?

它是否与桌子的宽度有关?但由于它超出了页面的宽度,会有什么不同吗?


当前回答

如果你想要包装你的文本,但保持对齐,那么你可以包装单元格在一个迷你页面或varwidth环境(varwidth来自varwidth包)。Varwidth将“与内容一样宽,但不超过X”。您可以创建一个自定义列类型,它的作用类似于“p{xx}”,但是使用

\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}

这可能需要数组包。然后当你使用像\begin{tabular}{llM{2in}}这样的东西时,前两列我们是正常的左对齐,第三列将是正常的左对齐,但如果它超过2in,那么文本将被换行。

其他回答

使用p{width}作为列说明符,而不是l/r/c。

\begin{tabular}{|p{1cm}|p{3cm}|}
  This text will be wrapped & Some more text \\
\end{tabular}

编辑:(根据评论)

\begin{table}[ht]
    \centering
    \begin{tabular}{p{0.35\linewidth} | p{0.6\linewidth}}
      Column 1  & Column2 \\ \hline
      This text will be wrapped & Some more text \\
      Some text here & This text maybe wrapped here if its tooooo long \\
    \end{tabular}
    \caption{Caption}
    \label{tab:my_label}
\end{table}

我们得到:

在常规的表格环境中,您希望使用p{width}列类型,正如marcog所指出的那样。但这迫使你给出明确的宽度。

另一个解决方案是tabularx环境:

\usepackage{tabularx}
...
\begin{tabularx}{\linewidth}{ r X }
    right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\\
\end{tabularx}

所有X列的宽度相同。你可以通过在格式声明中设置\hsize来影响它:

>{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} X

但所有的因素加起来必须是1,我想(我从LaTeX同伴那里得到的)。还有包表,它将调整列宽以平衡行高。有关详细信息,您可以通过texdoc表格(在TeXlive中)获取每个包的文档。

如果你想要包装你的文本,但保持对齐,那么你可以包装单元格在一个迷你页面或varwidth环境(varwidth来自varwidth包)。Varwidth将“与内容一样宽,但不超过X”。您可以创建一个自定义列类型,它的作用类似于“p{xx}”,但是使用

\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}

这可能需要数组包。然后当你使用像\begin{tabular}{llM{2in}}这样的东西时,前两列我们是正常的左对齐,第三列将是正常的左对齐,但如果它超过2in,那么文本将被换行。

我喜欢表格包的简单性:

\usepackage{tabulary}
...
\begin{tabulary}{\linewidth}{LCL}
    \hline
    Short sentences      & \#  & Long sentences                                                 \\
    \hline
    This is short.       & 173 & This is much loooooooonger, because there are many more words.  \\
    This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \\
    \hline
\end{tabulary} 

在本例中,您根据\textwidth来安排表的整个宽度。比如0.4。然后其余的工作由包自动完成。

大部分示例摘自http://en.wikibooks.org/wiki/LaTeX/Tables。

\begin{table}
 \caption{ Example of force text wrap}
 \begin{center}
  \begin{tabular}{|c|c|}
   \hline
   cell 1       &   cell 2 \\   \hline
   cell 3                &       cell 4 & & very big line that needs to be wrap. \\ \hline
   cell 5       &   cell 6 \\   \hline
  \end{tabular}
  \label{table:example}
 \end{center}
\end{table}