考虑以下最小工作示例(MWE):
\documentclass{scrbook}
\begin{document}
\pagenumbering{Roman}%
\tableofcontents
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\pagenumbering{arabic}%
\chapter{Arabic Chapter}
\chapter{Arabic Chapter}
\chapter{Arabic Chapter}
\end{document}
结果截图:
问题说明:
如您所见,字母比看起来丑陋的Roman
字母要宽。我怎样才能将它们排成一行?\textwidth
right align
Roman numbers
更新:在玩的时候\documentclass{book}
,突然TOC
出现了预期的情况。现在我很好奇——问题可能出在哪里scrbook
?
答案1
默认情况下,页码在框内右对齐\@pnumwidth
(默认为 1.55em)。此框对于罗马数字来说太小了。
假设只有带有罗马页码的章节:
\RedeclareSectionCommand[
tocpagenumberbox=\mbox
]{chapter}
或者
\RedeclareSectionCommand[
tocpagenumberbox={\makebox[3em][r]}% adjust the width to your needs
]{chapter}
例子:
\documentclass{scrbook}
\RedeclareSectionCommand[
tocpagenumberbox=\mbox
]{chapter}
\begin{document}
\pagenumbering{Roman}
\tableofcontents
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
\chapter{Roman Chapter}
%\section{Roman Section}
\chapter{Roman Chapter}
\cleardoubleoddpage
\pagenumbering{arabic}%
\chapter{Arabic Chapter}
\chapter{Arabic Chapter}
\chapter{Arabic Chapter}
\end{document}
结果:
如果还有一些章节等使用罗马页码,那么您可以更改\@pnumwidth
(也适用于标准类别):
\makeatletter
\renewcommand\@pnumwidth{3em}
\makeatother
或者你可以使用\RedeclareSectionCommands
:
\RedeclareSectionCommands[
tocpagenumberbox={\makebox[3em][r]}% adjust the width to your needs
]{chapter,section,subsection}
pagenumberwidth
下一个 KOMA-Script 版本 3.27 将提供目录条目样式的选项tocline
。带前缀toc
( ) 的此选项可在或topagenumberwidth
中使用。\RedeclareSectionCommand
\RedeclareSectionCommands
\RedeclareSectionCommands[
tocpagenumberwidth=3em% needs at least version 3.27.3161
]{chapter,section,subsection}
如果你想测试这个新选项,你可以安装从 KOMA-Script 网站预发布。