答案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}