我想使用 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 用戶論壇中的好人,他們回答了我的貼文。