设置 ToC 深度错误

设置 ToC 深度错误

我想设置目录的深度以包括章节、节(自定义)、小节和小小节。

我尝试包括(目前已注释掉)

\setcounter{tocdepth}{3}

在序言中,但我收到“Tex 容量超出”的错误。有人能帮忙吗?

documentclass[twoside,12pt,numbers=noenddot,tocbibind]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\setcounter{secnumdepth}{4}

%margins
\usepackage[top=3cm,bottom=2cm,left=2.5cm,right=2.5cm,asymmetric]{geometry}

%table of contents
\usepackage{tocloft}
%\setcounter{tocdepth}{3}

\colorlet{ctcolorchapterline}{cyan}
\colorlet{ctcolorchapternum}{cyan}

\RedeclareSectionCommand[
  beforeskip=-1sp
]{chapter}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \ifstr{#1}{chapter}
    {%
      \parbox[b][\ht\strutbox]{\textwidth}{%
        \parbox[b]{\dimexpr\textwidth-3em\relax}{\raggedright#3}%
        \makebox[3em][r]{%
          \hfill
          #2%
        }%
      }%
    }{\@hangfrom{#2}{#3}}% <- original definition for other levels
}
\makeatother
\renewcommand\chapterformat{%
  \textcolor{ctcolorchapterline}{\rule[-5pt]{2pt}{5cm}}%
  \quad
  {\fontsize{60}{60}\selectfont\textcolor{ctcolorchapternum}{\thechapter}}%
}

\setlength{\cftsubsecindent}{1.2cm}   
\setlength{\cftsubsecnumwidth}{2.5em}     

%section titles in the margin
\renewcommand*{\sectionformat}{%
  \llap{\thesection\autodot\enskip}%
}
\renewcommand*{\subsectionformat}{%
  \llap{\thesubsection\autodot\enskip}%
}
\renewcommand*{\subsubsectionformat}{%
  \llap{\thesubsubsection\autodot\enskip}%
}

\renewcommand\thesubsubsection{\thesubsection.\alph{subsubsection}}        
\renewcommand{\thesubsection}{\arabic{chapter}.\arabic{subsection}}

\newcommand{\mysection}[1]{%
    \section*{#1}%
    \addcontentsline{toc}{section}{#1}%
    \markright{#1}%
}


%header
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyfoot{} 
\fancyhf{}
\fancyhead[LE,RO]{\thepage} 
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\fancyhead[RE]{\itshape \nouppercase{\leftmark}} 
\fancyhead[LO]{\itshape \nouppercase{\rightmark}} 
\setlength{\headheight}{15pt}


%hyperlinks and back referencing in format "(page #)"
\usepackage[hyperindex,colorlinks,hyperfootnotes = false,citecolor = cyan,backref=page]{hyperref}
\renewcommand\backreftwosep{, }
 \renewcommand\backrefsep{, }
 \renewcommand*{\backrefalt}[4]{%
    \ifcase #1%
     \or (page:~#2)%
     \else (pages:~#2)%
    \fi%
 }
\usepackage{enumitem} % referencing in enumerate environment


%bibliography
\usepackage{natbib}

答案1

首先,您的最低工作示例并不完全充分:

  • 没有示例内容,也没有任何章节或部分来填充您的目录。
  • \colorlet命令是包的一部分xcolor,这里没有包含它。
  • 它包含与问题无关的其他包。

当我使用这些调整和一些最低限度的内容运行它时,它在 MiKTeX 发行版上使用 LaTeX 时没有错误。错误消息本身似乎表示存在一些无限循环或其他问题,导致 TeX 给出错误。例如,章节标题中的错误符号:https://latex.org/forum/viewtopic.php?t=25596

请将整个文档精简到最少并在此处发布。同时说明您使用的 TeX/LaTeX 版本、问题何时以及如何开始出现(就您所知)以及您已采取了哪些步骤。

此外:我想您已经注意到了警告信息,告诉您不建议将其scrbook与以下产品一起使用fancyhdr?请参阅https://latex.org/forum/viewtopic.php?t=30696以获取更多信息以及如何在必要时抑制错误。

答案2

不幸的是,问题中没有可行的示例,所以我无法重现该问题。

您的定义\mysection应该被删除。改用 KOMA-Script 命令\addsec。它会执行您想要的操作:没有编号但在标题和目录中有条目的章节标题。

对于页眉和页脚,建议使用scrlayer-scrpage带有类的KOMA-Script 包scrbook

不要将包tocloft与 KOMA-Script 类一起使用。无需使用此包即可更改子部分条目的缩进和数字宽度。请注意scrbook加载并使用 KOMA-Script 包tocbasic

此外,没有选项tocbibind。如果列表应获得目录条目,请使用listof=totoc。参考书目(bibliography=totoc)和索引(index=totoc)类似。如果目录也应在目录中获得条目(不推荐),请添加\setuptoc{toc}{totoc}到序言中。

头部高度应按包装设定geometry

对于章节编号的特殊大小(60pt),需要可缩放的字体。

\documentclass[twoside,12pt,numbers=noenddot,
  listof=totoc,% if LOF and LOT should get TOC entries
  bibliography=totoc,
  index=totoc
]{scrbook}
\usepackage{lipsum}% only for dummy text
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

%margins
\usepackage[top=3cm,bottom=2cm,left=2.5cm,right=2.5cm,asymmetric,
  headheight=15pt% <- change headheigt using geometry
]{geometry}

%table of contents
\setuptoc{toc}{totoc}% if the TOC should get a TOC entry (not recommended)
\setcounter{tocdepth}{\subsubsectiontocdepth}

\usepackage{xcolor}% <- added
\colorlet{ctcolorchapterline}{cyan}
\colorlet{ctcolorchapternum}{cyan}

\usepackage{lmodern}% <- a scalable font is needed for the special size of the chapter numbers

%headings
\setcounter{secnumdepth}{\subsubsectionnumdepth}
\RedeclareSectionCommand[
  beforeskip=-1sp
]{chapter}
\RedeclareSectionCommand[
  counterwithout=section,
  counterwithin=chapter,
  tocindent=1.5em,
  tocnumwidth=2.3em
]{subsection}
\RedeclareSectionCommand[
  tocindent=3.8em,
  tocnumwidth=3.2em
]{subsubsection}

\renewcommand\thesubsubsection{\thesubsection.\alph{subsubsection}}

\makeatletter
\renewcommand\chapterlinesformat[3]{%
  \ifstr{#1}{chapter}
    {%
      \parbox[b][\ht\strutbox]{\textwidth}{%
        \parbox[b]{\dimexpr\textwidth-3em\relax}{\raggedright#3}%
        \makebox[3em][r]{%
          \hfill
          #2%
        }%
      }%
    }{\@hangfrom{#2}{#3}}% <- original definition for other levels
}
\makeatother
\renewcommand\chapterformat{%
  \textcolor{ctcolorchapterline}{\rule[-5pt]{2pt}{5cm}}%
  \quad
  {\fontsize{60}{60}\selectfont\textcolor{ctcolorchapternum}{\thechapter}}%
}

%section titles in the margin
\renewcommand*{\sectionformat}{%
  \llap{\thesection\autodot\enskip}%
}
\renewcommand*{\subsectionformat}{%
  \llap{\thesubsection\autodot\enskip}%
}
\renewcommand*{\subsubsectionformat}{%
  \llap{\thesubsubsection\autodot\enskip}%
}


%header
\usepackage[automark,headsepline]{scrlayer-scrpage}
\clearmainofpairofpagestyles
\ohead{\pagemark}
\ihead{\headmark}
\renewcommand\chaptermarkformat{}
\renewcommand\sectionmarkformat{}

\usepackage{enumitem} % referencing in enumerate environment

%bibliography
\usepackage{natbib}

%hyperlinks and back referencing in format "(page #)"
\usepackage[hyperindex,colorlinks,hyperfootnotes = false,citecolor = cyan,backref=page]{hyperref}
%% The following seems to be not related to the issue:
%\renewcommand\backreftwosep{, }
 %\renewcommand\backrefsep{, }
 %\renewcommand*{\backrefalt}[4]{%
    %\ifcase #1%
     %\or (page:~#2)%
     %\else (pages:~#2)%
    %\fi%
 %}

\begin{document}
\tableofcontents
\listoffigures
\listoftables
\chapter{Chapter}
\lipsum[1]
\addsec{Section without number}
\subsection{Subsection}
\lipsum[2-3]
\subsubsection{Subsubsection}
\lipsum[4-6]
\addsec{Section without number}
\subsection{Subsection}
\lipsum[2-3]
\subsubsection{Subsubsection}
\lipsum[4-6]
\end{document}

结果:

在此处输入图片描述

在此处输入图片描述

相关内容