Pergunta

Existe uma maneira, em um arquivo de estilo LaTeX / classe, para detectar qual dispositivo de saída está sendo usado (ou, pelo menos, que as capacidades que tem)? A razão é, eu estou escrevendo um arquivo de classe em que eu quero usar alguns pacotes específicos PostScript (por exemplo pstricks) se Postscript está disponível, mas se eu apenas escrever

\RequirePackage{pstricks}

então das coisas naturalmente ruins acontecem se eu estou a compilar o documento com pdflatex. Assim, idealmente eu estou procurando algo que eu possa usar como

\if@postscriptokay\RequirePackage{pstricks}\fi

Parece que isso deve ser possível, porque eu sei pacotes como pgf pode mudar seu comportamento para usar comandos gráficos apropriadas com base no dispositivo de saída, mas eu fiz algumas pesquisas no Google e verificado no meu livro LaTeX e não ter encontrado um caminho.

Foi útil?

Solução

\usepackage{ifpdf}

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

Outras dicas

Você pode detectar pdfTeX como este (isto é o que ifpdf.sty faz):

\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 têm os seus próprios mecanismos de detecção automática construído em. Eles carregam um arquivo de driver diferente (como pdftex.def e hpdftex.def) com base na detecção automática ea opção de pacote. Se você carregar qualquer um destes em seu arquivo .tex, para tentar obter as informações que motorista que carregado. Os arquivos de driver relevantes são:

/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

O nome do driver para pgf.sty e graphicx.sty é armazenado no \Gin@driver macro. Você pode inspecionar este macro depois de carregar qualquer um desses pacotes.

Tenha um olhar em pacotes PsTool e auto-pst-pdf . Eles estão aqui para ajudar uso pstricks e amigos com pdflatex.

Se você estiver usando o KOMA-Script pacote (que eu posso realmente recomendo, a menos que você precisa usar um estilo diferente, é claro) você já tem uma macro para isso: \ifpdfoutput{pdf output}{dvi output} é definido no pacote. Se não, use o pacote ifpdf como já foi mencionado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top