在 Koma-Script 中输入自定义 TOC 编号

在 Koma-Script 中输入自定义 TOC 编号

我正在使用该类scrbook,并且(出于某些原因)需要重新定义命令\thesection等。问题是这会修改目录条目。我想将目录条目恢复为正常格式,即

  1. 章节

1.2 章节

1.2.3 小节

但现在我只有:

  1. 章节
  2. 部分
  3. 子部分

我通过重新定义命令解决了标题的问题\sectionformat,但我没有找到任何与目录条目等效的命令。

      \documentclass[12pt]{scrbook}
       
        
        \usepackage{scrextend}
        
        \usepackage[automark]{scrlayer-scrpage} % instead of fancyhdr
        \renewcommand\thepart{\arabic{part}}
        \renewcommand\thechapter{\arabic{chapter}}
        \renewcommand\thesection{\arabic{section}}
        \renewcommand\thesubsection{\arabic{subsection}}
        \renewcommand\thesubsubsection{\arabic{subsubsection}}
        \renewcommand{\chaptermarkformat}{}
        \renewcommand*\sectionformat{\thechapter.\thesection\enskip}
        \renewcommand*\subsectionformat{\thechapter.\thesection.\thesubsection\enskip}
    \begin{document}
    \tableofcontents
    
    \chapter{One}
    \section{two}
    \subsection{three}
    \chapter{One}
    \section{two}
    \subsection{three}
    \chapter{One}
    \section{two}
    \subsection{three}
    \chapter{One}
    \section{two}
    \subsection{three}

\end{document}

答案1

免责声明:对于我来说,期望的输出似乎很奇怪,我不建议在标题、页眉和目录中使用不同的数字。

如果要更改标题和参考文献中的数字,请重新定义\addsectiontocentry并将\addsubsectiontocentry目录中的数字恢复为原始格式:

\documentclass[12pt,numbers=noenddot]{scrbook}
\usepackage[automark]{scrlayer-scrpage}
\renewcommand{\thepart}{\arabic{part}}
%\renewcommand\thechapter{\arabic{chapter}}
\renewcommand\thesection{\arabic{section}}
\renewcommand\thesubsection{\arabic{subsection}}
\renewcommand\thesubsubsection{\arabic{subsubsection}}
\renewcommand{\chaptermarkformat}{}
\renewcommand*{\sectionmarkformat}{\thechapter.\thesection\enskip}
\renewcommand*{\subsectionmarkformat}{\thechapter.\thesection.\thesubsection\enskip}

\renewcommand*{\addsectiontocentry}[2]{%
  \IfArgIsEmpty{#1}
    {\addtocentrydefault{section}{#1}{#2}}
    {\addtocentrydefault{section}{\thechapter.#1}{#2}}
}

\renewcommand*{\addsubsectiontocentry}[2]{%
  \IfArgIsEmpty{#1}
    {\addtocentrydefault{subsection}{#1}{#2}}
    {\addtocentrydefault{subsection}{\thechapter.\thesection.#1}{#2}}
}

\begin{document}
\tableofcontents
\chapter{One}
\section{two}
\subsection{three}
\chapter{One}
\section{two}
\subsection{three}
\chapter{One}
\section{two}
\subsection{three}
\chapter{One}
\section{two}
\subsection{three}
\end{document}

如果您只想更改标题中的数字而不是页眉、目录和参考文献中的数字,那么您可以重新定义\sectionformat等。

\documentclass[12pt,numbers=noenddot]{scrbook}
\usepackage{blindtext}% only for dummy text

\usepackage[automark]{scrlayer-scrpage}
\renewcommand{\thepart}{\arabic{part}\autodot\enskip}

\renewcommand{\sectionformat}{\arabic{section}\autodot\enskip}
\renewcommand{\subsectionformat}{\arabic{subsection}\autodot\enskip}
\renewcommand{\subsubsectionformat}{\arabic{subsubsection}\autodot\enskip}

\setcounter{secnumdepth}{\subsubsectionnumdepth}% numbered subsubsections
\setcounter{tocdepth}{\subsubsectiontocdepth}% ToC entries for subsubsections

\begin{document}
\tableofcontents
\Blinddocument
\Blinddocument
\end{document}

在此处输入图片描述

补充说明:不要加载scrextend带有 KOMA-Script 类的包。包scrextend提供了一些基本的 KOMA-Script 功能,可与其他类一起使用。

相关内容