Простой препроцессор для латекса: определите, являетесь ли вы включенным файлом или компилируете автономно - PullRequest
6 голосов
/ 01 мая 2011

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

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

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

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

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

EDIT: Несколько замечаний, чтобы избежать недоразумений: я знаю об очень простом встроенном 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}

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

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

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

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

Магические линии:

\def\justbeingincluded{justbeingincluded}

\ifx\justbeingincluded\undefined

\fi

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

2 голосов
/ 01 мая 2011

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

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

...