我正在编写一个大型文档,我没有使用 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}
在您至少编译一次之后,如果您现在只想要包含讨论(例如),您可以将一个添加\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
。两者都已完全更新。
就在两天前,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
。