2009-05-03 12 views
5

¿Existe alguna manera, en un archivo de clase/estilo LaTeX, para detectar qué dispositivo de salida se está utilizando (o al menos qué capacidades tiene)? La razón es, estoy escribiendo un archivo de clase en el que quiero usar algunos paquetes específicos de PostScript (por ejemplo pstricks) si PostScript está disponible, pero si sólo escriboDetectando dispositivo de salida en LaTeX

\RequirePackage{pstricks} 

entonces por supuesto cosas malas suceder si Estoy compilando el documento con pdflatex. De manera ideal, estoy buscando algo que pueda usar como

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

Parece que esto debe ser posible porque sé paquetes como pgf puede cambiar su comportamiento para utilizar comandos de gráficos apropiados basados ​​en el dispositivo de salida, pero me He hecho algunas búsquedas en Google y verificado en mi libro LaTeX y no he encontrado una manera.

+0

No estoy seguro de que esto se establezca en los mejores términos. Puede detectar qué programa está procesando la fuente (con, por ejemplo, ifpdf), pero no lo describiría como "detectar el dispositivo de salida". YMMV. Sin embargo, no hay una buena sugerencia para una formulación más clara. – dmckee

Respuesta

7
\usepackage{ifpdf} 

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

Esto es lo mejor que puedes hacer. También vea ifxetex, ifluatex. –

6

Puede detectar pdfTeX así (esto es lo que hace 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 y pgf.sty tienen sus propios mecanismos de autodetección construidos en un Cargan archivo de controlador diferente (como pdftex.def y hpdftex.def) basado en la detección automática y la opción de paquete. Si carga alguno de estos en su archivo .tex, intente obtener la información de qué controlador cargó. Los archivos de controlador relevantes son:

/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 

El nombre del controlador para pgf.sty y graphicx.sty se almacena en la macro \[email protected]. Puede inspeccionar esta macro después de cargar cualquiera de estos paquetes.

+0

+1 buena explicación, aunque solo usar ifpdf es más fácil en la práctica (es por eso que acepté la otra respuesta). –

1

Si está usando el paquete KOMA-Script (que realmente puedo recomendar, a menos que necesite usar un estilo diferente por supuesto) ya tiene una macro para esto: \ifpdfoutput{pdf output}{dvi output} se define en ese paquete. De lo contrario, use el paquete ifpdf como ya se ha mencionado.

3

Eche un vistazo a los paquetes pstool y auto-pst-pdf. Están aquí para ayudar a usar pstricks y amigos con pdfLaTeX.

+0

En realidad, nunca he intentado usar pstool con pstricks; probablemente necesite un poco más de pegamento para que sea fácil de usar. ¡Avísame si no es así! –

Cuestiones relacionadas