如何对齐带下划线的文本和使用 \rule 创建的水平线

如何对齐带下划线的文本和使用 \rule 创建的水平线

正如所述这个问题我正在使用 tocloft 包来定制目录。

我们要在整个章节文本下划一条水平线,直到页码。因此,我们不能只将其用于\underline章节文本(因为这只会影响文本),而必须将其用于\rule划下划线。

但是,章节号的下划线可以直接放置,\underline因为我们希望在章节号的下划线和章节标题+页的下划线之间留有间隙。

正如您在以下代码片段中看到的,该行当前定位为[-0.5mm]...

\usepackage{tocloft}
\renewcommand{\cftchappresnum}{\underline} % chapter numbers are underlined
\renewcommand{\cftchapaftersnumb}{\rlap{\rule[-0.5mm]{0.96\textwidth}{.4pt}\hss}} % chapter entries are underlined as well

...然而这确实不是与前一个下划线正确对齐。

我认为现在的问题是: 正确的长度是多少(在ex?)移动该线以便它与同一行的下划线对齐?

还:正确的厚度是多少才能与下划线的厚度相同?

答案1

这样的事情怎么样?

\usepackage{calc}
\usepackage{tocloft}
\newlength\tocchaplength
\setlength\tocchaplength{\textwidth-\cftchapnumwidth}
\renewcommand\cftchapaftersnumb{\rlap{\underline{\hbox
to\the\tocchaplength{\hfil}}}}
\renewcommand\cftchappresnum{\underlinenumber}
\makeatletter
\def\underlinenumber#1\@cftasnum{\underline{#1}}
\makeatother

修改:第一个版本无法处理多个标记章节号(因此 10 及以上是错误的)。第二个版本无法处理非整数章节号。此版本似乎适用于任何章节号(只要数字不低于基线)。

修改 2:此版本增加了更多间距,以便下划线不会穿过降部。(\smash除非您执行的操作导致章节编号下降得太远,否则这其实没有必要。在这种情况下,下划线将穿过编号,但仍将与章节名称对齐。)

\usepackage{calc}
\usepackage{tocloft}
\newlength\tocchaplength
\setlength\tocchaplength{\textwidth-\cftchapnumwidth}
\renewcommand\cftchapaftersnumb{\rlap{\underline{\hbox
to\the\tocchaplength{\strut\hfil}}}}
\renewcommand\cftchappresnum{\underlinenumber}
\makeatletter
\def\underlinenumber#1\@cftasnum{\underline{\strut\smash{#1}}}
\makeatother
\renewcommand\cftchapafterpnum{\vadjust{\vskip1ex}}

相关内容