org-mode: Markiert beim Exportieren Zeilen in src-Blöcken


7

Github bietet eine bequeme Möglichkeit, einige Zeilen wie im Code hervorgehoben anzuzeigen .

Ich würde gerne wissen, ob es eine Möglichkeit gibt, beim Exportieren von Codeblöcken im Organisationsmodus etwas Ähnliches einzurichten (in meinem Anwendungsfall in HTML), damit ich einen längeren Codeblock für den Kontext anzeigen und den Leser dennoch schnell auf die Zeilen richten kann die hinzugefügt oder geändert wurden.

Ich habe in der Dokumentation nichts Offensichtliches gefunden. Ich weiß nicht, wo ich mit der Forschung beginnen würde, um dies selbst umzusetzen.

Kann das gemacht werden? Wurde es bereits implementiert? Wenn nicht, kann ich das selbst implementieren? Wo würde ich anfangen?

Ich habe festgestellt, dass der Organisationsmodus nach HTML exportiert und eine .code-highlightedKlasse bereitstellt , aber das scheint nur für die (ref:xx)Tools zu gelten: Bewegen Sie den Mauszeiger über eine Referenz, der entsprechende Code wird hervorgehoben.


Es gibt keine Möglichkeit, Code zu schreiben, denke ich. Sie müssen Ihren Codeblock wahrscheinlich mit etwas markieren, das wie ein Kommentar aussieht, und dann einen Organisationsfilter verwenden, um die Ausgabe mit dem zum Hervorheben erforderlichen HTML-Markup zu ändern.
John Kitchin

Antworten:


2

Basierend auf der Coderef-Label-Syntax verwende ich ein (hl:line)Pseudo-Label, das durch eine org-export-filter-Funktion ersetzt wird. Referenzierte Zeilen werden in a divmit einem Stilattribut eingeschlossen:

(defun org-html-hl-line (src backend info)
  (when (org-export-derived-backend-p backend 'html)
    (replace-regexp-in-string
     "\\([^\n]+\\)(hl:line)\n"
     "<div style=\"background-color: rgb(248, 238, 199);\">\\1\n</div>" src)))

(add-to-list 'org-export-filter-src-block-functions
             'org-html-hl-line)

Beachten Sie, dass sich die Beschriftungen am Ende der Zeile befinden müssen, wie im folgenden Beispiel gezeigt:

(functionp &rest form)           (hl:line)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.