Table of contents
ファイルで使用する を.tex
別の にエクスポートする好ましい方法は何でしょうか.pdf
?
現在、ファイルがあり、 ()my-report.tex
の結果を、目次のみを含む とペアにしたいと考えています。pdflatex
my-report.pdf
my-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-xr
myreport-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=1
ToC の実際のページ範囲に置き換えてください)
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
pdfseparate
PDF ファイルからページまたはページの範囲を抽出するために使用できます。
目次が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
同じディレクトリ内のメインドキュメント。
一部のエディターでは、コンパイル後にこれらのファイルを別の場所に移動したり、補助ファイルを削除したりすることができますが、ターミナルからコンパイルする場合は問題はありませんので注意してください。