![第二个 TOC 问题](https://linux22.com/image/414927/%E7%AC%AC%E4%BA%8C%E4%B8%AA%20TOC%20%E9%97%AE%E9%A2%98.png)
我遵循这里提供的答案:scrbook 中的附加简短目录
创建第二个目录。我正在使用scrreprt
。问题是第二个(较短的)目录不包含图表列表、表格列表等。也不包含命名法。以下是来自上述链接的代码:
\documentclass{scrreprt}
\usepackage[english]{babel}
\usepackage{caption}
\addtotoclist[\jobname]{stoc}
\BeforeStartingTOC[stoc]{\value{tocdepth}=0}
\usepackage{xpatch}
\xapptocmd\addtocentrydefault
{\addxcontentsline{stoc}{#1}[#2]{#3}}
{}{\PatchFailed}
\usepackage[colorlinks = true,linkcolor = black]{hyperref}
\begin{document}
Here is the Nomenclature...also not covered by second shorter TOC
\clearpage
\listoftoc[Short Contents]{stoc}
\tableofcontents
\listoffigures
\addcontentsline{toc}{chapter}{Figures}
\listoftables
\addcontentsline{toc}{chapter}{Tables}
\chapter{Introduction}
\section{First Section}
\begin{table}
\caption{Caption of a Table}
\end{table}
\begin{figure}
\caption{Caption of a Figure}
\end{figure}
\section{Second Section}
%\addchap{Test}
\end{document}
因此,我希望有一个简短的目录,涵盖文档中的所有主要标题。这意味着目录(较长的目录)、术语、表格列表、图表列表、所有章节、参考书目。可能还有附录。这可以在 中完成吗scrreprt
?
我发现我可以通过 添加元素\addcontentsline{stoc}
。但是,页码仍然错误(总是差一),而目录页码是正确的。
答案1
更新:
除了选项之外,listof=totoc
您还可以使用选项bibliography=totoc
和。可以使用和index=totoc
将目录和短目录的条目添加到目录和短目录中。然后还有一个目录书签。\setuptoc{toc}{totoc}
\setuptoc{stoc}{totoc}
例子:
\documentclass[listof=totoc,bibliography=totoc,index=totoc]{scrreprt}
\usepackage[english]{babel}
%\usepackage{caption}% not needed in the example
\addtotoclist[\jobname]{stoc}
\BeforeStartingTOC[stoc]{\value{tocdepth}=0}
\usepackage{xpatch}
\xapptocmd\addtocentrydefault
{\addxcontentsline{stoc}{#1}[#2]{#3}}
{}{\PatchFailed}
\setuptoc{toc}{totoc}% ToC entry in ToC (and short ToC)
\setuptoc{stoc}{totoc}% short ToC entry in ToC (and short ToC)
\usepackage[colorlinks = true,linkcolor = black]{hyperref}
\begin{document}
Here is the Nomenclature...also not covered by second shorter TOC
\listoftoc[Short Contents]{stoc}
\tableofcontents
\listoffigures
\listoftables
\chapter{Introduction}
\section{First Section}
\begin{table}
\caption{Caption of a Table}
\end{table}
\begin{figure}
\caption{Caption of a Figure}
\end{figure}
\section{Second Section}
\end{document}
例子:
原始答案:
如果我使用选项listof=totoc
获取 LoF 和 LoT 的 ToC 条目,则无法重现问题中提到的链接问题。要在短 ToC 中添加 ToC 条目,请使用
\AfterTOCHead[toc]{\addxcontentsline{stoc}{chapter}{\contentsname}}
例子:
\documentclass[listof=totoc]{scrreprt}
\usepackage[english]{babel}
%\usepackage{caption}% not needed in the example
\addtotoclist[\jobname]{stoc}
\BeforeStartingTOC[stoc]{\value{tocdepth}=0}
\usepackage{xpatch}
\xapptocmd\addtocentrydefault
{\addxcontentsline{stoc}{#1}[#2]{#3}}
{}{\PatchFailed}
\AfterTOCHead[toc]{\addxcontentsline{stoc}{chapter}{\contentsname}}% ToC entry in short ToC
\usepackage[colorlinks = true,linkcolor = black]{hyperref}
\begin{document}
Here is the Nomenclature...also not covered by second shorter TOC
\listoftoc[Short Contents]{stoc}
\tableofcontents
\listoffigures
\listoftables
\chapter{Introduction}
\section{First Section}
\begin{table}
\caption{Caption of a Table}
\end{table}
\begin{figure}
\caption{Caption of a Figure}
\end{figure}
\section{Second Section}
\end{document}
注意 的补丁\addtocentrydefault
仅影响通过此命令或\addchaptertocentry
或执行的 ToC 条目\addxcontentsline{toc}{chapter}{...}
。如果其他包\addcontentsline
直接使用,则不会自动在短目录中获得条目。
那么最好使用以下scrwfile
解决方案:
\documentclass[listof=totoc]{scrreprt}
\usepackage[english]{babel}
%\usepackage{caption}% not needed in the example
\usepackage{scrwfile}
\TOCclone[Short Contents]{toc}{stoc}
\addtocontents{stoc}{\protect\value{tocdepth}=0}% or \BeforeStartingTOC[stoc]{\value{tocdepth}=0}
\AfterTOCHead[toc]{\addxcontentsline{stoc}{chapter}{\contentsname}}% TOC entry in short TOC
\usepackage[colorlinks = true,linkcolor = black]{hyperref}
\begin{document}
Here is the Nomenclature...also not covered by second shorter TOC
\listoftoc[Short Contents]{stoc}
\tableofcontents
\listoffigures
\listoftables
\chapter{Introduction}
\section{First Section}
\begin{table}
\caption{Caption of a Table}
\end{table}
\begin{figure}
\caption{Caption of a Figure}
\end{figure}
\section{Second Section}
\end{document}