用於 TOC 頁碼的小寫字母/小寫字母

用於 TOC 頁碼的小寫字母/小寫字母

我在文件中同時使用阿拉伯頁碼(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}

相關內容