Маленькие заглавные/маленькие буквы для нумерации страниц оглавления

Маленькие заглавные/маленькие буквы для нумерации страниц оглавления

Я использую в своем документе как арабскую (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}

Связанный контент