检测LaTeX中的输出设备

时间:2009-05-03 06:50:50

标签: latex postscript

在LaTeX样式/类文件中,是否有办法检测正在使用哪个输出设备(或至少具有哪些功能)?原因是,我正在编写一个类文件,如果Postscript可用,我想在其中使用一些特定于Postscript的包(例如pstricks),但如果我只是写

\RequirePackage{pstricks}

当然,如果我用pdflatex编译文档,那么会发生不好的事情。理想情况下,我正在寻找可以使用的东西,如

\if@postscriptokay\RequirePackage{pstricks}\fi

似乎这一定是可能的,因为我知道像pgf这样的软件包可以根据输出设备更改其行为以使用适当的图形命令,但我已经完成了一些Google搜索并检查了我的LaTeX书籍还没找到办法。

4 个答案:

答案 0 :(得分:7)

\usepackage{ifpdf}

\ifpdf
  % nothing
\else
  \RequirePackage{pstricks}
\fi

答案 1 :(得分:6)

您可以像这样检测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.defhpdftex.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.stygraphicx.sty的驱动程序名称存储在宏\Gin@driver中。您可以在加载任何这些软件包后检查此宏。

答案 2 :(得分:3)

查看包pstoolauto-pst-pdf。他们来帮助pstricks和朋友使用pdfLaTeX。

答案 3 :(得分:1)

如果你正在使用KOMA-Script包(我真的可以推荐,除非你需要使用不同的方式),你已经有了一个宏:\ifpdfoutput{pdf output}{dvi output}在该包中定义。如果没有,请使用已提及的ifpdf包。