第二个 TOC 问题

第二个 TOC 问题

我遵循这里提供的答案: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}

相关内容