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