\importonly 仅处理单个导入?

\importonly 仅处理单个导入?

我正在编写一个大型文档,我没有使用 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

相关内容