Как использовать AUCTeX для создания PNG-файла изображения TikZ с помощью «автономного» пакета (macOS)?

Как использовать AUCTeX для создания PNG-файла изображения TikZ с помощью «автономного» пакета (macOS)?

Я хотел бы использовать AUCTeX для создания изображения PNG из картинки TikZ с помощьюпакетstandalone. Я использую macOS Sierra.

Согласноstandalone документации v1.2-2015/07/15 (раздел 4.6Преобразование в изображения, стр. 15)

Используя convertопцию класса, отдельный файл можно легко преобразовать в растровое изображение. Это делается путем запуска внешней программы для преобразования выходного файла (PDF или PS) в изображение (рекомендуется формат PNG без потерь, но поддерживаются и другие).

Согласно подпункту 4.6.1Настройки конвертации(стр. 15)

Настройки преобразования могут быть заданы как значение параметра convert={<settings>}. По умолчанию преобразование отключено (convert=false). Если включено без указания собственных настроек ( convert,convert=true), используются следующие настройки по умолчанию: формат PNG, плотность 300 точек на дюйм, явный размер отсутствует, а имя выходного файла задается как \jobname, т. е. имя документа LaTeX. Использование convertпараметра с любым значением, отличным от , falseвключит его.

Согласно разделу 4.6.2Программное обеспечение для конвертации(стр. 16)

Для преобразования требуется установить внешнюю программу-конвертер изображений. По умолчанию поддерживаются два следующих инструмента, и любой из них должен быть установлен для использования функции преобразования. Для выполнения внешней программы -shell-escapeнеобходимо использовать опцию для исполняемого файла компилятора, например pdflatex -shell-escape filename. Без этой опции преобразование невозможно.

По умолчанию программа конвертацииИзображение Магияиспользуется для файлов PDF LaTeX [...]

Поэтому я использовалДомашнее пиво(популярный менеджер пакетов для macOS) для установки Image Magick. Он был установлен в каталоге /usr/local/Cellar/imagemagick/7.0.6-0. Затем я добавил следующие строки в файл инициализации Emacs ( ~/.emacs), чтобы Emacs знал, где искать исполняемые файлы 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/")))

После перезапуска Emacs я написал следующую рукопись LaTeX, которая называется 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:

и скомпилировал его с помощью C-c C-a.

Результатом стал PDF-файл, но файл PNG не был создан, по крайней мере, в том же каталоге, где находилась рукопись LaTeX.

Затем я открыл Терминал (консоль командной строки macOS), cdперешел в каталог, содержащий рукопись LaTeX, и выполнил следующую команду:

pdflatex -shell-escape my_tikz_drawing

Результатом стал my_tikz_drawing.pngфайл в том же каталоге.


Возможная подсказка

Выполним следующую команду, которая находится в файле журнала, один раз из Терминала и один раз из Emacs (используя M-!):

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

дает следующие результаты.

  • Из терминала: команда выполняется без вывода сообщений и создает файл my_tikz_drawing.png.

  • Из Emacs: Файл PNG не создается, а в мини-буфере отображается сообщение об ошибке:

convert: не определено ни одного изображения 'my_tikz_drawing.png' @error/convert.c/ConvertImageCommand/3254.

Это та же ошибка, которая появляется в выводе при запуске Emacs pdflatex.

решение1

Emacs не может найти исполняемый файл GhostScript. Запустить

which gs

в Терминале и скопируйте путь, скажем /usr/local/bin. Затем добавьте следующие строки в файл инициализации Emacs (скажем, ~/.emacs) и перезапустите Emacs.

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

(Первая из этих строк, возможно, не является строго необходимой, но она не повредит...)


Этот ответ стал возможным благодаря добрым людям на форуме пользователей Image Magick, которые ответилимой пост.

Связанный контент