我是 tex 新手,遇到了表格超出页面的问题,因为内容太宽。如果文本对于表格宽度来说太长,我希望表格将文本换行到一行或多行。
我猜这不是默认行为。我该如何启用它?
这是我的最小 tex 代码:
\documentclass[12pt,a4paper,oneside,fleqn]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{geometry}
\geometry{a4paper,left=15mm,right=15mm, top=1cm, bottom=2cm}
\usepackage{euler}
\usepackage{graphicx}
\parindent 0pt
\setlength{\abovedisplayskip}{0pt}
\begin{document}
\begin{tabular}[ht]{|l|c|l|}
\hline
a & b & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\\
\hline
\end{tabular}
\end{document}
答案1
您可以通过指定段落样式来固定列宽p{<len>}
,也可以使用不同的表格环境,该环境会根据内容进行拉伸,直至达到文本块的最大宽度。后者由tabularx
包裹tabularx
它使用附加的表宽度参数以及可拉伸列说明符来定义环境X
。
第一个建议的示例:
\documentclass[12pt]{report}
\usepackage[a4paper,left=15mm,right=15mm, top=1cm, bottom=2cm]{geometry}% http://ctan.org/pkg/geometry
\begin{document}
\noindent\begin{tabular}{|l|c|p{0.7\linewidth}|}
\hline
a & b & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\\
\hline
\end{tabular}
\end{document}
第二条建议的示例:
\documentclass[12pt]{report}
\usepackage[a4paper,left=15mm,right=15mm, top=1cm, bottom=2cm]{geometry}% http://ctan.org/pkg/geometry
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\begin{document}
\noindent\begin{tabularx}{\linewidth}{|l|c|X|}
\hline
a & b & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\\
\hline
\end{tabularx}
\end{document}
这种tabularx
方法很简单,因为您不必担心指定与页面上剩余列空间完全匹配的列宽。但是,<len>
使用列说明符时可以计算适当的值p{<len>}
。
答案2
LaTeX 的表格格式算法有几个缺点。一个缺点是它不会自动将文本换行到单元格中,即使文本超出了页面的宽度。对于您知道将包含一定数量文本的列,建议您使用 p 属性并指定所需的列宽度(尽管可能需要反复试验才能获得所需的结果)。使用 m 属性使行与框的中间对齐,使用 b 属性使行与框的底部对齐。
用于p{width}
设置列的宽度。下面是根据您的示例:
\begin{tabular}[ht]{|l|c|p{5cm}|}
\hline
a & b & Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\\
\hline
\end{tabular}
如果您是 LaTeX 新手,您应该使用 Wikibooks LaTeX 书籍(上面的链接),它有很多基本的技巧和窍门。
答案3
环绕完成p{LENGTH}
。只需将您的更改|l|
为|p{2cm}|
(或您需要的任何长度)