Bagaimana cara menghasilkan PNG dari figur TikZ dengan org-babel?
Saya mencoba menggunakan org-babel untuk menghasilkan gambar dari kode tikz.
Kode pertama (ambil dari contoh ini ) berfungsi dengan sempurna, tetapi ketika Anda ingin mengekspor gambar tikz dalam png (atau jpg), saya mengalami kesalahan seperti:
org-compile-file: File "/tmp/babel-RNLDyr/latex-o3rO8d.pdf" wasn’t produced. See "*Org PDF LaTeX Output*" for details
Saya tidak dapat menemukan penyebab kesalahan ini dan buffer " Org PDF LaTeX Output " tidak ada.
Kode digunakan untuk membuat svg (Berhasil):
#+HEADER: :file ./images/contour.svg :imagemagick yes
#+HEADER: :results output silent :headers '("\\usepackage{tikz}")
#+HEADER: :fit yes :imoutoptions -geometry 400 :iminoptions -density 600
#+BEGIN_src latex
\begin{tikzpicture}
\draw[->] (-3,0) -- (-2,0) arc[radius=0.5cm,start angle=-180,end angle=0] (-1,0) -- (1,0) arc[radius=0.5cm,start angle=180,end angle=0] (2,0) -- (3,0);
\filldraw (-1.5,0) circle[radius=1mm];
\filldraw (1.5,0) circle[radius=1mm];
\end{tikzpicture}
#+END_src
Kode yang digunakan untuk membuat png (Tidak berhasil):
#+HEADER: :file ./images/contour.png :imagemagick yes
#+HEADER: :results output silent :headers '("\\usepackage{tikz}")
#+HEADER: :fit yes :imoutoptions -geometry 400 :iminoptions -density 600
#+BEGIN_src latex
\begin{tikzpicture}
\draw[->] (-3,0) -- (-2,0) arc[radius=0.5cm,start angle=-180,end angle=0] (-1,0) -- (1,0) arc[radius=0.5cm,start angle=180,end angle=0] (2,0) -- (3,0);
\filldraw (-1.5,0) circle[radius=1mm];
\filldraw (1.5,0) circle[radius=1mm];
\end{tikzpicture}
#+END_src
Jawaban
Saya dapat menghasilkan gambar PNG TikZ dengan contoh minimal yang dapat direproduksi berikut.
Dalam GIF yang ditunjukkan di bawah ini, Anda dapat melihat bahwa saya mengeksekusi emacs
dengan menggunakan -Q
bendera dan dengan memuat kode Lisp yang ada di main.el
file. Gambar dihasilkan dari file main.org
tanpa masalah apa pun.
Blok kode berikut menunjukkan konten main.org
file
#+LATEX_HEADER: \usepackage{tikz}
#+begin_src latex :file main.png :results file graphics
\begin{tikzpicture}
\draw node[circle, draw] (a) {$a$}
node[circle, draw, right of = a] (b) {$b$}
node[circle, draw, below of = a] (c) {$c$}
node[circle, draw, below of = b] (d) {$d$};
\end{tikzpicture}
#+end_src
Blok kode berikut menunjukkan konten main.el
file
; The following configuration sets the font (demostration purposes)
(set-frame-font "Iosevka SS04 Light 30")
; The following configuration make Org Mode use imagemagick for processing images.
;
; This was retrieved from this question (https://emacs.stackexchange.com/questions/60696) I posted.
(setq org-preview-latex-default-process 'imagemagick)
; The following configuration disables the confirmation prompt whenever code blocks are evaluated.
(setq org-confirm-babel-evaluate nil)
; The following hook make images to be shown after code blocks are executed.
(add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images)
; The following configuration allows code blocks whose language is latex to be evaluated
(org-babel-do-load-languages 'org-babel-load-languages
'((latex . t)))