![Boyd 等人撰写的《凸优化》中的章节编号,使用 Koma 脚本](https://linux22.com/image/296400/Boyd%20%E7%AD%89%E4%BA%BA%E6%92%B0%E5%86%99%E7%9A%84%E3%80%8A%E5%87%B8%E4%BC%98%E5%8C%96%E3%80%8B%E4%B8%AD%E7%9A%84%E7%AB%A0%E8%8A%82%E7%BC%96%E5%8F%B7%EF%BC%8C%E4%BD%BF%E7%94%A8%20Koma%20%E8%84%9A%E6%9C%AC%20.png)
答案1
您可以使用链接解决方案的修改版本。在链接解决方案中,您有
\renewcommand*\othersectionlevelsformat[1]{%
\makebox[0pt][r]{%
\csname the#1\endcsname
\enskip
}%
}
这会将分节编号放在一个宽度为零的框中,该框与右侧对齐,这就是编号会卡在页边距中的原因。这可确保编号和标题之间的距离为 1en。不过,这是有\enskip
缺陷的。正如 KOMA-Script 手册所述\othersectionlevelsformat
三参数,第三个参数是对应的\the<counter
。更好的定义是
\renewcommand*\othersectionlevelsformat[3]{%
\makebox[0pt][r]{#3\enskip}%
}
现在定义已更正,我们可以调整它。为了使数字水平居中,您可以将第二个框放入第一个框中,并指定一定的宽度(例如 1.5 厘米),然后使内容居中:
\renewcommand*\othersectionlevelsformat[3]{%
\makebox[0pt][r]{\makebox[1.5cm][c]{#3\autodot}}%
}
\documentclass{scrartcl}
\renewcommand*\othersectionlevelsformat[3]{%
\makebox[0pt][r]{\makebox[1.5cm][c]{#3\autodot}}%
}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
将其调整为scrbook
和章节很容易:我们只需要为 做出相应的定义\chapterformat
。此命令具有不参数,我们用它\thechapter
来放置数字。
\documentclass{scrbook}
\newcommand*\marginnumber[1]{\makebox[0pt][r]{\makebox[1.5cm][c]{#1}}}
\renewcommand*\chapterformat{\marginnumber{\thechapter\autodot}}
\renewcommand*\othersectionlevelsformat[3]{\marginnumber{#3\autodot}}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}