当没有可用空间时将整个单词移动到下一行

当没有可用空间时将整个单词移动到下一行

表格中是否有任何选项可以在单词长度大于固定单元格大小时将整个单词移动到下一行?

目前我使用

\begin{tabular}{ | p{2cm} | }

结果是这种格式

+---------+
| First t-|
| hing    |
+---------+

但是我正在寻找这种形状

+---------+
| First   |
| thing   |
+---------+

答案1

您可以使用\raggedright

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{array}

\begin{document}

\begin{tabular}{|p{2cm}|p{2cm}|}
  First longerword & First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

\vspace{\baselineskip}

\begin{tabular}{|>{\raggedright}p{2cm}|>{\raggedright\arraybackslash}p{2cm}|}
  First longerword & First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

\end{document}

第二种将在列的每个单元格中tabular包含一个,这将避免连字符。\raggedrightp

请注意,您需要加载array包才能使其工作。您还需要\arraybackslash至少在最后一列中\\正确结束表格行。

输出:

输出

如果您只需要在几个单元格中使用此功能,那么您也可以\raggedright在以下单元格中使用:

\begin{tabular}{|p{2cm}|p{2cm}|}
  \raggedright First longerword & \raggedright\arraybackslash First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

如果有多个列,还可以定义自己的列类型:

\newcolumntype{R}{>{\raggedright\arraybackslash}p{2cm}}

\begin{tabular}{|R|R|}
  First longerword & First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

答案2

另一种可能性是通过设置 来避免连字符\hyphenpenalty=10000。我已使用此设置定义了一个新列。您也可以使用列将其添加到单个单元格中p

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{array}
\newcolumntype{D}[1]{>{\hyphenpenalty=10000}p{#1}}


\begin{document}

\begin{tabular}{|p{2cm}|p{2cm}|}
  First longerword & First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

\vspace{\baselineskip}

\begin{tabular}{|D{2cm}|D{2cm}|}    
  First longerword & First longerword \\
  Second Thing & Second Thing \\
\end{tabular}

\end{document}

在此处输入图片描述

相关内容