如何在 KOMA 课程中用规则填充标题?

如何在 KOMA 课程中用规则填充标题?

我正在自定义section标题scrartcl,并想尝试在部分标题填充行后添加一条规则。

正如第节所建议的那样12.8.KOMA 手册中,我没有直接在里面绘制规则\AddtoDoHook,而是创建了一个带有空参数的命令,以避免引入的参数出现问题\ExecuteDoHook。我尝试这样做:

\documentclass{scrartcl}

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    
    \usepackage{xhfill}
    \usepackage{blindtext}

%% ----------------------------------------
%%  The issue:
    \newcommand{\hfilllinegobble}[1]{\xrfill[0.4ex]{1.5pt}}
    \AddtoDoHook{heading/endgroup/section}{\hfilllinegobble}


\begin{document}
    \blinddocument
\end{document}

当我尝试运行这个程序时,没有输出,并且我收到以下错误消息,我不知道“胶水”是什么或如何修复它。

领导者没有得到适当的支持。\blinddocument

不过,我使用类似的方法在章节标题下方添加一行scrbook,效果很好:

\newcommand{\headinglinegobble}[1]{\vspace*{-1ex}\noindent\rule{\textwidth}{.5pt}} 

\AddtoDoHook{heading/endgroup/chapter}{\headinglinegobble}

我怎样才能修改节标题而不弄乱“胶水”?是否有更好的方法来自定义 KOMA 标题?

答案1

\@@par源代码中标题后面和前面都有一个\ExecuteDoHook{heading/endgroup/section}。因此您必须添加一个\leavevmode,该行将位于章节标题下方:

\AddtoDoHook{heading/endgroup/section}{\leavevmode\hfilllinegobble}

所以我建议重新定义\sectionlinesformat,例如:

\newcommand*{\hfilllinegobble}{\xrfill[0.4ex]{1.5pt}}
\newcommand*\originalsectionlinesformat{}
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand\sectionlinesformat[4]{%
   \originalsectionlinesformat{#1}{#2}{#3}{#4\Ifstr{#1}{section}{ \hfilllinegobble}{}}%
}

例子:

\documentclass{scrartcl}
%\usepackage[utf8]{inputenc}% only needed with outdated TeX distributions
\usepackage[T1]{fontenc}
\usepackage{xhfill}
\usepackage{blindtext}% only for dummy text

%% ----------------------------------------
%%  The issue:
\newcommand*{\hfilllinegobble}{\xrfill[0.4ex]{1.5pt}}
\newcommand*\originalsectionlinesformat{}
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand\sectionlinesformat[4]{%
   \originalsectionlinesformat{#1}{#2}{#3}{#4\Ifstr{#1}{section}{ \hfilllinegobble}{}}%
}

\begin{document}
\tableofcontents
\blinddocument
\end{document}

在此处输入图片描述

相关内容