Обнаружение выходного устройства в LaTeX
-
03-07-2019 - |
Вопрос
Есть ли способ, в файле стиля / класса LaTeX, определить, какое устройство вывода используется (или, по крайней мере, какие возможности оно имеет)? Причина в том, что я пишу файл класса, в котором я хочу использовать некоторые специфичные для Postscript пакеты (например, pstricks
), если Postscript доступен, но если я просто пишу
\RequirePackage{pstricks}
тогда, конечно, плохие вещи случаются, если я компилирую документ с помощью pdflatex
. Поэтому в идеале я ищу что-то, что я могу использовать как
\if@postscriptokay\RequirePackage{pstricks}\fi
Кажется, что это должно быть возможно, потому что я знаю, что пакеты, такие как pgf
, могут изменить свое поведение, чтобы использовать соответствующие графические команды, основанные на устройстве вывода, но я сделал некоторые поиски в Google и проверил в своем Книгу LaTeX так и не нашли.
Решение
\usepackage{ifpdf}
\ifpdf
% nothing
\else
\RequirePackage{pstricks}
\fi
Другие советы
Вы можете обнаружить pdfTeX следующим образом (это то, что делает ifpdf.sty
):
\makeatletter
\ifx\pdfoutput\@undefined
no pdfTeX
\else\ifnum\pdfoutput<1
pdfTeX is outputting a .dvi file
\else
pdfTeX is outputting a .pdf file
\fi\fi
graphicx.sty, hyperref.sty и pgf.sty имеют свои собственные встроенные механизмы автоопределения. Они загружают другой файл драйвера (например, pdftex.def
и hpdftex.def
) на основе автоопределения и опции пакета. Если вы загрузите какой-либо из них в свой файл .tex, попробуйте получить информацию о том, какой драйвер они загрузили. Соответствующие файлы драйверов:
/usr/share/texmf/tex/generic/pgf/systemlayer/pgfsys-*.def
/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
/usr/share/texmf-texlive/tex/latex/graphics/*.def
/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
Имя драйвера для pgf.sty
и graphicx.sty
хранится в макросе \ Gin @ driver
. Вы можете проверить этот макрос после загрузки любого из этих пакетов.
Просмотрите пакеты pstool и auto-pst-pdf . Они здесь, чтобы помочь использовать pstricks
и друзей с pdfLaTeX.
Если вы используете KOMA-Script пакет (который я действительно могу рекомендовать, если, конечно, вам не нужно использовать другой стиль), у вас уже есть макрос для этого: \ ifpdfoutput {pdf output} {dvi output}
определен в этом пакет. Если нет, используйте пакет ifpdf
, как уже упоминалось.