我经历过这个问题就我的情况而言,表格中有重叠的文本
这是我的 MWE
\documentclass[a4paper,10pt]{book}
\usepackage{pdflscape} % to change certain pages to landscape mode
\usepackage{longtable} % for tables spanning multiple pages
\begin{document}
This is my example
\begin{landscape}
\begin{tabular}{|p{5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
ABCD EFGH ABCD EFGH ABCD EFGH ABCD EFGH ABCD EFGH & H & H & H & H & OCH2-CH=C(CH3)CH2CH2CH=C(CH3)2 & H \tabularnewline
\hline
\end{tabular}
\newline
\end{landscape}
\end{document}
我无法扩展/压缩列大小。
问题是如何修复第 6 列溢出的文本。而第 1 列则适合。
我是否应该手动将文本连字符化以适合所需的单元格宽度?
答案1
此版本切换了类别代码,因此不能用作另一个命令的参数,但我认为在这里可以正常工作。惩罚0允许在这些点处休息,如果有些点比其他点更可取,那么你可以对可取的点给予负惩罚,对不可取的点给予正惩罚。
\documentclass[a4paper,10pt]{book}
\usepackage{pdflscape} % to change certain pages to landscape mode
\usepackage{longtable} % for tables spanning multiple pages
\usepackage{array}
\newcolumntype{P}[1]{>{\raggedright\arraybackslash\hspace{0pt}\mybreaks}p{#1}}
\begingroup
\catcode`=\active
\catcode`-\active
\catcode`)\active
\gdef\mybreaks{%
\catcode`=\active\edef={\string=\penalty0 }%
\catcode`)\active\edef){\string)\penalty0 }%
\catcode`-\active\edef-{\string-\penalty0 }}
\endgroup
\begin{document}
This is my example
\begin{landscape}
\begin{tabular}{|P{5cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|P{2cm}|}
\hline
ABCD EFGH ABCD EFGH ABCD EFGH ABCD EFGH ABCD EFGH & H & H & H & H & OCH2-CH=C(CH3)CH2CH2CH=C(CH3)2 & H \tabularnewline
\hline
\end{tabular}
\newline
\end{landscape}
\end{document}