我有一份文档,其中有多个颜色框,每个颜色框包含 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
用于环境形式)。