我正在尝试在 中的居中章节标题之前和之后添加代码scrbook
。我尝试通过重新定义 来做到这一点\chapterlinesformat
。
\documentclass[twoside=semi]{scrbook}
\renewcommand{\raggedchapter}{\centering}
\renewcommand{\chapterlinesformat}[3]{Before~#3~After}
\begin{document}
\chapter*{Test}
\end{document}
但这不起作用。
我猜这是因为#3
它被格式化并且包含\@@par
在其末尾。(我从回答先前的问题。
这个问题与另一个。但那里给出的方法对我来说不起作用:
- 第一个答案使用
titlesec
,它不应该与KOMA-Script一起使用。 - 第二个答案需要在目录之后添加额外的代码。但在我的用例中,所有配置都必须在序言中进行(或者更具体地说,在类文件中)。
我目前的想法是通过重新定义以包含必要的附加代码来实现第二种方法\tableofcontents
。但这对我来说似乎有点不合时宜。
答案1
正如您(和 KOMA-Script 文档)所指出的,该参数#3
包含\@@par
在其最后,这正是让您感到困扰的地方。KOMA-Script 没有提供在标题后插入文本的钩子。
最简单的破解方法是删除\@@par
并将其插入到插入的代码后。
\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\renewcommand*\raggedchapter{\centering}
\makeatletter
\def\@strip@trailing@@par#1\@@par{#1}
\newcommand*\@appendkomachaptertitle[2]{\@strip@trailing@@par #1#2\@@par}
\renewcommand*\chapterlinesformat[3]{Before~\@appendkomachaptertitle{#3}{~After}}
\makeatother
\begin{document}
\chapter*{Test}
\end{document}