Como usar o AUCTeX para criar um arquivo PNG de uma imagem TikZ usando o pacote ‘autônomo’ (macOS)?

Como usar o AUCTeX para criar um arquivo PNG de uma imagem TikZ usando o pacote ‘autônomo’ (macOS)?

Eu gostaria de usar o AUCTeX para criar uma imagem PNG de uma imagem TikZ usandoo standalonepacote. Eu uso o macOS Sierra.

De acordo com a standalonedocumentação v1.2-2015/07/15 (seção 4.6Conversão para imagens, pág. 15)

Usando a convertopção de classe, o arquivo independente pode ser facilmente convertido em uma imagem raster. Isso é feito executando um programa externo para converter o arquivo de saída (PDF ou PS) em uma imagem (recomendado é o formato PNG sem perdas, mas outros também são suportados).

De acordo com a subseção 4.6.1Configurações de conversão(pág. 15)

As configurações de conversão podem ser fornecidas como o valor da convert={<settings>}opção. Por padrão, a conversão está desabilitada (convert=false). Se ativado sem fornecer configurações próprias ( convert,convert=true), as seguintes configurações padrão serão usadas: formato PNG, densidade de 300 dpi, sem tamanho explícito e o nome do arquivo de saída é fornecido por \jobname, ou seja, o nome do documento LaTeX. Usar a convertopção com qualquer valor diferente falseirá habilitá-la.

De acordo com a seção 4.6.2Software de conversão(pág. 16)

A conversão requer a instalação de um programa conversor de imagem externo. Por padrão, as duas ferramentas a seguir são suportadas e qualquer uma delas deve ser instalada para usar o recurso de conversão. Para que um programa externo seja executado, a -shell-escapeopção deve ser usada para o executável do compilador, por exemplo pdflatex -shell-escape filename, . Sem esta opção nenhuma conversão é possível.

Por padrão, o programa de conversão deMagia da Imagemé usado para arquivos PDF LaTeX [...]

Então eu useiCerveja caseira(um gerenciador de pacotes popular para macOS) para instalar o Image Magick. Ele foi instalado no diretório /usr/local/Cellar/imagemagick/7.0.6-0. Em seguida, adicionei as seguintes linhas ao meu arquivo init do Emacs ( ~/.emacs) para que o Emacs soubesse onde procurar os executáveis ​​​​do Image Magick:

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/Cellar/imagemagick/7.0.6-0/bin/"))
(setq exec-path (append exec-path '("/usr/local/Cellar/imagemagick/7.0.6-0/bin/")))

Depois de reiniciar o Emacs, escrevi o seguinte manuscrito LaTeX, chamado my_tikz_drawing.tex:

\documentclass[tikz,convert]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw (0,0) -- (1,1)
   [rounded corners] -- (2,0) -- (3,1)
   [sharp corners] -- (3,0) -- (2,1);
\end{tikzpicture}
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-engine: default
%%% TeX-command-extra-options: "-shell-escape"
%%% End:

e compilei usando C-c C-a.

O resultado foi um arquivo PDF, mas o arquivo PNG não foi criado, pelo menos não no mesmo diretório onde estava o manuscrito LaTeX.

Em seguida, abri o Terminal (o console de linha de comando do macOS), cdcoloquei o -ed no diretório que contém o manuscrito LaTeX e executei o seguinte comando:

pdflatex -shell-escape my_tikz_drawing

O resultado foi um my_tikz_drawing.pngarquivo no mesmo diretório.


Uma possível pista

Executando o seguinte comando, que se encontra no arquivo de log, uma vez no Terminal e uma vez no Emacs (usando M-!):

convert -density 300 my_tikz_drawing.pdf -quality 90 my_tikz_drawing.png

produz os seguintes resultados.

  • Do Terminal: O comando é executado silenciosamente e cria o arquivo my_tikz_drawing.png.

  • Do Emacs: Nenhum arquivo PNG é criado e uma mensagem de erro é exibida no mini-buffer:

converter: nenhuma imagem definida 'my_tikz_drawing.png' @error/convert.c/ConvertImageCommand/3254.

Este é o mesmo erro que aparece na saída da execução do Emacs pdflatex.

Responder1

O Emacs não consegue encontrar o executável do GhostScript. Correr

which gs

no Terminal e copie o caminho, digamos /usr/local/bin. Em seguida, adicione as seguintes linhas no arquivo init do Emacs (digamos, ~/.emacs) e reinicie o Emacs.

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin/"))
(setq exec-path (append exec-path '("/usr/local/bin/")))

(A primeira destas linhas pode não ser estritamente necessária, mas não faz mal...)


Esta resposta foi possível graças às boas pessoas do fórum Image Magick Users, que responderamminha publicação.

informação relacionada