
Я использую в своем документе как арабскую (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
пакет для настройки внешнего вида toc.
\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 не предоставляет комбинацию атрибутов шрифта sans-serif/small-caps/bold. Поэтому приведенный ниже код генерирует номера страниц serif/non-bold small-caps в ToC.
\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}