Оглавление в отдельном файле с корректными гиперссылками на многие файлы

Оглавление в отдельном файле с корректными гиперссылками на многие файлы

Это мой первый вопрос здесь. Извините, если не по правилам.

У меня есть:

Я пишу руководство по классу книги с помощью pdflatex (TeX Live под Linux). Каждая глава хранится в отдельном tex-файле (глава1.tex,глава2.tex).

Также я использую пакет minitoc для создания оглавления каждой части. Команды для генерации основного оглавления и оглавления каждой части также хранятся в отдельных tex-файлах (maintoc.tex,parttoc.tex).

Мне нужно:

После компиляции всего документа я использую \includeonly для получения отдельных pdf-файлов (спасибопочта). Используя пакеты hyperref и zref-xr, я получаю правильные гиперссылки между разными pdf-файлами, соответствующими разным главам,ноСсылки в основном оглавлении и в оглавлении каждой части не работают.

Минимальный рабочий пример:

main.tex:

\documentclass[12pt,oneside]{book}
\usepackage{minitoc}
\usepackage{hyperref}

\ifdefined\tosplit
    \usepackage{zref-xr}
    \zxrsetup{toltxlabel}
\fi

\begin{document}
    \include{maintoc}
    \include{parttoc}
    \include{chapter1}
    \include{chapter2}
\end{document}

maintoc.tex:

\doparttoc
\tableofcontents

parttoc.tex:

\part{The first and last part}
\parttoc

глава1.tex:

\ifdefined\tosplit
    \zexternaldocument*{chapter2}
\fi

\chapter{The first chapter}
\label{chap:first}
See chapter~\ref{chap:second}.

глава2.tex:

\ifdefined\tosplit
    \zexternaldocument*{chapter1}
\fi

\chapter{The second chapter}
\label{chap:second}
See chapter~\ref{chap:first}.

Последовательность команд, которые я использую:

  1. pdflatex -jobname=tmp main && mv tmp.pdf main.pdf (x2)
  2. pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{maintoc}\input{main}" && mv tmp.pdf maintoc.pdf
  3. pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{parttoc}\input{main}" && mv tmp.pdf parttoc.pdf
  4. pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{chapter1}\input{main}" && mv tmp.pdf chapter1.pdf
  5. pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{chapter2}\input{main}" && mv tmp.pdf chapter2.pdf

Я пыталсясоветот автораХайко Обердиекпакетов hyperref и zref. Честно говоря, мне это не совсем понятно, но это работает, если у вас нет только двух pdf (TOC и остальные), иначе это не работает. Он всегда пытается открыть только один pdf, но у меня их много.

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