目录页码的小写字母

目录页码的小写字母

我在文档中同时使用阿拉伯数字(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}

相关内容