文本居中,但行长几乎相等

文本居中,但行长几乎相等

我的目标是排版简短、居中的文本,使行长差异最小。或者,换句话说:使块的宽度最小,而不增加其高度。

我目前正在通过手动实验来进行此操作,但这无法扩展。

\documentclass{article}

\usepackage{xltxtra}
\usepackage[paperheight=98mm,paperwidth=65mm,top=3mm,left=3mm,right=3mm,bottom=3mm,showframe]{geometry}
\setlength{\parskip}{5mm}
\newcommand{\shortlipsum}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing.}

\begin{document}
\begin{center}

\shortlipsum

\parbox{48mm}{\centering\shortlipsum}

\parbox{44mm}{\centering\shortlipsum}

\parbox{43mm}{\centering\shortlipsum}

\end{center}
\end{document}

前一个代码块的渲染版本

第一段是默认的居中格式,然后我尝试将其放入一个越来越小的框中,直到第四段的行数增加。因此,第三段将是此处所需的格式(我没有尝试高于 1mm 的分辨率,因此没有加分)。

我发现测量高度并不容易,因为高度可能会根据最后一行的深度而略有变化。我想接受这些高度变化。我试着数了一下线的数量(计算文本块中的行数) 但通过这种方式我根本就没能找到解决方案。

我目前正在使用 XeLaTeX 来获取系统字体,但如果这对找到一个好的解决方案有任何帮助,我也可能会切换到 LuaLaTeX。

答案1

在此处输入图片描述

\documentclass{article}

% just use fontspec, not this \usepackage{xltxtra}
\usepackage[paperheight=98mm,paperwidth=65mm,top=3mm,left=3mm,right=3mm,bottom=3mm,showframe]{geometry}
\setlength{\parskip}{5mm}
\newcommand{\shortlipsum}{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing.}

\long\def\zzz#1#2{%
\dimen0=#1\relax
\sbox0{\parbox{\dimen0}{\centering#2\par\global\count1=\prevgraf}}%
\loop
\advance\dimen0 -1mm\relax
\sbox2{\parbox{\dimen0}{\centering#2\par\global\count3=\prevgraf}}%
\ifnum\count3<2\relax\count3=2\relax\fi
\ifnum\count3=\count1\relax
\setbox0\box2\relax
\repeat
\usebox0\relax
}

\begin{document}
\begin{center}

\shortlipsum


\zzz
{48mm}% initial guess
{\shortlipsum} % text

\end{center}
\end{document}

相关内容