組織テキストでソースブロックを参照する方法


8

(LaTeXを含む任意の言語で)ソースブロックを作成し、次に内部リンクを使用してテキストでこれらを参照します。この同様の投稿は私のために働いていません。

私がしている簡単に、たとえば、共通の構造を使用して作成された多くのソースブロックすることができました:

#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

次に、内部リンクでそれらについて話したいので、ブロックに名前を追加しました。Idはを追加し#+NAME:てこれを行ったので、次のようにします。

#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

したがって、テキストブロックはorgファイル内のどこかにあり(私の場合は同じ)、上記を使用して上記のコードブロックへのリンクを挿入したいと思いC-c C-lます。私はこれを説明ありとなしで試してみたので、両方で終わりました:

[[some-source-code][my description]]

そして

[[some-source-code]]

ただし、エクスポートされたPDFファイルではどちらも認識されません。PDFファイルに一対の疑問符が表示される*Org PDF LaTeX output buffer*だけで、次のメッセージが表示されます。

6ページのハイパーソースsome-source-codeが入力行182で未定義です。

org-file自体にリンクが表示され、リンクをクリックすると、予想どおりコードブロックに移動します。

そのようなソースブロックのバベルのドキュメントには、(ソースブロックに提供した名前を意味すると想定している)に関する未完成の文があり、次のように述べています。

名前は20文字で、…XXXを含めることができます

に関するルールは実際にあります#+NAME: <label>か?

特定の#+ LaTeX_HEADERをorg-fileに含める必要がありますか?

私は午前使用してWebサイトへのリンクを作成することができC-c C-l説明では、 -およびPDFへの期待通り、これはエクスポートされます。

私はorgバージョン8.2.10、emacsバージョン24.5を持っています。


PDFへのリンクのエクスポートは必須ですか?
Melioratus 2016年

@Melioratus-はい、PDF出力で利用可能な(クリック可能な)リンクを希望します。
n1k31t4 2016年

残念なことに、私の回答のリンクはPDFにエクスポートされません。ごめんなさい。別の解決策を探します。
Melioratus

PDFにエクスポートするときにコードブロックにリンクする方法を見つけたと思います。私はすぐに答えを投稿します。
Melioratus

質問していただきありがとうございます!PDFにエクスポートするときにコードブロックにリンクする方法3を追加しました。
Melioratus

回答:


8

org-ref(https://github.com/jkitchin/org-ref)を使用している場合、これを行うことができます:

#+caption: test label:some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC


See Listing ref:some-source-code

これは、アクティブなリンクを含むPDFおよびHTMLにエクスポートされます。


4

これを試して

#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

方法1

[[file:::some-source-code]]

これはにリンクしsome-source-codeます。

警告: [[file:::some-source-code]]縮退検索を実行しており、<<some-source-code>>前にリンクを探します#+NAME: some-source-code

方法2

[[file:::/#\+name: +some-source-code/]]

/ regexp / regexp
の正規表現検索を実行します。これは、Emacsコマンドの発生を使用して、すべての一致を別のウィンドウにリストします。ターゲットファイルがOrgモードの場合、org-occurを使用して、一致するスパースツリーを作成します。

方法3

PDFにエクスポートする場合、これは機能するはずです。

#+BEGIN_LaTeX
\hypertarget{some-source-code}{} 
#+END_LaTeX
#+NAME: some-source-code
#+BEGIN_SRC python
  for i in 1:10:
      print i
#+END_SRC

#+BEGIN_SRC latex
  See \hyperlink{some-source-code}{some source code}.
#+END_SRC

お役に立てば幸いです。


このコードは
、2014-12-25
org-mode:8.3.2のGNU Emacs 24.4.1(x86_64-apple-darwin14.0.0、NS apple-appkit-1343.14)を使用してテストされました


残念ながら、どちらも私にとってはうまくいきません。方法2はエラーをスローします:Not a Tramp file name: (the regex)。方法1は空のリンクを作成しました。これは説明がなく、どこにもリンクされていません。これを次のように書き直すと、[[file:alg-page-scrape][My Description]]どこにもリンクが表示されなくなりますが、少なくともPDFに説明が表示されます。私は傲慢に聞こえるつもりはありませんが、この種のことは組織モードの「パンとバター」ではないのですか?期待どおりにファイルに対しては機能しますが、ソースブロックに対しては機能しません...
n1k31t4

@DexterMorgan-リンクを書き直したときに、3つのコロンを使用しましたfile:::alg-page-scrapか?例は、3つのコロンでのみ機能します。だから、[[file:::alg-page-scrape][My Description]]動作するはずです。ない場合はお知らせください。
Melioratus

私は最初に3つ試してみましたが、うまくいきませんでした。それから私は後でそれを試してみました。
n1k31t4 2016年

@DexterMorgan-PDFにエクスポートするときに機能しないということですか?
Melioratus 2016年

前述のように、通常のリンクの外観(org-link-face??)がありますが、実際のリンクはありません。それをクリックしても、ソースブロックに移動しませんでした。
n1k31t4 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.