![在 Koma-Script 中输入自定义 TOC 编号](https://linux22.com/image/439502/%E5%9C%A8%20Koma-Script%20%E4%B8%AD%E8%BE%93%E5%85%A5%E8%87%AA%E5%AE%9A%E4%B9%89%20TOC%20%E7%BC%96%E5%8F%B7.png)
我正在使用该类scrbook
,并且(出于某些原因)需要重新定义命令\thesection
等。问题是这会修改目录条目。我想将目录条目恢复为正常格式,即
- 章节
1.2 章节
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 功能,可与其他类一起使用。