僅匯出目錄

僅匯出目錄

Table of contents將我在文件中使用的匯出.tex到單獨的文件的首選方法是什麼.pdf

目前我有一個文件,我希望將( )my-report.tex的結果與 配對,其中僅包含目錄。pdflatexmy-report.pdfmy-report-toc.pdf

有沒有一種簡單的方法可以實現這一目標?


我的.tex文件有這種佈局(簡化):

...
\begin{titlepage}
\includepdf[pages=-]{abstract.pdf}
\end{titlepage}

% -------------------------------------------------    
% This should go to a separate .pdf file on export.
\tableofcontents
\pagebreak
% -------------------------------------------------

\section{Section1}
...
\section{Section2}
...
\section{Section3}
...

答案1

PDF擷取

可以使用外部工具從 PDF 文件中提取頁面,例如pdftk.如果目錄位於第 5 頁和第 6 頁:

pdftk myreport.pdf cat 5-6 output myreport-toc.pdf

\include

如果主文檔分為多個\include文件,則將 \tableofcontents進入一個單獨的文件myreport-tableofcontents.tex

\tableofcontents
\newpage

myreport.tex包含其目錄:

\include{myreport-tableofcontents}

然後myreport-toc.tex只包括目錄:

\includeonly{myreport-tableofcontents}
\input{myreport}

hyperref和 連結

如果myreport.tex載入包hyperref,則載入目錄文件myreport.toc也包含錨點名稱。這可用於建立文件間連結。例如,CTAN 上我的捆綁包的概述文件,奧伯迪克.pdf包括捆綁包中所有包的目錄。原始檔奧伯迪克.tex\tocinclude使用此技術,請參閱下面範例中的定義。當然兩者myreport.texmyreport-toc.tex需要hyperref

還需要:

  • 中使用的任何巨集myreport.toc都應在 中提供myreport-toc.tex

  • 應使用相同的類別、字體、頁面佈局…。

  • 對於頁碼,該範例使用將zref頁碼資料放入.aux.myreport標籤toc寫入目錄起始頁的頁碼。透過使用模組zref-thepage,還可以記住文件中所有頁碼​​的視覺外觀。然後由in讀取.aux的檔案。myreportzref-xrmyreport-toc.tex

文件myreport.tex

\documentclass{book}
\usepackage{zref-abspage,zref-thepage}
\makeatletter
\newcommand*{\pagevaluelabel}[1]{%
  \zref@labelbyprops{toc}{abspage}%
}
\makeatother
\AtBeginDocument{%
  \addtocontents{toc}{\string\providecommand\string\pagevaluelabel[1]{}}%
  \addtocontents{toc}{\string\pagevaluelabel{toc}}%
}
\usepackage{hyperref}

\setcounter{secnumdepth}{4}

\begin{document}

\frontmatter

Title page
\newpage

\chapter*{Foreword}

\tableofcontents

\mainmatter

\chapter{Chapter}

\section{Section}

\subsection{Subsection}

\subsubsection{Subsubsection}

\end{document}

文件myreport-toc.tex

\documentclass{book}
\usepackage{hyperref}
\usepackage{zref-xr}
\zexternaldocument[main:]{test}\relax

\makeatletter
\newcommand*{\tocinclude}[1]{%
  \chapter*{\contentsname
    \@mkboth{\MakeUppercase\contentsname}%
            {\MakeUppercase\contentsname}%
  }%
  \begingroup
    \makeatletter
    \def\@prj{#1}%
    \let\contentsline\foreign@contentsline
    \input{\@prj.toc}%
  \endgroup
}
\def\foreign@contentsline#1#2#3#4{%
  \ifx\\#4\\%
    \csname l@#1\endcsname{#2}{#3}%
  \else
    \ifHy@linktocpage
      \csname l@#1\endcsname{{#2}}{%
        \hyper@linkfile{#3}{\@prj.pdf}{#4}%
      }%
    \else
      \csname l@#1\endcsname{%
        \hyper@linkfile{#2}{\@prj.pdf}{#4}%
      }{#3}%
    \fi
  \fi
}%

\begin{document}
\makeatletter
\zref@refused{main:toc}
\setcounter{page}{%
  \numexpr\zref@extractdefault{main:toc}{abspage}{1}\relax
}
\renewcommand*{\thepage}{%
  \zref@extractdefault{main:thepage\number\value{page}}%
  {page}{\arabic{page}}%
}
\tocinclude{myreport}
\end{document}

答案2

第一種方法(用shorttoc

最簡單的方法是使用套件\anothertableofcontents中的命令shorttoc,該命令從任意檔案載入並列印目錄.toc

如果您的主要文件是

my-report.tex

\documentclass{article}

\usepackage{blindtext}

\begin{document}    
\tableofcontents    
\blinddocument    
\end{document} 

建立一個my-report-toc.tex包含以下內容的

my-report-toc.tex

\documentclass{article}

\usepackage{shorttoc}
\usepackage{xspace}  % this shouldn't be needed in your document

\begin{document}
\anothertableofcontents{my-report}{Contents}{3}
\end{document} 

編譯後者,結果my-report-toc.pdf將包含以下目錄my-report.pdf

在此輸入影像描述


第二種方法(用pdfpages

另一種方法是使用該pdfpages套件僅載入不同檔案中的目錄頁面。在這種情況下,包含目錄的頁面不得包含任何其他內容。

如果您的主要文件是

my-report.tex

\documentclass{article}

\usepackage{blindtext}

\begin{document}    
\tableofcontents 
\clearpage   
\blinddocument    
\end{document} 

建立一個my-report-toc.tex包含以下內容的檔案(替換pages=1為目錄的實際頁面範圍)

my-report-toc.tex

\documentclass{article}

\usepackage{pdfpages}

\begin{document}
\includepdf[pages=1]{my-report.pdf}
\end{document} 

編譯後者,結果my-report-toc.pdf將包含以下目錄my-report.pdf

在此輸入影像描述

答案3

您可以使用pdfseparate它從 pdf 文件中提取頁面或頁面範圍。

假設目錄只有一頁長,請嘗試pdfseparate -f 2 -l 2 my-report.pdf my-report-toc.pdf

當然,這需要您知道目錄佔用了多少頁。

答案4

mycontents.tex:

\documentclass{article}
\begin{document}
\section*{My Contents}
\input{mwe.toc}
\end{document}

mwe.toc你的輔助文件在哪裡已經編譯了 mwe.tex主文檔在同一目錄中。

請注意,有些編輯器可以在編譯後將這些文件移動到其他位置或刪除輔助文件,但從終端編譯沒有問題。

相關內容