是否有像 \AtEndDocument 这样的用于目录的 Hook?

是否有像 \AtEndDocument 这样的用于目录的 Hook?

我编写了一个文档类,我需要更改页码。目录应使用罗马字体页码,其余部分应使用阿拉伯字体。

如果可以在类文件中解决这个问题就太好了,我正在使用tocbasic带有 Koma Script 的包。如果用户可以\tableofcontents像在其他所有文档中一样使用,那就太好了。

对于用户来说它应该是这样的:

\documentclass[stuff]{myclass}

\title{my title}
\author{me}

\begin{document}

\maketitle
\tableofcontents

\chapter{one}
Important text.

\section{section one}
Not so important text.

\end{document}

class-file 中的代码myclass.cls,感谢@esdd:

\BeforeTOCHead[toc]{\frontmatter}
\AfterStartingTOC[toc]{\mainmatter}

答案1

tocbasic有一些钩子。你可以使用

\BeforeTOCHead[toc]{\frontmatter}
\AfterStartingTOC[toc]{\mainmatter}

平均能量损失

\documentclass{scrbook}% loads tocbasic automatically
\BeforeTOCHead[toc]{\frontmatter}
\AfterStartingTOC[toc]{\mainmatter}
\begin{document}
\tableofcontents
\chapter{One}
\chapter{Two}
\end{document}

目录长度超过一页的示例:

\documentclass{scrbook}% loads tocbasic automatically
\BeforeTOCHead[toc]{\frontmatter}
\AfterStartingTOC[toc]{\mainmatter}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\Blinddocument\Blinddocument
\Blinddocument\Blinddocument
\Blinddocument\Blinddocument
\end{document}

在此处输入图片描述

答案2

由于您正在使用scrbook文档类,因此您可以继续在序言中提供以下说明:

\usepackage{etoolbox}
\pretocmd{\tableofcontents}{\frontmatter}{}{}
\apptocmd{\tableofcontents}{\mainmatter}{}{}

假设您的文档有\tableofcontents,,\listoffigures \listoftables说明(按此顺序),你应该写

\usepackage{etoolbox}
\pretocmd{\tableofcontents}{\frontmatter}{}{}
\apptocmd{\listoftables}{\mainmatter}{}{}

用罗马数字表示这三个文档单元的页码,然后用阿拉伯数字表示后续材料。


完整的 MWE:

\documentclass{scrbook}
\usepackage{tocbasic}
\usepackage{etoolbox}
\pretocmd{\tableofcontents}{\frontmatter}{}{}
\apptocmd{\tableofcontents}{\mainmatter}{}{}
\begin{document}
\tableofcontents
\chapter{Uno}
\chapter{Due}
\end{document} 

相关内容