是否有一个工具可以把段落变成矩形?

是否有一个工具可以把段落变成矩形?

我只是想知道是否有一个 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}

相关内容