5

LaTeX スタイル/クラス ファイルで、どの出力デバイスが使用されているか (または少なくともどの機能があるか) を検出する方法はありますか? pstricksその理由は、 Postscript が利用可能な場合にいくつかの Postscript 固有のパッケージ (たとえば ) を使用したいクラス ファイルを作成しているからです。

\RequirePackage{pstricks}

でドキュメントをコンパイルすると、もちろん悪いことが起こりますpdflatex。理想的には、次のように使用できるものを探しています

\if@postscriptokay\RequirePackage{pstricks}\fi

pgf出力デバイスに基づいて適切なグラフィックスコマンドを使用するようにパッケージの動作を変更できることを知っているため、これは可能であると思われますが、いくつかの Google 検索を行って 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

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ます。これらのパッケージのいずれかをロードした後、このマクロを調べることができます。

于 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 に答える