我想使用选项 counterwithin 来获取我的编号为 I、I.1.、I.2、..、II、II.1、II.2、...
我使用以下最小脚本
\documentclass[11pt, a4paper, twoside, openany]{scrbook}
\usepackage{chngcntr}
\counterwithin{chapter}{part}
\begin{document}
\tableofcontents
\part{This is part 1}
\chapter{This is I.1}
\part{This is part 2}
\chapter{This is II.1}
\end{document}
这是我所希望的,但在目录中,不知何故,数字和章节名称之间没有足够的空间。随着罗马数字变长,数字和文本甚至重叠。
答案1
您可以使用tocloft
和更改numwidth
:
\setlength{\cftchapnumwidth}{2em}
改变2em
成你想要的任何内容。
\documentclass[11pt, a4paper, twoside, openany]{scrbook}
\usepackage{chngcntr}
\usepackage{tocloft}
\counterwithin{chapter}{part}
\setlength{\cftchapnumwidth}{2em}
\begin{document}
\tableofcontents
\part{This is part 1}
\chapter{This is I.1}
\part{This is part 2}
\chapter{This is II.1}
\end{document}
您可以以类似的方式对part
、sec
subsec
和执行相同操作。请subsubsec
para
执行subpara
\setlength{\cftXnumwidth}{<dimension>}
哪里X
必须替换为part
sec
etc.
答案2
更新:使用 KOMA-Script 3.15 或更新版本很容易。只需使用新命令\RedeclareSectionCommand
:
\RedeclareSectionCommand[counterwithin=part,tocnumwidth=2em]{chapter}
请注意,该包chngcntr
不是必需的。
代码:
\documentclass[open=any]{scrbook}
\RedeclareSectionCommand[
counterwithin=part,
tocnumwidth=2.5em
]{chapter}
\begin{document}
\tableofcontents
\part{This is part 1}
\chapter{This is I.1}
\part{This is part 2}
\chapter{This is II.1}
\end{document}
您可以使用该包tocstyle
它是 KOMA-Script-bundle 的一部分。
\documentclass[openany]{scrbook}
\usepackage{tocstyle}
\usetocstyle{KOMAlike}
\usepackage{chngcntr}
\usepackage{blindtext}
\counterwithin{chapter}{part}
\begin{document}
\tableofcontents
\part{This is part 1}
\blinddocument\blinddocument
\part{This is part 2}
\blinddocument\blinddocument
\end{document}
您必须运行代码几次才能获得:
或者您可以使用以下选项toc=flat
:
\documentclass[openany,toc=flat]{scrbook}
\usepackage{chngcntr}
\usepackage{blindtext}
\counterwithin{chapter}{part}
\begin{document}
\tableofcontents
\part{This is part 1}
\blinddocument\blinddocument
\part{This is part 2}
\blinddocument\blinddocument
\end{document}
运行两次即可获得