在目录中对齐罗马页码

在目录中对齐罗马页码

当我添加目录并在开头使用罗马页码时,罗马页码没有右对齐。

梅威瑟:

\documentclass[twoside, openright]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{hyperref}

\newcommand{\uchapter}[1]{% add unnumbered chapter
    \phantomsection
    \chapter*{#1}
    \addcontentsline{toc}{chapter}{#1}}

\begin{document}
    
\pagenumbering{Roman}
\setcounter{page}{3}

\uchapter{Abstract}
\lipsum[1-2]
\tableofcontents
\uchapter{Abbildungsverzeichnis}
\uchapter{Tabellenverzeichnis}
\uchapter{Formelverzeichnis}
\uchapter{Symbolverzeichnis}
\uchapter{Abkürzungsverzeichnis}
\uchapter{Sperrvermerk}



\end{document}

我在网上找到的解决此问题的明显方法要么是使用与 KOMA 不兼容的软件包(tocloft),要么是使用过时的软件包(tocstyle)。我是否缺少解决此问题的选项或参数?

答案1

有不同方法可以扩大页码的可用空间。

如果只有罗马页码的章节条目,则可以使用以下方法仅扩大章节的空间

\DeclareTOCStyleEntry[
  pagenumberwidth=2.55em,% default is \@pnumwidth (default is 1.55em)
  rightindent=3.55em% default is \@tocrmarg (default is 2.55em)
]{tocline}{chapter}

例子:

\documentclass[twoside, open=right]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}% only for dummy text
\usepackage{hyperref}

\DeclareTOCStyleEntry[
  %pagenumberbox=\mbox
  pagenumberwidth=2.55em,
  rightindent=3.55em
]{tocline}{chapter}

\begin{document}
\cleardoubleoddpage
\pagenumbering{Roman}
\setcounter{page}{3}

\addchap{Abstract}
\Blindtext[2]
\tableofcontents
\addchap{Abbildungsverzeichnis}
\addchap{Tabellenverzeichnis}
\addchap{Formelverzeichnis}
\addchap{Symbolverzeichnis}
\addchap{Abkürzungsverzeichnis}
\addchap{Sperrvermerk}

\cleardoubleoddpage
\pagenumbering{arabic}
\Blinddocument
\Blinddocument
\end{document}

在此处输入图片描述

您可以扩大各层的空间:

\makeatletter
\renewcommand{\@pnumwidth}{2.55em}% default is 1.55em
\renewcommand{\@tocrmarg}{3.55em}% default is 2.55em
\makeatother

例子:

\documentclass[twoside, open=right]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}% only for dummy text
\usepackage{hyperref}

\makeatletter
\renewcommand{\@pnumwidth}{2.55em}% default is 1.55em
\renewcommand{\@tocrmarg}{3.55em}% default is 2.55em
\makeatother

\begin{document}
\cleardoubleoddpage
\pagenumbering{Roman}
\setcounter{page}{3}

\addchap{Abstract}
\Blindtext[2]
\tableofcontents
\addchap{Abbildungsverzeichnis}
\addchap{Tabellenverzeichnis}
\addchap{Formelverzeichnis}
\addchap{Symbolverzeichnis}
\addchap{Abkürzungsverzeichnis}
\addchap{Sperrvermerk}

\cleardoubleoddpage
\pagenumbering{arabic}
\Blinddocument
\Blinddocument
\end{document}

在此处输入图片描述

当然你也可以在 TOC 中本地pagenumberwidth更改:rightindent

\documentclass[twoside, open=right]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{blindtext}% only for dummy text
\usepackage{hyperref}

\newcommand*\settocpagenumberwidth[2]{%
  \DeclareTOCStyleEntries[pagenumberwidth=#1,rightindent=#2]{tocline}{chapter,section}%
}

\makeatletter
\newcommand*\resettocpagenumberwidth{%
  \DeclareTOCStyleEntries[pagenumberwidth=\@pnumwidth,rightindent=\@tocrmarg]{tocline}{chapter,section}%
}
\makeatother

\begin{document}
\cleardoubleoddpage
\pagenumbering{Roman}
\setcounter{page}{3}
\addtocontents{toc}{\settocpagenumberwidth{2.55em}{3.55em}}

\addchap{Abstract}
\Blindtext[2]
\tableofcontents
\addchap{Abbildungsverzeichnis}
\addchap{Tabellenverzeichnis}
\addchap{Formelverzeichnis}
\addchap{Symbolverzeichnis}
\addsec{Foo}
\addsec{Bar}
\addchap{Abkürzungsverzeichnis}
\addchap{Sperrvermerk}
\addsec{Abschnitt 1}
\addsec{Abschnitt 2}

\cleardoubleoddpage
\pagenumbering{arabic}
\addtocontents{toc}{\resettocpagenumberwidth}
\Blinddocument
\Blinddocument
\end{document}

在此处输入图片描述

如果章节条目没有虚线,您可以将页码框更改为\mbox

\DeclareTOCStyleEntry[pagenumberbox=\mbox]{tocline}{chapter}

补充说明:如果您需要带有目录条目的未编号章节,请使用 KOMA-Script 命令\addchap。对于没有目录条目的未编号章节,请使用\addchap*。您也可以切换到scrbook。此类提供\frontmatter\mainmatter。然后您可以\chapter在前言中使用 来获取带有目录条目的未编号章节。

相关内容