我在文档中同时使用阿拉伯数字(1、2、...)和罗马数字(I、II、...)页码。但是,普通罗马数字在目录中显得太显眼(例如 XXVIII)。小写罗马数字对我来说也不好看(xxviii)。
我想实现以下目标:
- 每页底部的罗马页码应为标准大小的大写字母。
- 每页底部的阿拉伯页码应为标准大小的数字。
- 目录中的罗马页码应为标准尺寸的小型大写字母或较小的大写字母。(它们不应像常规那样宽)
- 目录中的阿拉伯页码应为标准大小的数字。
以下是 MWE,显示我现在拥有的内容。
\documentclass{scrartcl}
\begin{document}
\pagenumbering{Roman}
\setcounter{page}{27}
\tableofcontents
\newpage
\section{Section}
\newpage
\pagenumbering{arabic}
\section{Section}
\end{document}
如您所见,我使用 KOMA-Script。我愿意使用 中的功能tocstyle
,因为我已经使用过这个包(请参阅KOMA-Script:罗马数字对齐错误)。
注意:这道题一开始错误地要求使用 来解决问题tocloft
。这就是为什么有些答案使用 的原因。
答案1
随着即将推出 KOMA-Script 版本 3.20 tocstyle
不需要。已经有一个预发布在 KOMA-Script 网站上。
\documentclass{scrartcl}[2016/10/23]
\newcommand\pagenumbertocfont[1]{\ifisinteger{#1}{#1}{\tiny #1}}
\RedeclareSectionCommands[
tocdynnumwidth,
tocpagenumberbox=\hbox,
tocpagenumberformat=\pagenumbertocfont
]{part,section,subsection,subsubsection,paragraph}
\RedeclareSectionCommands[
tocpagenumberformat=\usekomafont{disposition}\pagenumbertocfont
]{part,section}
\usepackage{blindtext}
\begin{document}
\pagenumbering{Roman}
\setcounter{page}{27}
\tableofcontents
\clearpage
\part{Part}
\blinddocument
\cleardoubleoddpage
\pagenumbering{arabic}
\blinddocument
\end{document}
结果:
随着当前版本 3.19a您可以pagenumberhook
从包中使用tocstyle
。
\documentclass{scrartcl}
\usepackage[tocindentauto]{tocstyle}
\usetocstyle{KOMAlike}
\settocfeature{pagenumberbox}{\hbox}
\newcommand\pagenumbertocfont[1]{\ifisinteger{#1}{#1}{\tiny #1}}
\settocstylefeature{pagenumberhook}{\pagenumbertocfont}
\settocstylefeature[-1]{pagenumberhook}{\pagenumbertocfont}
\settocstylefeature[1]{pagenumberhook}{\pagenumbertocfont}
\usepackage{blindtext}
\begin{document}
\pagenumbering{Roman}
\setcounter{page}{27}
\tableofcontents
\clearpage
\part{Part}
\blinddocument
\cleardoubleoddpage
\pagenumbering{arabic}
\blinddocument
\end{document}
这也适用于标准类article
。但您必须scrextend
另外加载包。
\documentclass{article}
\usepackage{scrextend}
\usepackage{tocstyle}
\usetocstyle{standard}
\settocfeature{pagenumberbox}{\hbox}
\newcommand\pagenumbertocfont[1]{\ifisinteger{#1}{#1}{\tiny #1}}
\settocstylefeature{pagenumberhook}{\pagenumbertocfont}
\settocstylefeature[-1]{pagenumberhook}{\pagenumbertocfont}
\settocstylefeature[1]{pagenumberhook}{\pagenumbertocfont}
\usepackage{blindtext}
\begin{document}
\pagenumbering{Roman}
\setcounter{page}{27}
\tableofcontents
\clearpage
\part{Part}
\blinddocument
\cleardoubleoddpage
\pagenumbering{arabic}
\blinddocument
\end{document}
答案2
也许最简单的事情就是使用tocloft
包来设置目录的外观。
\documentclass{scrartcl}
\usepackage{tocloft}
\renewcommand\cftsecfont{\bfseries\sffamily}
\renewcommand\cftsecpagefont{\bfseries\small\sffamily}
\begin{document}
\pagenumbering{Roman}
\setcounter{page}{27}
\tableofcontents
\newpage
\section{Section}
\newpage
\pagenumbering{arabic}
\section{Section}
\end{document}
为了进行比较,这是没有tocloft
设置的:
答案3
由于您已设置标签tocloft
,我假设您有兴趣使用该包来修改目录的外观。以下代码显示了如何完成此操作。请注意使用\cftsetrmarg
和\cftsetpnumwidth
来增加为页码预留的空间量——罗马数字往往比阿拉伯数字占用更多的空间。
Computer Modern 字体系列不提供无衬线/小型大写/粗体字体属性组合。因此,以下代码会在目录中生成衬线/非粗体小型大写页码。
\documentclass{scrartcl}
\usepackage{tocloft}
\cftsetrmarg{4em} % set aside more space for roman numerals
\cftsetpnumwidth{3.5em}
\renewcommand\cftsecfont{\bfseries\sffamily}
\renewcommand\cftsubsecfont{\bfseries\sffamily}
\renewcommand\cftsubsubsecfont{\bfseries\sffamily}
\renewcommand\cftsecpagefont{\scshape}
\begin{document}
%%\pagenumbering{roman}
\renewcommand\thepage{\scshape\roman{page}} % <- new
\setcounter{page}{37}
\tableofcontents
\newpage
\section{Section}
\subsection{Subsection}
\subsubsection{A very very very very very very very very very very very very very very very very very very very very very very very very very long subsubsection header}
\newpage
\pagenumbering{arabic}
\section{Section}
\end{document}