Jawaban:
Jawaban ini difokuskan pada apa yang saya minati, oleh karena itu digunakan minted
untuk daftar kode sumber dengan Org, dan tikzmark
sebagai paket yang dapat "menandai" tempat dalam daftar Anda sehingga Anda nanti dapat merujuknya dari gambar Tikz. Berikut ini contoh sederhana (DIPERBARUI):
#+LATEX_HEADER: \usepackage{tikz}
#+LATEX_HEADER: \usepackage{minted}
#+LATEX_HEADER: \usetikzlibrary{tikzmark}
#+OPTIONS: toc:nil
* Using minted with tikzmark
# Org mode sample configuration (in your init.el file):
#+BEGIN_SRC emacs-lisp :exports none
(setq org-latex-listings 'minted)
(setq org-latex-minted-options
'(("frame" "lines") ("linenos" "true")))
#+END_SRC
#+ATTR_LATEX: :caption \caption{Yes}\label{lst:code}
#+BEGIN_listing
#+ATTR_LATEX: :options escapeinside=||
#+BEGIN_SRC c
#include <stdio.h>
int main()
{
// comment
printf("hello world\n"); |$\tikzmark{too}$|
return 0;
}
#+END_SRC
#+END_listing
#+BEGIN_LaTeX
\begin{tikzpicture}[overlay,remember picture]
\draw[dashed,->] (pic cs:too) ++(0,0.25) to[bend left]
++(5,-1)node[right]{$\bullet$ Here it is too!};
\end{tikzpicture}
#+END_LaTeX
As you can see in code listing \ref{lst:code}, \ldots
... dan inilah hasilnya (diekspor ke LaTeX - XeLaTeX dalam kasus saya):
Saya mengedit jawaban asli untuk menunjukkan cara menempatkan tanda di luar komentar (menggunakan opsi pygments "escapeinside", alih-alih opsi "mathescape" terbatas komentar dari jawaban asli) dan cara mengatur keterangan, label untuk lingkungan ini , dan juga cara mendapatkan referensi untuk itu. HTH
PEMBARUAN 2ND: Berikut adalah versi kode yang sama (keluaran yang sama), yang berhasil digunakan #+CAPTION
, #+LABEL
dan [[lst:ref]]
gaya bukan yang lateks, DAN menyingkirkan lingkungan daftar menyelimuti sepenuhnya:
#+LATEX_HEADER: \usepackage{tikz}
#+LATEX_HEADER: \usetikzlibrary{tikzmark}
#+OPTIONS: toc:nil
* Using minted with tikzmark
# Org mode configuration:
#+BEGIN_SRC emacs-lisp :exports none
(setq org-latex-listings 'minted)
(setq org-latex-minted-options
'(("frame" "lines") ("linenos" "true") ("escapeinside" "||")))
#+END_SRC
#+LABEL: lst:code
#+CAPTION: Yes
#+BEGIN_SRC c
#include <stdio.h>
int main()
{
// comment
printf("hello world\n"); |$\tikzmark{too}$|
return 0;
}
#+END_SRC
#+BEGIN_LaTeX
\begin{tikzpicture}[overlay,remember picture]
\draw[dashed,->] (pic cs:too) ++(0,0.25) to[bend left]
++(5,-1)node[right]{$\bullet$ Here it is too!};
\end{tikzpicture}
#+END_LaTeX
As you can see in [[lst:code]], \ldots
Ini tidak berhasil, sampai saya menyingkirkan #+ATTR_LATEX:
garis - di mana pun saya mencoba untuk meletakkannya, itu mengganggu hubungan antara caption / label dan blok sumber.