2009-05-03 10 views
5

C'è un modo, in un file di stile/classe LaTeX, per rilevare quale periferica di output viene utilizzata (o almeno quali funzionalità ha)? La ragione è, sto scrivendo un file di classe in cui voglio usare alcuni pacchetti Postscript-specifici (ad esempio pstricks) se Postscript è disponibile, ma se ho appena scrittoRilevamento del dispositivo di uscita in LaTeX

\RequirePackage{pstricks} 

poi, naturalmente, le cose brutte accadono se Sto compilando il documento con pdflatex. Quindi idealmente sto cercando qualcosa che posso usare come

\[email protected]\RequirePackage{pstricks}\fi 

Sembra che questo deve essere possibile, perché so pacchetti come pgf possono cambiare il loro comportamento da usare comandi grafici appropriate in base al dispositivo di uscita, ma sono Ho fatto alcune ricerche su Google e ho controllato il mio libro LaTeX e non ho trovato un modo.

+0

Non sono sicuro che questo sia indicato nei termini migliori. È possibile rilevare quale programma sta elaborando la sorgente (con ad esempio ifpdf), ma non lo descriverei come "rilevamento del dispositivo di output". YMMV. Nessuna buona idea per una formulazione più chiara, comunque. – dmckee

risposta

7
\usepackage{ifpdf} 

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

Questo è il meglio che puoi fare. Vedi anche ifxetex, ifluatex. –

6

È possibile rilevare pdfTeX come questo (questo è quello che fa 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 e pgf.sty hanno i loro meccanismi di autorilevamento costruiti in Caricano un file di driver diverso (come pdftex.def e hpdftex.def) basato sul rilevamento automatico e l'opzione del pacchetto. Se carichi uno di questi nel tuo file .tex, prova a ottenere le informazioni sul driver che hanno caricato. I file del driver rilevanti sono:

/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 

Il nome del driver per pgf.sty e graphicx.sty viene memorizzato nella macro \[email protected]. È possibile ispezionare questa macro dopo aver caricato uno di questi pacchetti.

+0

+1 bella spiegazione, anche se l'uso di ifpdf è più semplice nella pratica (è per questo che ho accettato l'altra risposta). –

1

Se si utilizza il pacchetto KOMA-Script (che posso veramente raccomandare, a meno che non sia necessario utilizzare uno stile diverso ovviamente) si dispone già di una macro per questo: \ifpdfoutput{pdf output}{dvi output} è definito in tale pacchetto. In caso contrario, utilizzare il pacchetto ifpdf come già menzionato.

3

Dai un'occhiata ai pacchetti pstool e auto-pst-pdf. Sono qui per aiutare a usare pstricks e amici con pdfLaTeX.

+0

In realtà non ho mai provato a usare pstool con i pstrick; probabilmente ha bisogno di un po 'più di colla per renderlo facile da usare. Fammi sapere se altrimenti! –

Problemi correlati