题
在LaTeX样式/类文件中,是否有办法检测正在使用哪个输出设备(或至少具有哪些功能)?原因是,我正在编写一个类文件,如果Postscript可用,我想在其中使用一些Postscript特定的包(例如 pstricks
),但如果我只是写
\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
包。
不隶属于 StackOverflow