目次のみをエクスポート

目次のみをエクスポート

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バンドル内のすべてのパッケージの目次が含まれています。ソースファイルオベルディエクこの手法を使用する場合は、以下の例の の定義を参照してください\tocinclude。もちろん、myreport.texと の両方がmyreport-toc.tex必要ですhyperref

また、以下も必要です:

  • で使用されるマクロはすべてmyreport.tocで提供する必要がありますmyreport-toc.tex

  • 同じクラス、フォント、ページレイアウトなどを使用する必要があります。

  • ページ番号の場合、例では を使用して、zrefページ番号のデータを の.auxファイルに格納しますmyreport。ラベルは、toc目次の開始ページのページ番号を書き込みます。モジュールを使用することで、zref-thepageドキュメント内のすべてのページ番号の外観も記憶されます。.auxのファイルは、によってmyreportで読み取られます。zref-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 を読み込んで印刷することです.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の ToC が含まれますmy-report.pdf

ここに画像の説明を入力してください


2番目の方法(pdfpages

もう 1 つの方法は、pdfpagesパッケージを使用して別のファイル内の ToC のページのみをロードすることです。この場合、ToC を含むページには他に何も含まれていてはなりません。

メイン文書が

my-report.tex

\documentclass{article}

\usepackage{blindtext}

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

my-report-toc.tex以下の内容で を作成します( pages=1ToC の実際のページ範囲に置き換えてください)

my-report-toc.tex

\documentclass{article}

\usepackage{pdfpages}

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

後者をコンパイルすると、結果には次my-report-toc.pdfの ToC が含まれますmy-report.pdf

ここに画像の説明を入力してください

答え3

pdfseparatePDF ファイルからページまたはページの範囲を抽出するために使用できます。

目次が1ページしかないと仮定して、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同じディレクトリ内のメインドキュメント。

一部のエディターでは、コンパイル後にこれらのファイルを別の場所に移動したり、補助ファイルを削除したりすることができますが、ターミナルからコンパイルする場合は問題はありませんので注意してください。

関連情報