如何使用 AUCTeX 使用「獨立」套件(macOS)建立 TikZ 圖片的 PNG 檔案?

如何使用 AUCTeX 使用「獨立」套件(macOS)建立 TikZ 圖片的 PNG 檔案?

我想使用 AUCTeX 創建 TikZ 圖片的 PNG 圖像standalone包裹。我使用 macOS Sierra。

根據standalone文檔v1.2-2015/07/15(第4.6節)轉換為影像,p。 15)

使用convert類別選項,可以輕鬆地將獨立檔案轉換為光柵影像。這是透過執行外部程式將輸出檔案(PDF 或 PS)轉換為映像(建議無損 PNG 格式,但也支援其他格式)來完成的。

根據第 4.6.1 款轉換設定(第 15 頁)

轉換設定可以作為選項的值給出convert={<settings>}。預設情況下,轉換是禁用的(convert=false)。如果在未提供自己的設定 ( convert,convert=true) 的情況下啟用,則使用以下預設設定:PNG 格式,密度為 300dpi,沒有明確的大小,輸出檔案名稱由 給出\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使用 -ed 編輯到包含 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 文件,並且在迷你緩衝區中顯示錯誤訊息:

轉換:沒有定義圖片“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 用戶論壇中的好人,他們回答了我的貼文

相關內容