如何使用 AUCTeX 使用“独立”包(macOS)创建 TikZ 图片的 PNG 文件?

如何使用 AUCTeX 使用“独立”包(macOS)创建 TikZ 图片的 PNG 文件?

我想使用 AUCTeX 创建 TikZ 图片的 PNG 图像包裹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 格式,密度为 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进入包含 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 用户论坛中的好心人提供的,他们回答了我的帖子

相关内容