So verweisen Sie auf Quellblöcke im Organisationstext

8

Ich möchte Quellblöcke erstellen (in jeder Sprache, einschließlich LaTeX), und diese dann im Text über interne Links mit den unten gezeigten Beschreibungen referenzieren . Dieser ähnliche Beitrag funktioniert bei mir nicht.

Ich konnte leicht viele Quellblöcke mit der gemeinsamen Struktur erstellen, zum Beispiel:

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

Dann habe ich den Blöcken Namen hinzugefügt, weil ich mit internen Links darüber sprechen möchte. Ich habe dies durch Hinzufügen getan #+NAME:und habe folgendes:

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

Der Textblock befindet sich also irgendwo in einer Organisationsdatei (in meinem Fall der gleiche), und ich möchte einen Link zu diesem Codeblock oben mit einfügen C-c C-l. Ich habe dies mit und ohne Beschreibung versucht, so dass ich am Ende beides habe:

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

und

[[some-source-code]]

In der exportierten PDF-Datei werden jedoch keine erkannt. Ich bekomme einfach ein paar Fragezeichen in der PDF-Datei und in der *Org PDF LaTeX output buffer*gibt es nur eine Nachricht, die besagt:

Hyperreferenz eines Quellcodes auf Seite 6 undefiniert in der Eingabezeile 182.

In der Organisationsdatei selbst werden die Links angezeigt und wenn ich darauf klicke, werde ich wie erwartet zum Codeblock weitergeleitet.

In der Babel-Dokumentation für solche Quellblöcke gab es einen unvollendeten Satz bezüglich des (von dem ich annehme, dass er den Namen bedeutet, den ich für einen Quellblock angegeben habe), der sagte:

Der Name kann 20 Zeichen lang sein und… XXX enthalten

Gibt es tatsächlich Regeln bezüglich der #+NAME: <label>?

Sollte ich ein bestimmtes # + LaTeX_HEADER in die Organisationsdatei aufnehmen?

Ich bin die Lage , Links zu Websites erstellen verwenden C-c C-l, mit einer Beschreibung - und das exportiert wird als PDF erwartet.

Ich habe org-Version 8.2.10, Emacs Version 24.5.

n1k31t4
quelle
Ist das Exportieren von Links zu PDF eine Voraussetzung?
Melioratus
@Melioratus - ja, ich möchte, dass die Links in der PDF-Ausgabe verfügbar (anklickbar) sind.
n1k31t4
Schade, dass die Links in meiner Antwort nicht als PDF exportiert werden. Es tut uns leid. Ich werde nach einer anderen Lösung suchen.
Melioratus
Ich glaube, ich habe beim Exportieren als PDF einen Weg gefunden, wieder auf den Codeblock zu verlinken. Ich werde meine Antwort bald veröffentlichen.
Melioratus
Vielen Dank für Ihre Frage! Ich habe Methode 3 hinzugefügt, die beim Export in PDF wieder mit dem Codeblock verknüpft wird.
Melioratus

Antworten:

8

Wenn Sie org-ref ( https://github.com/jkitchin/org-ref ) verwenden, können Sie dies tun:

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


See Listing ref:some-source-code

Dies exportiert nach PDF und HTML mit aktiven Links.

John Kitchin
quelle
4

Versuche dies

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

Methode 1

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

Dies sollte auf zurück verlinken some-source-code.

Vorsichtsmaßnahme: [[file:::some-source-code]] Führt eine entartete Suche durch und sucht zuvor nach <<some-source-code>>Links #+NAME: some-source-code.

Methode 2

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

/ regexp /
Suche nach regulären Ausdrücken nach regulären Ausdrücken. Hierbei wird der Befehl Emacs verwendet, um alle Übereinstimmungen in einem separaten Fenster aufzulisten. Wenn sich die Zieldatei im Org-Modus befindet, wird org-Occup verwendet, um einen spärlichen Baum mit den Übereinstimmungen zu erstellen.

Methode 3

Beim Exportieren als PDF sollte dies funktionieren.

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

Hoffe das hat geholfen!


Dieser Code wurde mit
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14) vom 25.12.2014 getestet
: 8.3.2

Melioratus
quelle
Leider funktioniert beides nicht für mich. Methode 2 löst den Fehler aus : Not a Tramp file name: (the regex). Methode 1 hat einen leeren Link erstellt, dh eine Nullbeschreibung und einen Link zu nirgendwo. Wenn ich es neu schreibe: [[file:alg-page-scrape][My Description]]dann bekomme ich wieder einen Link ins Nirgendwo, aber zumindest mit der Beschreibung im PDF. Ich will nicht arrogant klingen, aber sollte so etwas nicht das "Brot und Butter" des Org-Modus sein? Es funktioniert für Dateien wie erwartet, aber nicht für
Quellblöcke
@DexterMorgan - Als Sie die Links neu geschrieben haben, haben Sie 3 Doppelpunkte verwendet, dh file:::alg-page-scrap? Die Beispiele funktionieren nur mit 3 Doppelpunkten. Sollte also [[file:::alg-page-scrape][My Description]]funktionieren. Bitte lassen Sie mich wissen, wenn dies nicht der Fall ist.
Melioratus
Ich habe es zuerst mit drei versucht: und das hat nicht funktioniert. Dann habe ich es mit einem danach versucht.
n1k31t4
@DexterMorgan - Wenn Sie sagen, dass es nicht funktioniert, meinen Sie beim Exportieren in PDF?
Melioratus
Wie bereits erwähnt, gibt es ein normales Link-Erscheinungsbild ( org-link-face??), jedoch keinen tatsächlichen Link. Durch Klicken darauf gelangte ich nicht zum Quellblock.
n1k31t4