Làm cách nào để thêm chú thích trong khối src PDF như trong ảnh chụp màn hình này?


Câu trả lời:


10

Câu trả lời này tập trung vào những gì tôi quan tâm, do đó, nó sử dụng mintedcho danh sách mã nguồn với Org và tikzmarklà gói có thể "đánh dấu" một vị trí trong danh sách của bạn để sau này bạn có thể tham khảo nó từ hình ảnh Tikz. Đây là một ví dụ đơn giản (CẬP NHẬT):

#+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

... và đây là kết quả (được xuất sang LaTeX - XeLaTeX trong trường hợp của tôi):

nhập mô tả hình ảnh ở đây

Tôi đã chỉnh sửa câu trả lời ban đầu để hiển thị cách đặt dấu bên ngoài các nhận xét (sử dụng tùy chọn pygments "escinside", thay vì tùy chọn "mathescape" giới hạn nhận xét từ câu trả lời ban đầu) và cách thiết lập chú thích, nhãn cho môi trường này , và cũng làm thế nào để có được một tài liệu tham khảo đến nó. HTH


2ND UPDATE: Dưới đây là một phiên bản của cùng một mã (tương tự đầu ra), mà quản lý để sử dụng #+CAPTION, #+LABEL[[lst:ref]]phong cách thay vì những cái mủ, được thoát khỏi sự bao bọc môi trường niêm yết hoàn toàn:

#+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

Điều này không hiệu quả, cho đến khi tôi thoát khỏi #+ATTR_LATEX:dòng - bất kể tôi cố gắng đặt nó ở đâu, nó đã can thiệp vào sự liên kết giữa chú thích / nhãn và khối nguồn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.