其实我已经找到了答案居中文本左/中/右问题:
最大的问题是如何在文本部分之间添加填充规则。我尝试了以下方法,但遇到了规则与文本重叠的问题:
\noindent \Large \makebox[0pt][l]{Number}%
\makebox[\textwidth][c]{\hrulefill Title \hrulefill}%
\makebox[0pt][r]{}
如何正确修复它?
答案1
两种方法:
明确计算比对
{\Large \setbox0=\hbox{Title}
\setbox1=\hbox{Number}
\dimen0=\hsize \advance\dimen0 by-\wd0
\divide\dimen0 by 2
\dimen1=\dimen0 \advance\dimen1 by-\wd1
\hbox to\hsize{\box1\leaders\hrule\hskip\dimen1 plus1fil
\box0\leaders\hrule\hskip\dimen0plus 1fil}}
为了克服舍入误差,通过添加使得引线可拉伸plus 1fil
。
采用 TeX 的排版算法(首选)
给第一个规则填充(在Number
和之间Title
)一个最小宽度零,加上 1fill 的可拉伸性。但让第二个规则填充(在 之后Title
)至少与文本 一样宽Number
,再加上 1fill 的可拉伸性。然后 TeX 对两个规则填充使用相同的可拉伸性,但为第二个规则填充添加最小宽度,使其宽度增加Number
,这正是所需的。
\hbox to\hsize{\Large
\setbox0=\hbox{Number}\dimen0=\wd0
\box0 \leaders\hrule\hfill
Title\leaders\hrule\hskip\dimen0 plus 1fill}