Ich habe viele Dokumente als Organisationsdateien, die eine CUSTOM_LABEL-Eigenschaft haben, wie z
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
In diesem Fall müssen die Dateien als LaTeX exportiert und jeweils CUSTOM_LABEL
als übersetzt werden \label{marker}
. Das obige Beispiel sollte übersetzt werden in \label{AP 1}
.
Ich weiß bereits, wie man benutzerdefinierte Funktionen beim Export aufruft, aber ich bin nicht kompetent genug, um eine Definition für diese bestimmte Konvertierung zu schreiben, dh CUSTOM_LABEL
->\label{}
Wie kann der Defun injiziert werden, custom_label
wie \label{}
geschrieben?
Ich würde sogar nur einen Pseudocode oder einige Zeiger schätzen.
Ich stelle diese Frage hier anstelle anderer Stellen, da dies eher eine Emacs-Frage ist, da ich das Handbuch im Organisationsmodus gründlich durchsucht habe und diese Art von Funktion derzeit nicht verfügbar ist.
Eine generische Funktion zum Konvertieren eines bestimmten EIGENTUMS beim Exportieren (LaTeX, HTML oder ein anderes Format) wäre sogar noch besser.
Vielen Dank.
emacs-orgmode
Liste gelesen (unter anderem lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). Ich habe diesen Code ausprobiert und nur eingestelltorg-latex-custom-id-as-label
. Es funktioniert gut mit dem HTML-Export, hat aber keine Auswirkungen auf den LaTeX-Export. Ich wünschte, ich könnte mich nur auf dieorg-mode
Kernfunktionen verlassen, trotzdem gefällt mir die Antwort von @ malababrba, da sie eine nette Verallgemeinerung ermöglicht.\section{h}\label{sec-1}
ichGNU Emacs 24.3.94.1 (x86_64-apple-darwin13.4.0, NS apple-appkit-1265.21) of 2014-10-04 on builder10-9.porkrind.org
und verwendeOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. Um sicherzugehen, habe ich meine .emacs.d umbenannt, sodass sie ohne benutzerdefinierte Inhalte ausgeführt wurde.org-mode
mit diesemel-get
Rezept zu installieren : github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , aber ich bekomme immer nochOrg-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
Würdest du wissen, wie man dieses Rezept optimiert, damit ich es für das verwenden kann? dev-branch? Ich könnte dies auch als neue Frage stellen. Vielen Dank, dass Sie darauf hingewiesen haben.Antworten:
Ich habe eine Funktion geschrieben, die auf erweiterbare Weise das tut, was Sie wollen. Es prüft, welche Überschriften die Eigenschaft
CUSTOM_LABEL
(oder eine andere von Ihnen konfigurierte Eigenschaft) enthalten, und ruft die Funktionendless/insert-org-label-latex
für jede von ihnen mit dem Wert der Eigenschaft als Argument auf.Das Beispiel-Snippet zeigt auch, wie es für HTML oder andere Backends erweitert werden kann.
Konfigurieren Sie die Ersetzungen
Mit dieser Variablen können Sie Eigenschaften konfigurieren, die Ihnen wichtig sind, und welche Funktionen aufgerufen werden, um jede Eigenschaft zu behandeln.
Der schwere Arbeiter
Diese Funktion sollten Sie dem org export export hook hinzufügen. Es wird darauf geachtet, nach den oben aufgeführten Eigenschaften zu suchen und die diesen Eigenschaften zugeordneten Funktionen aufzurufen.
Die Funktionen, die Sie definieren
Dies sind diejenigen, die den eigentlichen Austausch durchführen. Unten finden Sie ein Beispiel für den Latexfall.
Ergebnis
Bewerten Sie den gesamten obigen Code und exportieren Sie dann den folgenden Organisationspuffer in Latex.
Der resultierende Latexpuffer sollte ungefähr so sein.
quelle
Hinweis: Für die Codefragmente müssen Sie die aktuelle Entwicklungsversion verwenden
(org-version) => "8.3beta"
.Bitte verwenden Sie
CUSTOM_ID
und interne Verknüpfung. Siehe(info "(org) Handling links")
.In den meisten Fällen sollten Sie sich keine Gedanken über das exportierte Ergebnis der internen Benennung in Org machen. Links zu Abbildungen und Überschriften sind beispielsweise beim Export korrekt. Siehe
(info "(org) Internal links")
.Für LaTeX versuchen Sie:
Ergebnis:
In Exporteuren wie
ox-odt
undox-html
Überschriften enthalten sowohl interne IDID
als auchCUSTOM_ID
. Welcher Link verwendet wird, hängt vom Link ab:Ergebnis:
quelle
CUSTOM_ID
, während man @ malabarba's immer noch zum Übergeben anderer org-Eigenschaften verwendet. Ich benutze es tatsächlich so, um ein paar andere Eigenschaften (wie Cite-Keys, Genre, Veranstaltungsort usw.) daneben zu übergebenCUSTOM_ID
.Ich bin mir nicht sicher, aber Sie müssen wahrscheinlich die Exporterfunktion beraten oder sogar überschreiben. In Org 8 also
org-latex-export-headline
.Die Funktion erhält das Überschriftenelement, den Überschrifteninhalt und eine zusätzliche Eigenschaftsliste. Innerhalb der Exporterfunktion können Sie Elementeigenschaften (einschließlich Ihrer benutzerdefinierten Beschriftung) mit abrufen
org-element-property
.quelle
org
Exporteur nicht zu sehr mit Beratung, sondern man erstelltfilter
Funktionen, die in einer bestimmten Phase des Exportprozesses aufgerufen werden können, ungefähr so: `` `(eval-after -load 'ox-latex' (zur Liste hinzufügen 'org-export-filter-final-output-Funktionen' my-filter-function)) `` `(Ich bin nicht sicher, warum die Back-Tick-Syntax nicht funktioniert in Kommentaren?)