質問
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 。彼らはpdfLaTeXで pstricks
や友人を使うのを助けるためにここにいます。