编辑:好的,我花了更多时间解决这个问题。我隔离了这个问题,并编写了一个非常小的代码来重现这个问题。
以下代码并未产生我想要的结果。
minitoc
每章开头都应包含一个。- 每个部分都应以链接到其他部分的标签开始
hyperref
,并以包含该部分主标签的部分表格结束。例如,如果定义sec1
标签“a”,则引用标签“a”的所有部分都应出现在最后一个表格中。
我制作了一个可以做到这一点的 latex 文档。但是,\tableof
第\minitoc
一次调用后很长时间就不起作用了。
以下是新代码:
\documentclass[]{book}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{tableof}
\usepackage{hyperref}
\usepackage{import}
\usepackage{minitoc}
\newcommand{\sectionHead}[3]{
%1 : title
%2 : tags reference
%3 : tags
%tag the content
\toftagthis{#3}
\section[#1]{ \hypertarget{#2}{#1} }
%for visual content
\keywords{#3}
}
\newcommand{\sectionFoot}[1]{
% Keyword of the section
\subsection[Table of tags]{Table of tags}
\tableof{#1}
\newpage
}
\newcommand{\keywords}[1]{%
\def\nextitem{\def\nextitem{, }}
\renewcommand*{\do}[1]{\nextitem \hyperlink{##1}{##1} }
\textbf{tags:} \docsvlist{ #1 }
}
\begin{document}
\dominitoc
\tableofcontents
\chapter{Ch 1}
\minitoc
\sectionHead{Sec 1}{a}{a,b}
\lipsum[1]
\sectionFoot{a}
\sectionHead{Sec 2}{b}{a,b}
\lipsum[1]
\sectionFoot{b}
\sectionHead{Sec 3}{c}{c}
\lipsum[1]
\sectionFoot{c}
\chapter{Ch 2}
\minitoc
\sectionHead{Sec 4}{d}{a,d}
\lipsum[1]
\sectionFoot{d}
\sectionHead{Sec 5}{e}{e,f}
\lipsum[1]
\sectionFoot{e}
\sectionHead{Sec 6}{f}{f,b}
\lipsum[1]
\sectionFoot{f}
\end{document}
你知道我该如何解决这个问题吗?
编辑:我尝试了命令
\setcounter{mtc}{*number of the chapter*}
没有成功。
答案1
更新答案(2018 年 10 月)
1.4b 版tableof
已经发布以修复该问题的根本原因。(抱歉延迟了......)
原始答案
(摘自评论)
tableof
先验地,与 不存在不兼容性minitoc
。文档中的问题来自于一个事实,即前面的最后一项\end{document}
是\newpage
(正如@touhami 指出的那样)。这意味着\end{document}
会在最后一页已经发送出去时执行。这会导致命令tableof
中放置的某些指令丢失\AtEndDocument
。结果,主toc
文件中缺少一个宏,您会得到缺少目录的综合症。最简单的方法是暂时避免以\newpage
作为最后一项来结束文档正文。如果这是不可避免的,那么评论中已经指出了一种不完全通用的解决方法。