正如所述这个问题我正在使用 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}}