私は Latex を初めて使用しており、現在は Overleaf を使用して Latex ファイルを管理しています。問題は次のとおりです。Overleaf には、それぞれ特定のトピックに関する複数のプロジェクトがあります。他のすべてのプロジェクトを何らかの方法で読み取り、各プロジェクトのページ数 (関連付けられた PDF ファイルのページ数) を取得する別のプロジェクトを作成したいと考えています。この新しいプロジェクトはページ カウンターとして機能し、他のすべてのプロジェクトの長さを追跡します。これを行う簡単な方法はありますか?
また、これがOverleafでは不可能だが、Texstudioや他のローカルTexエディタでは簡単な場合は、今すぐ教えてください。
答え1
最新の TeX システムでは、pdfTeX エンジン (Overleaf のデフォルト) を使用している場合、次のようなマクロを使用して外部 PDF ファイルのページ数を印刷できます。
\def\numberofpages#1{\pdfximage{#1}\the\pdflastximagepages}
ここで引数は問題のPDFファイルへの相対パスです。他のエンジンのバージョンは外部PDFのページ数を取得するこの部分は Overleaf に固有のものではなく、必要に応じて独自のローカル TeX ディストリビューションで使用できます。
複数のOverleafプロジェクトに文書が分散している場合
Overleaf での秘訣は (完全開示: 私は Overleaf のサポート スタッフです)、ページ数をカウントしている概要プロジェクト (概要プロジェクトと呼ぶことにします) 内の他のプロジェクトから PDF ファイルにアクセスすることです。これは、他のプロジェクトの出力ファイルを概要プロジェクトに新しいファイルとして含めることで実行できます。
すべての外部ファイルを最新の状態に維持することを覚えておく必要があるため、これを実行することはお勧めしません。しかし、どうしてもこれを行う必要がある場合は、実行できます。
概要プロジェクトを開き、「新規ファイル」->「別のプロジェクトから」を選択します。次に、ページ数をカウントするプロジェクトを選択します。「ファイルを選択」ドロップダウンで、「出力ファイルから選択」をクリックし、を選択しますoutput.pdf
。
次に、概要プロジェクト内の出力 PDF ファイルに適切な名前を選択します (複数の外部ページのページ数をカウントする場合は、一意の名前にする必要があります)。
次に、\numberofpages
要約プロジェクトのプリアンブルのどこかに上記のマクロを定義します。ファイル名の外部PDFを読み込むPaperA.pdf
と、要約プロジェクトのどこにでもページ数を印刷できます。
\numberofpages{PaperA.pdf}
注意すべき点は、他のプロジェクトを編集して概要プロジェクトに戻るときに、概要プロジェクトに追加する各外部 PDF ファイルに表示されるボタンを使用して、各外部 PDF ファイルを「更新」することを忘れないようにする必要があることです。
Overleaf のアーキテクチャにより、他のプロジェクトが変更されてもこれらの外部ファイルを自動的に更新することはできません。これは、「更新」ボタンを使用して手動で行う必要があります。
1つのOverleafプロジェクト内に複数の文書がある場合
1つのOverleafプロジェクト内に複数の文書がある場合は、xr
-likeコードとこの\numberofpages
マクロの組み合わせ、またはlastpage
Johnがコメントで述べたように、より自動的に行うことができます。ただし、Overleafでのこの方法には、これらの他の文書のそれぞれに何が含まれているかに応じて、他のトレードオフもあります。Overleaf のプロジェクトでメインの tex ファイルをどれにするか選択できますか単一の Overleaf プロジェクト内で複数のドキュメントをコンパイルする方法の詳細については、こちらをご覧ください。
複数のドキュメントを 1 つの Overleaf プロジェクトに統合する場合、このヘルプ記事では、latexmkrc
Overleaf 上のファイルを使用して、1 つの Overleaf プロジェクト内で他のファイルをコンパイルする方法を説明します。Overleaf の xr パッケージとの相互参照その記事ではパッケージの使用について説明していますが、同じタイプのアプローチを使用して、プロジェクトの出力ファイル領域に更新された PDF を取得し、上記のマクロxr
で使用することもできます。\numberofpages