LINUX.ORG.RU

Препроцессинг в LaTeX


0

0

Есть документ LaTeX, в котором имеются следующие строки:

\usepackage[pdftex]{graphicx}
\usepackage[pdftex,unicode=true]{hyperref}

pdflatex обрабатывает файл без проблем, но я ещё хочу генерировать
файл DVI с помощью latex, а он выдаёт ошибки из-за этих двух строк.
Если я эти строки коментирую, latex обрабатывает файл без ошибок.

Не хочется править исходный файл каждый раз, когда необходимо
получить документ другого формата.
Есть ли возможность сделать что-то типа #define, #ifdef, #else,
endif в C, в зависимости от обрабатывающей файл программы?

PS Прошу прощения, если запостилось дважды - Кнопка Post находится
до неудобства рядом с выбором формата.


Да, есть.

Пример из foils.cls:
\if@pdftex
\if@dvips
\ClassWarningNoLine{FoilTeX}{%
Option 'dvips' is ignored when running pdflatex}
\fi
\if@dvipsone
\ClassWarningNoLine{FoilTeX}{%
Option 'dvipsone' is ignored when running pdflatex}
\fi
\@dvipsfalse\@dvipsonefalse
\fi

Ну, естественно, в LaTeX'е это нужно или в классе писать, или окружать \makeatletter / \makeatother, если я ничего не путаю. Давно уже не приходилось пользоваться \LaTeX'ом, тем более так глубоко...

А вот как определить, какой \if определяет конкретно ваш транслятор - не знаю :(

Наверняка это детально в TeX Book написано.

eliterr
()

Я делал так:
\usepackage{ifpdf}
и дальше
\ifpdf
\usepackage{cmap}
\fi
ну и т.д.

stern
()

Оказалось проще решить эту проблему вне Latex. Создал Makefile:

pdf: ${LATEXFILES}
pdflatex ${DOCFILE}

dvi: ${LATEXFILES}
grep -v pdftex <${DOCFILE} | latex

ddo
() автор топика
Ответ на: комментарий от ddo

>>Есть ли возможность сделать что-то типа #define, #ifdef, #else, endif в C, в зависимости от обрабатывающей файл программы?

дык и юзай себе #ifdef и прочее, так как препроцессор в c - m4 - отдельная программа, которую можно юзать отдельно

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.