Обнаружение выходного устройства в LaTeX - PullRequest
5 голосов
/ 03 мая 2009

Есть ли способ, в файле стиля / класса LaTeX, определить, какое устройство вывода используется (или, по крайней мере, какие возможности оно имеет)? Причина в том, что я пишу файл класса, в котором я хочу использовать некоторые специфичные для Postscript пакеты (например, pstricks), если Postscript доступен, но если я просто пишу

\RequirePackage{pstricks}

тогда, конечно, плохие вещи случаются, если я компилирую документ с помощью pdflatex. Так что в идеале я ищу что-то, что я могу использовать как

\if@postscriptokay\RequirePackage{pstricks}\fi

Кажется, что это должно быть возможно, потому что я знаю, что пакеты типа pgf могут изменить свое поведение, чтобы использовать соответствующие графические команды, основанные на устройстве вывода, но я сделал несколько поисков в Google и проверил в своей книге LaTeX нашел способ.

Ответы [ 4 ]

7 голосов
/ 03 мая 2009
\usepackage{ifpdf}

\ifpdf
  % nothing
\else
  \RequirePackage{pstricks}
\fi
6 голосов
/ 03 мая 2009

Вы можете обнаружить 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. Вы можете проверить этот макрос после загрузки любого из этих пакетов.

3 голосов
/ 03 мая 2009

Посмотрите на пакеты pstool и auto-pst-pdf . Они здесь, чтобы помочь использовать pstricks и друзей с pdfLaTeX.

1 голос
/ 03 мая 2009

Если вы используете пакет KOMA-Script (который я действительно могу рекомендовать, если, конечно, вам не нужен другой стиль), у вас уже есть макрос для этого: \ifpdfoutput{pdf output}{dvi output} определен этот пакет. Если нет, используйте пакет ifpdf, как уже упоминалось.

...