Externe Links im Org-Modus funktionieren beim Export nach HTML nicht

8

Ich habe 2 .orgDateien:

// a.org contains the anchor
<<my_anchor>>

// b.org contains the link to my_anchor
[[file:a.org::my_anchor][My Link]]

Wenn ich im Organisationsmodus auf den Link klicke, wird er korrekt mit der Position von my_anchorin verknüpft a.org. Aber wenn ich diese 2 Dateien nach HTML exportiere, erwarte ich Folgendes:

// b.html
<a href="a.html#my_anchor">My Link</a>

Was ich habe ist:

// b.html
<a href="a.html">My Link</a>

Ich frage mich, wie man einen externen Link richtig schreibt, damit er sowohl im Organisationsmodus als auch in exportiertem HTML funktioniert.

Vicch
quelle
Was ich bekomme, ist <a id="orgtarget1"></a>in a.htmlund <a href="a.html#MissingReference">My Link</a>in b.html, was geringfügig besser ist, aber nicht funktioniert. Diese org Version 8.3.3.
Andrew Swann
@ AndrewSwann Danke für die Info, meine ist 8.2.5. Das sieht vielversprechend aus, möglicherweise erfordert es eine spezielle Methode, um den Link im Organisationsmodus zu schreiben. Ich frage mich, wie.
Vicch
Für mich sieht es eher nach einem Fehler aus - haben Sie versucht, ihn zu melden?
Andrew Swann
@ AndrewSwann Nein, ich habe nicht gelernt, wie man einen Fehler meldet. Eigentlich möchte ich im Moment nicht mehr Zeit dafür investieren. Es scheint sowieso kein wichtiges Thema zu sein.
Vicch
@ AndrewSwann Es ist ein Dokumentationsfehler. Weitere Details dazu finden Sie am Ende meiner Antwort unten. Ich habe einen Fehlerbericht eingereicht.
Tobias

Antworten:

7

Die Zeichenfolge dahinter ::ist eigentlich eine Suche . In diesem Zusammenhang versteht man den relevanten Kommentar im Quellcode der Funktion org-html-linkin der Bibliotheksdatei ox-html.el(org 8.2.5). Es sagt:

  ;; Add search option, if any.  A search option can be
  ;; relative to a custom-id or a headline title.  Any other
  ;; option is ignored.

So können Sie entweder ersetzen my_anchordurch #my_anchoreine benutzerdefinierte-ID bilden oder eine Schlagzeile Titel beginnend mit dem Zeichen verwenden *. Im zweiten Fall dürfen keine Leerzeichen nach dem *Zeichen stehen!

Das Verknüpfen von Abschnittsüberschriften in anderen Dateien funktioniert nur, wenn Sie Projekte im Organisationsmodus veröffentlichen . Org-Modus-Projekte werden als Mitglieder der Variablen definiert org-publish-project-alist. Weitere Informationen finden Sie in der Dokumentation dieser Variablen und in Abschnitt 13 Veröffentlichen des Handbuchs zum Organisationsmodus.

Beispiel: Datei a.org:

* This is file a.org
  Some important notes.

* Second Section

* Section with a custom-id

  Some text before the custom-id

  <<#my-anchor>> Here we have the custom-id

  Some text behind the custom-id.

Text in Datei b.org:

* This is file b.org
  Some text.

* b.org contains the link to my_anchor
  [[file:a.org::#my_anchor][My Link to the custom-id]]

  [[file:a.org::*Second Section][My Link to the headline of the second section]]

Anmerkung: Der Grund dafür, dass Links zu Headern in anderen Dateien nur beim Veröffentlichen funktionieren, besteht darin, dass sie von abgerufen werden, org-publish-cachein org-publish-resolve-external-fuzzy-linkdenen sie verwendet werden org-html-link.

Abschnittsüberschriften-Links sind tatsächlich nummerierte Links, z. B. sec-1, sec-2und die Abschnittsüberschriften werden über eine Zuordnungsliste in der Variablen in die Nummern 1,2, ... übersetzt org-publish-cache.


Ich halte dies für einen Dokumentationsfehler. Der HTML-Export von Links von Abschnittsüberschriften in anderen Dateien wird in Abschnitt 13.1.6 Links zwischen veröffentlichten Dateien des Handbuchs im Organisationsmodus nicht erwähnt . Ich kann auch keine Bemerkung über den HTML-Export von Links zu benutzerdefinierten IDs über Dateien im Handbuch finden.

Ich habe diese Dinge gerade durch Lesen des Quellcodes entdeckt.


Folgendes habe ich als Antwort auf meinen Fehlerbericht erhalten:

Thank you for the report.

Unfortunately, this feature is very experimental, and actually quite
buggy. It's not ready for prime time, and therefore not documented.
Tobias
quelle