我使用以下取自网上的代码来强调章节标题
\makeatletter
\sectionfont{\ulemheading{\uuline}}
\let\oldsection\section
\def\section{\@ifstar\s@section\@section}
\newcommand{\@section}[2][\relax]{\oldsection{\llap{\rlap{\hspace{\textwidth}\llap{#1}}\protect\phantom{\thesection\quad}}#2}}
\newcommand{\s@section}[2][\relax]{\oldsection*{\llap{\rlap{\hspace{\textwidth}\llap{#1}}}#2}}
\makeatother
使用此代码后,\section
我得到以下结果:
但是,我希望下划线到达行末,如下所示:
我尝试手动在章节标题中添加空格,但结果却很难调整,特别是因为我有太多章节。
我怎样才能让下划线移到页面边缘?
答案1
最好直接绘制规则,而不是使用\uuline
。绘制延伸整个文本宽度的规则的一种简单方法是\hrule
。例如:
\makeatletter
\let\oldsection\section
\def\section{\@ifstar\s@section\@section}
\newcommand{\@section}[2][\relax]{\oldsection[#1]{#2}\hrule\bigskip}
\newcommand{\s@section}[1]{\oldsection*{#1}\hrule\bigskip}
\makeatother
\vspace
您可以通过在 周围添加正数或负数来微调线的位置\hrule
。
关于 MWE 的备注:
如果我理解正确的话,你的想法如下:
- 使用 来
\sectionfont{\ulemheading{\uuline}}
给章节名称加下划线。 - 将部分标题的宽度更改为文本宽度,以延长下划线。
虽然这可能在您的设置中起作用,但总的来说这不是一个好主意,因为这也会弄乱可能的目录。
我不完全理解您的 MWE 的作用(或它应该做什么),但在您的 MWE 中的定义之后,和都\section
接受\section*
一个可选参数,该参数排版向右对齐。这不是 LaTeX 的标准行为:通常,只\section
应该接受一个可选参数,该参数应该是目录的章节标题的变体。 \section*
不会向目录添加条目,因此不需要可选参数。因此,\@section
应该有两个参数,其中#2
是章节标题,并且\s@section
应该有一个参数,即章节标题。
编辑:
- 模仿 MWE,现在
*
和可选参数[]
也起作用了。 - 解释 MWE 的问题