Boyd 等人撰写的《凸优化》中的章节编号,使用 Koma 脚本

Boyd 等人撰写的《凸优化》中的章节编号,使用 Koma 脚本

我喜欢书中章节编号的排版方式凸优化,即章节编号放在页边距。在此处输入图片描述

我如何使用包scrbook中的类来实现这种风格KOMA-script

部分解决方案:代码片段似乎可以解决问题,但是,正如 cgnieder 在下面的评论部分指出的那样,这些数字彼此之间并不居中。

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

相关内容