このスクリーンショットのようにPDF srcブロックに注釈を追加する方法は?


回答:


10

この回答は私が興味を持っていることに焦点を当てているためminted、Orgでのソースコードリストに使用し、tikzmark後でTikz画像から参照できるように、リスト内の場所を「マーク」できるパッケージとして使用します。簡単な例を次に示します(更新)。

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

...そしてこれが結果です(私の場合はLaTeX-XeLaTeXにエクスポートされます):

ここに画像の説明を入力してください

元の回答を編集して、コメントの外にマークを配置する方法(元の回答のコメント制限のある「mathescape」オプションの代わりにpygmentsオプションの「escapeinside」を使用)と、この環境のラベルであるキャプションを設定する方法を示しました、そしてそれへの参照を取得する方法も。HTH


2ND UPDATE:ここでは、同じ使用することを管理するコード(同じ出力)、のバージョンだ#+CAPTION#+LABEL[[lst:ref]]代わりにラテックスのもののスタイルは、完全に包み込むリスト環境を取り除きます:

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

#+ATTR_LATEX:行を取り除くまで、これは機能しませんでした。どこに行こうとしても、キャプション/ラベルとソースブロック間の関連付けが妨げられていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.