我正在編寫一個大文檔,我不使用 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
更新to的所有實例\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}
至少編譯一次後,您現在只想包含討論(例如),您可以\includeonly
在序言中添加 an ,如下所示:
\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
。兩者均已全面更新。
就在前兩天,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
命令內。