大きな文書を作成していますが、include/input を使用する代わりに、パッケージ\subimport*
のコマンドを使用していますimport
。これにより、相対パスを非常に簡単に処理できます。
ただし、 の優れた点は、参照を壊すことなく、特定のファイルのみを含めること\include
ができることです\includeonly
。 に同様のコマンドはありますか\subimport
?
編集
これを修正するコードをいくつか作成しようとしていますが、LaTeX の知識は非常に限られています。奇妙な疑似コードのようなものを書いたのですが、役に立つでしょうか?
\makeatletter
\AtBeginDocument{%
\let\origsubimport\subimport
\newcommand\subimportonly[1]{\let\somevar=#1}
\renewcommand\subimport[1]{\@ifstar
if #1 == letvar, use origsubimport*;
o/w just include aux?
}}
\makeatother
答え1
\subimport
のすべてのインスタンスを に更新し\subincludefrom
、パスから '.tex' 拡張子を削除します。
たとえば、次の使用法\subimport
:
\begin{document}
\subimport{intro/}{intro.tex}
\subimport{chap1/}{chap1.tex}
\subimport{discussion/}{discussion.tex}
\end{document}
次のようになります:
\begin{document}
\subincludefrom{intro/}{intro}
\subincludefrom{chap1/}{chap1}
\subincludefrom{discussion/}{discussion}
\end{document}
少なくとも 1 回コンパイルした後、たとえばディスカッションだけを含めたい場合は、\includeonly
次のようにプリアンブルに を追加できます。
\includeonly{discussion}
\begin{document}
\subincludefrom{intro/}{intro}
\subincludefrom{chap1/}{chap1}
\subincludefrom{discussion/}{discussion}
\end{document}
また、ドキュメントには discussion.tex のみが含まれます。これにより、作業していないセクションが含まれなくなるため、編集、コンパイル、表示のループが高速化されますが、 intro.tex および chap1.tex のインクルードには *.aux ファイルを使用して、参照が壊れるのを防ぎます。
@touhamiさんのコメントのおかげで、章を個別に(事前)コンパイルすることでコンパイルを高速化しますか? に対するこの回答そしてローカル パスを使用して階層的なインクルードを行うにはどうすればよいですか? に対するこの回答。点と点を結びつける手助けをしてくれたことに感謝します。
答え2
本稿執筆時点では、既存の回答Debian/TeXLive 2019 (LaTeX2e <2020-02-02> patch level 5), import 6.0
またはのどちらでも動作しませんWindows/MiKTeX 2.9 (LaTeX2e <2019-10-01> patch level 3), import 6.1
。 両方とも完全に更新されています。
ちょうど2日前の2020-04-01にバージョン6.2
がリリースされ、CTANで入手可能そのsty
ファイルを手動で使用しても、問題は解決されませんでした。
一方、私は(@Paul-Calcraftの例を借りて)を発行する必要がありました
\includeonly{discussion/discussion}
\begin{document}
\subincludefrom{intro/}{intro}
\subincludefrom{chap1/}{chap1}
\subincludefrom{discussion/}{discussion}
\end{document}
つまり、 にフルパスが含まれます。そうでない場合、すべてのドキュメント コンテンツが コマンド内にあるため、includeonly
予期しないメッセージが表示されます。warning (pdf backend): no pages of output.
subincludefrom