Я составляю большой документ и вместо использования 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. Это ускоряет цикл редактирования-компиляции-просмотра, не включая разделы, над которыми вы не работаете, но использует файлы *.aux для intro.tex и chap1.tex, чтобы предотвратить поломку ссылок.
Спасибо за комментарий @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
. Оба полностью обновлены.
Всего два дня назад, 01.04.2020, 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
команд.