我正在使用 KOMA 脚本的scrartcl
类并自定义了部分编号,如以下 MWE 所示:
\documentclass{scrartcl}
\begin{document}
\renewcommand{\thesection}{\alph{section}}
\section{Introduction}
\end{document}
现在我想用右括号(“)”替换节号后的点字符(“。”)。到目前为止,我发现的最佳解决方案是:
\renewcommand\sectionformat{\thesection)\enskip}
但是,我想知道这种方法是否值得推荐,或者是否有更规范的方法来实现这一点。特别是,我只想更改相关字符而不触及水平间距或前缀,在最好的情况下,我希望能够一次更改多个级别(部分、小节、段落等)。
答案1
komascript 类提供了在所有部分编号后是否加句号的选择。默认情况下,它们遵循 Duden 的建议,即所有数字标签后都不加句号,非数字标签后加句号。
至少这是手册上所说的,但实际情况并非如此:也许我没有正确阅读手册。
如果你够大胆,你可以重新定义 的含义\autodot
:
\makeatletter
\renewcommand*\autodot{\if@altsecnumformat)\fi}
\makeatother
完整示例。
\documentclass{scrartcl}
\renewcommand{\thesection}{\alph{section}}
\makeatletter
\renewcommand*\autodot{\if@altsecnumformat)\fi}
\makeatother
\begin{document}
\section{Title}
\subsection{Another}
\end{document}
但真正的解决方案确实是使用\sectionformat
。您可以在手册(当前版本的第 110 页)中看到,所有章节标题(从\section
下往上)的标准格式是\enspace
在数字(可能后跟句点)和标题之间有。
确实如此
\sectionformat{\thesection)\enspace}
才是出路。你需要改变全部但是,没有通用设置。
答案2
您所做的还可以,但也许您需要改变更多级别,如果是的话,您可能需要一个目录等等。
因此,让我们使用 blindtext 包将您的 MWE 扩展到整个文档:
\documentclass[ngerman, numbers=nodotatend]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{blindtext, lmodern}
\renewcommand{\thesection}{\alph{section})}
%\renewcommand\sectionformat{\thesection)\enskip}
\begin{document}
\tableofcontents{}
\blinddocument
\end{document}
renewcommand 只会将“)”添加到标题,而不会添加到目录中。
如果您需要重新定义更多标题,请仔细查看手册第 21.8 节有关“\DeclareSectionCommand[Einstellungen ]{Name }”的内容(德语版本、texdoc scrguide
命令行、英语版本texdoc scrguien
)。