我目前正在(尝试)让 KOMA-Script 在每个段落名称后添加一个点。这意味着,如果我写\paragraph{Test} Lorem Ipsum
,那么这应该会导致 LaTeX 将其排版为Test. Lorem Ipsum
,但当然会使用正确的字体和 的所有内容Test
。
阅读 KOMA-Script 指南后,我发现应该能够通过重新定义来获得此结果\paragraphformat
(参见位于 KOMA-Script 文档第 110 页顶部)。然而,KOMA-Script 似乎完全忽略了我重新定义的\paragraphformat
。
我在以下 MWE 中重现了该问题:
\documentclass{scrbook}
\renewcommand*{\paragraphformat}{\theparagraph.\enskip}
\begin{document}
\paragraph{Test} Lorem Ipsum
\end{document}
另外,我尝试用未定义的命令替换点,但什么也没发生。因此我猜想 LaTeX 完全忽略了我重新定义这个命令。
编辑:正如 campa 在评论中巧妙指出的那样,\paragraphformat
仅定义编号的格式。由于段落(至少在我的 MWE 中)没有编号,因此重新定义没有效果。看来\DeclareSectionCommand
和相关命令是用于我正在尝试做的事情。但是,虽然有很多选项可以配置,但在每个段落名称末尾添加一个点似乎不是其中之一。由于我目前没有太多时间,我采用了以下重新定义命令的 hacky 解决方案paragraph
:
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1.}}
答案1
您可以使用
\AddtoDoHook{heading/endgroup/paragraph}{\headingdot}
\newcommand*{\headingdot}[1]{.}
例子:
\documentclass{scrbook}
\AddtoDoHook{heading/endgroup/paragraph}{\headingdot}
\newcommand*{\headingdot}[1]{.}
\begin{document}
\paragraph{Test} Lorem Ipsum
\subparagraph{Foo} Text
\end{document}
或者你可以重新定义\sectioncatchphraseformat
:
\renewcommand*\sectioncatchphraseformat[4]{%
\hskip #2#3#4\Ifstr{#1}{paragraph}{.}{}%
}
例子:
\documentclass{scrbook}
\renewcommand*\sectioncatchphraseformat[4]{%
\hskip #2#3#4\Ifstr{#1}{paragraph}{.}{}%
}
\begin{document}
\paragraph{Test} Lorem Ipsum
\subparagraph{Foo} Text
\end{document}
结果和上面一样。