這是我的第一個問題。抱歉,如果不遵守規則。
我有:
我正在用pdflatex(Linux下的TeX Live)在書本課上寫一本手冊。每章都儲存在一個單獨的 tex 檔案中(第一章.tex,Chapter2.tex)。
我還使用 minitoc 套件為每個部分建立目錄。用於產生主目錄和每個部分的目錄的命令也儲存在單獨的 tex 檔案中(maintoc.tex,部分toc.tex)。
我需要:
編譯整個文件後,我使用 \includeonly 來獲取單獨的 pdf 文件(感謝郵政)。使用 hyperref 和 zref-xr 套件我得到了對應於不同章節的不同 pdf 之間的正確超鏈接,但主目錄和每個部分的目錄中的連結已損壞。
最小工作範例:
主.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
部分toc.tex:
\part{The first and last part}
\parttoc
Chapter1.tex:
\ifdefined\tosplit
\zexternaldocument*{chapter2}
\fi
\chapter{The first chapter}
\label{chap:first}
See chapter~\ref{chap:second}.
Chapter2.tex:
\ifdefined\tosplit
\zexternaldocument*{chapter1}
\fi
\chapter{The second chapter}
\label{chap:second}
See chapter~\ref{chap:first}.
我使用的命令順序:
- pdflatex -jobname=tmp main && mv tmp.pdf main.pdf (x2)
- pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{maintoc}\input{main}" && mv tmp.pdf maintoc.pdf
- pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{parttoc}\input{main}" && mv tmp.pdf parttoc.pdf
- pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{chapter1}\input{main}" && mv tmp.pdf Chapter1.pdf
- pdflatex -jobname=tmp "\def\tosplit{1}\includeonly{chapter2}\input{main}" && mv tmp.pdf Chapter2.pdf
我試過建議來自作者海科·奧伯迪克hyperref 和 zref 套件。老實說,這對我來說並不清楚,但除非你只有兩個 pdf(目錄和其餘部分),否則它不會起作用。它總是嘗試只打開一個 pdf,但我有很多 pdf。