Вопрос

Есть ли способ, в файле стиля / класса 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 , как уже упоминалось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top