Простой препроцессор для латекса: определите, являетесь ли вы включенным файлом или скомпилированы отдельно

Я работаю над огромным скриптом в \latex.

Я хочу иметь возможность скомпилировать каждую из глав отдельно, потому что с Latex проще проводить сеансы взлома.

С другой стороны, я хотел бы вести документ, который охватывает весь сценарий, написанный до сих пор.

Я не знаю, как поддерживать оба эти документа без постоянно раздражающих накладных расходов, поскольку tex-файл может быть либо написан отдельно, либо включен.

Было бы здорово иметь что-то вроде препроцессора Latex, способного выполнять C-подобные операторы #define и #ifdef-#else-#endif. Это значительно облегчило бы написание. Знаете ли вы, существует ли что-то подобное в латексе или как вы можете сделать что-то подобное? Google не дал мне удовлетворительного ответа на этот вопрос.

РЕДАКТИРОВАТЬ: Несколько замечаний во избежание недоразумений: я знаю об очень простом встроенном TEX-препроцессоре, но эти команды работают не так, как я ожидал. Следовательно, ссылка на них мне не поможет.

Главы в моем сценарии должны выглядеть примерно так (псевдокод)

IF being_just_included defined
   %No header here, and document has already begun
ELSE
\input{common_header.tex} %Header things all my documents use
\begin{document}
ENDIF

%%% Lots of stuff

IF being_just_included defined
   %Nothing to do here
ELSE
   \end{document}
END IF

Напротив, мой полный исходный файл сценария должен выглядеть так:

\input{common_header.tex}
DEFINE being_just_included
\begin{document}
\input{preamble.tex}
\input{first_chapter.tex}
\input{second_chapter.tex}
\input{third_chapter.tex}
\end{document}

Не могли бы вы опубликовать код, который выполняет что-то подобное?


person shuhalo    schedule 01.05.2011    source источник


Ответы (2)


Один из способов сделать это — использовать пакет standalone, предназначенный для этой конкретной цели.

Вы также можете просмотреть и, возможно, присоединиться к TeX and Friends.

person Brent.Longborough    schedule 01.05.2011
comment
Я не понимаю, какую часть пакета вы на самом деле хотели использовать. Предложение @shuhalo, похоже, работает нормально. Включение глав в виде готового PDF-файла не позволяет использовать ссылки или глобальный оглавление. Или не могли бы вы объяснить, как это работает с автономным пакетом? - person strpeter; 12.09.2018

Большое спасибо за этот пакет и подсказку на форум.

Через некоторое время я понял, что существует препроцессор tex, похожий на CPP. Может быть, не очень хорошо спроектированный, но он вполне подходит для моей цели.

Волшебные строки:

\def\justbeingincluded{justbeingincluded}

\ifx\justbeingincluded\undefined

\fi

должным образом использоваться в соответствующих исходных файлах.

person shuhalo    schedule 02.05.2011
comment
Я уверен, что это работает, но это немного похоже на использование Ассемблера для вашего сайта вместо CSS... - person Brent.Longborough; 02.05.2011