Как разделить toc на две части?

Как разделить toc на две части?

Я хочу разделить свою диссертацию на две основные части: «Теория» и «Практика» таким образом, чтобы:

1) «Теория» и «Практика» отображаются как основные закладки в PDF-файле;

2) таблица конкурсов разделена на две части, так что в pdf-файле вы видите:

Теория

Таблица соревнований (Теория)

...

Упражняться

Таблица соревнований (Практика)

Используйте код ниже.

    \begin{document}

    \frontmatter
    \title{Title}

    \maketitle

    % Here I want to place "Theory" that appears as a bookmark and it is placed in the pdf
    % before the first toc and embrace all the parts below up except "Practice"

    % Here I want to place the toc of "Theory"

    \mainmatter

    \chapter*{Preface\label{SecPreface}}

    \markboth{Preface}{Preface}

    %TCIMACRO{%
    %\TeXButton{AddToTableOfContents}{\addcontentsline{toc}{chapter}{Preface}}}%
    %BeginExpansion
    \addcontentsline{toc}{chapter}{Preface}%
    %EndExpansion

    \part{Part 1}

    \part{Part 2}

    \part{Part 3}

    %TCIMACRO{%
    %\TeXButton{settings TOC}{\cleardoublepage
    %\phantomsection
    %\addcontentsline{toc}{part}{Bibliography}} }%
    %BeginExpansion
    \cleardoublepage
    \phantomsection
    \addcontentsline{toc}{part}{Bibliography}
    %EndExpansion
    \bibliographystyle{apalike}
    \bibliography{finance}

    %TCIMACRO{%
    %\TeXButton{settings TOC}{\cleardoublepage
    %\phantomsection
    %\addcontentsline{toc}{part}{List of Figures}} }%
    %BeginExpansion
    \cleardoublepage
    \phantomsection
    \addcontentsline{toc}{part}{List of Figures}
    %EndExpansion
    %TCIMACRO{\TeXButton{List of Figures}{\listoffigures}}%
    %BeginExpansion
    \listoffigures%
    %EndExpansion

    \chapter*{Notation}

    \markboth{Notation}{Notation}

    \addcontentsline{toc}{part}{Notation}

    \bookmarksetup{startatroot}

    % Here I want to place "Practice" that appears as a bookmark and it is placed in the pdf
    % before the second toc and embrace all the parts below 

    % Here I want to place the toc of "Practice"

    \part{Case study 1}

    \part{Case study 2}

    \end{document}

решение1

Вот код ответа на предыдущий вопрос автора поста, с \superpartsи т.д.

Есть что-то новое \localtableofcontents, что нужно использовать.после \superpart. Конечно, есть некоторые конфигурации, которые хотелось бы \localcontentsnameдобавить.

\documentclass{book}
\usepackage{xcolor}
\usepackage{xparse}
\usepackage{xpatch}

\newcounter{superpart}

\makeatletter
\newcommand{\superpart@@tocname}[1]{%
  \arabic{#1}toc%
}

\xpatchcmd{\@part}{%
  \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
}{%
  \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
  \addcontentsline{\superpart@@tocname{superpart}}{part}{\thepart\hspace{1em}#1}%
}{\typeout{Patched @part}}{}


\xpatchcmd{\@chapter}{%
  \addcontentsline{toc}{chapter}{% 
    \protect\numberline{\thechapter}#1}%
}{%
  \addcontentsline{toc}{chapter}{% 
    \protect\numberline{\thechapter}#1}%
  \addcontentsline{\superpart@@tocname{superpart}}{chapter}{%
    \protect\numberline{\thechapter}#1}%
}{\typeout{Patched chapter}}{}

\xpatchcmd{\@sect}{%
  \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}%
}{%
  \addcontentsline{toc}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}%
  \addcontentsline{\superpart@@tocname{superpart}}{#1}{%
    \ifnum #2>\c@secnumdepth \else
    \protect\numberline{\csname the#1\endcsname}%
    \fi
    #7}%
}{\typeout{Patched @sect}}{}


% This is the standard latex kernel \@starttoc, it's not necessary if `book.cls` is used, but for `memoir.cls` etc. 
\def\latex@starttoc#1{%
  \begingroup
  \makeatletter
  \@input{\jobname.#1}%
  \if@filesw
  \expandafter\newwrite\csname tf@#1\endcsname
  \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
  \fi
  \@nobreakfalse
  \endgroup
}



\newcommand{\localtableofcontents}{%
  \chapter*{\contentsname
    \@mkboth{%
      \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
  \latex@starttoc{\superpart@@tocname{superpart}}% 
}
\makeatother

\NewDocumentCommand{\superpart}{om}{%
  \cleardoublepage%
  \refstepcounter{superpart}%
  \phantomsection%
  \hypertarget{superpart::\number\value{superpart}}{}%
  \IfValueTF{#1}{%
    \bookmark[startatroot,level=-2,bold,color=red,dest=superpart::\number\value{superpart}]{#1}%
  }{%
    \bookmark[startatroot,level=-2,bold,color=red,dest=superpart::\number\value{superpart}]{#2}%
  }%
}



\usepackage[bookmarksopen=true]{hyperref}
\usepackage{bookmark}


\begin{document}

\superpart{Theory}
\localtableofcontents 
\part{Number One}
\chapter{First chapter}
\part{Number Two}

\chapter{Second chapter}



\superpart{Practice}
\localtableofcontents
\part{Number Three}
\chapter{Three}
\part{Number Four}
\chapter{Four}


\end{document}

введите описание изображения здесь

введите описание изображения здесь

решение2

Вот два решения:

с пакетом minitoc

\documentclass{book}
\usepackage{minitoc}

\usepackage{blindtext}

\begin{document}‎‎
\doparttoc

\part{Theory}
\renewcommand{\ptctitle}{\contentsname\ (Theory)}
\parttoc
\blinddocument
\blinddocument

\part{Practice}
\renewcommand{\ptctitle}{\contentsname\ (Practice)}
\parttoc

\blinddocument
\blinddocument
\end{document}

с пакетом titletoc (titlesec) (обновлено)

\documentclass{book}

\usepackage{titletoc}
\usepackage{hyperref}

\usepackage{blindtext}
\begin{document}
\tableofcontents


%---------------- Theory part
\part*{Theory}
\addcontentsline{toc}{part}{Theory}
\startcontents
\printcontents{}{-1}{%
       \chapter*{\contentsname\ (Theory)}%
       \markboth{\MakeUppercase{\contentsname\ (Theory)}}%
                {\MakeUppercase{\contentsname\ (Theory)}}}
%----------------

\part{Firstst theory test}
\blinddocument
\blinddocument

\part{Last theory test}
\blinddocument
\blinddocument


%---------------- Practice part
\stopcontents
\part*{Practice}
\addcontentsline{toc}{part}{Practice}
\startcontents
\printcontents{}{-1}{%
       \chapter*{\contentsname\ (Practice)}%
       \markboth{\MakeUppercase{\contentsname\ (Practice)}}%
                {\MakeUppercase{\contentsname\ (Practice)}}}
%---------------- 

\part{Firstst practice test}
\blinddocument
\blinddocument

\part{Last practice test}
\blinddocument
\blinddocument


\stopcontents

\end{document}

глобальный toc введите описание изображения здесь

Теория toc введите описание изображения здесь

Связанный контент