我只是想知道是否有一个 LaTeX 工具可以将文本段落变成完美的矩形。效果如下图所示
答案1
参数为\parfillskip
;最好增加,\emergencystretch
不要将所有不良内容限制在一行中。段落应该足够长。
\documentclass{article}
\usepackage{microtype}
\usepackage{kantlipsum}
\setlength{\parindent}{0pt}
\setlength{\parskip}{.5\baselineskip}
\setlength{\parfillskip}{0pt} % don't fill the last line
\setlength{\emergencystretch}{.5\textwidth} % not to get preposterously bad lines
\begin{document}
\kant[1-3]
\end{document}
如果你用组合结尾,你可以在单个段落上获得相同的行为
... here ends the paragraph.%
{\parfillskip=0pt \emergencystretch=.5\textwidth \par}
注意括号:段落结束后设置将被撤消。
在段落末尾,当\par
检测到 时(通常 TeX 会在看到空行时自动插入),TeX 会删除可能存在的水平粘连(空格),然后发出
\penalty10000 % no break here or the next glue would be removed
\hskip\parfillskip
\penalty-10000 % force a break
\parfillskip
的通常值为0pt plus 1fill
,因此通常这会使最后一行向右偏移。如果我们将其设置为0pt
,最后一行将被填满。当然,TeX 必须能够找到合适的换行符序列,否则它将设置一个行数未满的段落。通常,它会倾向于将所有不良内容集中在一行中;通过设置\emergencystretch
为正值,TeX 可能会重新考虑换行符并将不良内容分布到所有行上。请参阅 TeXbook 第 100 页和练习 14.15(关于现代小说家)。
答案2
可能有更好的解决方案,但\linebreak
在段落末尾使用快速解决方案似乎有效:
\documentclass{article}
\begin{document}
\noindent
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget ante
pretium leo aliquet ultricies. Aenean ultrices facilisis sem nec
tempus. Aenean pretium odio eget diam congue feugiat. Sed faucibus
erat vel risus lobortis sit amet tincidunt justo mollis. Mauris id
volutpat sem. Praesent bibendum, dui vel tempus dictum, nisi risus
hendrerit eros, sed faucibus orci felis in neque. Vivamus ut nibh
lectus. Sed sit amet dolor eget diam tempus tempus vitae eget
leo. Cras imperdiet risus id ante molestie tincidunt. Mauris nec nunc
orci, vitae auctor velit. Proin gravida quam sit amet nulla tempor
condimentum auctor tellus facilisis.\par\bigskip
\noindent
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget ante
pretium leo aliquet ultricies. Aenean ultrices facilisis sem nec
tempus. Aenean pretium odio eget diam congue feugiat. Sed faucibus
erat vel risus lobortis sit amet tincidunt justo mollis. Mauris id
volutpat sem. Praesent bibendum, dui vel tempus dictum, nisi risus
hendrerit eros, sed faucibus orci felis in neque. Vivamus ut nibh
lectus. Sed sit amet dolor eget diam tempus tempus vitae eget
leo. Cras imperdiet risus id ante molestie tincidunt. Mauris nec nunc
orci, vitae auctor velit. Proin gravida quam sit amet nulla tempor
condimentum auctor tellus facilisis.\linebreak
\end{document}