5

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

\RequirePackage{pstricks}

那么如果我用pdflatex. 所以理想情况下,我正在寻找可以使用的东西

\if@postscriptokay\RequirePackage{pstricks}\fi

看起来这一定是可能的,因为我知道像这样的包pgf可以改变它们的行为以根据输出设备使用适当的图形命令,但我已经做了一些谷歌搜索并检查了我的 LaTeX 书,但还没有找到方法。

4

4 回答 4

7
\usepackage{ifpdf}

\ifpdf
  % nothing
\else
  \RequirePackage{pstricks}
\fi
于 2009-05-03T07:19:38.963 回答
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

graphics.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。您可以在加载任何这些包后检查此宏。

于 2009-05-03T07:21:07.587 回答
3

看看包pstoolauto-pst-pdf。他们在这里帮助使用pstrickspdfLaTeX 和朋友。

于 2009-05-03T12:28:38.190 回答
1

如果您使用的是KOMA-Script包(我真的可以推荐,除非您当然需要使用不同的样式),那么您已经有一个宏:\ifpdfoutput{pdf output}{dvi output}在该包中定义。如果没有,请使用ifpdf已经提到的包。

于 2009-05-03T12:22:09.233 回答