LaTeX 在盒子前破损

LaTeX 在盒子前破损

我有一份文档,其中有多个颜色框,每个颜色框包含 1-3 个单词,每行一个,以 分隔,。想象一下,在一行中排版几个框,这样3cm文档的右边距就只有 的空间。但下一个框很5cm宽。

我希望将此框设置在下一行,因为它不再适合当前行。相反,它会在同一行排版并超出右边距 2 厘米。有时,对于较长的框,它们不仅会超出右边距,还会超出纸张。只有当前一个框已经超出右边距时,才会插入换行符。

如果下一个框不再适合当前行,我该如何告诉 LaTeX 在下一个框之前插入换行符?而不仅仅是如果前一个框也不适合?我搜索了网络,但找不到任何东西。到目前为止,我找到的所有答案都与框内的多行文本有关,而这不是我的问题。我需要多个单行框排版在多行上。我无法想象 LaTeX 无法完成这么简单的事情!提前致谢 :)

答案1

使用\filbreak技巧(TeXbook,第 111 页),但使用水平粘连(另请参阅https://tex.stackexchange.com/a/72787/4427)。

\documentclass{article}
\usepackage{showframe} % just for showing the margins

\newcommand{\mybox}[1]{%
  \hfil\penalty0\hfilneg
  \fbox{#1}%
}
\newenvironment{awkwardpar}
 {\par\linepenalty=5000 }
 {\par}

\begin{document}

\begin{awkwardpar}
Some word \mybox{some word} xyz \mybox{some word again} 
and \mybox{some} Some word \mybox{some word}
other words \mybox{some word again}
Some word \mybox{some} other words \mybox{some word again}
Some word \mybox{some word}
other words \mybox{some word again} Some word \mybox{some word}
xyz \mybox{some word again} and \mybox{some}
other words \mybox{some word again} Some word \mybox{some word}
other words \mybox{some word again}
\end{awkwardpar}

\end{document}

在此处输入图片描述

更简单地说:使用\raggedright(或flushright用于环境形式)。

相关内容