Kann ich im Org-Modus Links erstellen, die eckige Klammern enthalten?


13

Gibt es eine Möglichkeit, Klammern ( [und ]) zu umgehen, damit sie in die Beschreibung eines Org-Modus-Links aufgenommen werden können? Der folgende Link funktioniert beispielsweise nicht:

[[http://mathoverflow.net/questions/195203/automorphisms-of-ideals-of-mathbbct][Automorphisms of ideals of C[t]]]

Ich hoffte, ein Backslash ( \[) würde funktionieren oder es würde eine org-Entität geben, aber das scheint nicht der Fall zu sein.


1
Das Problem ist, dass Links in Org mithilfe regulärer Ausdrücke analysiert werden. Diese Aufgabe würde einer Rekursion entsprechen, die nicht mit regulären Ausdrücken analysiert werden kann. Wenn Sie nur eine Rekursionsstufe hinzufügen möchten, ist dies durch Patchen möglich org-make-link-regexps, aber im Allgemeinen ist dies mit dem aktuellen Setup nicht möglich.
wvxvw

Es kann entkommen werden. Sie können versuchen, das relevante reguläre Ausdrucksformat anzupassen org-bracket-link-regexp, um dies zu handhaben. Sie möchten jedoch org-insert-linkweiterhin die Klammern durch geschweifte Klammern ersetzen, und es kann andere Auswirkungen haben.
Politza

Oh, ich habe mich nur daran erinnert \[und \]soll angezeigte Gleichungen (wie $$), nicht entkoppelte Klammern geben.
Omar

Antworten:


5

Eine funktionierende Lösung, die allerdings nicht so hübsch ist, ist die Verwendung der Makros im Organisationsmodus .

Die folgenden Makros werden beim Export in HTML oder Latex durch die ASCII-Codes von [und ersetzt ].

# Square Bracket Open [
#+MACRO: BO @@latex:\char91@@ @@html:[@@
# Square Bracket Close ]
#+MACRO: BC @@latex:\char93@@ @@html:]@@

[[http://emacs.stackexchange.com][{{{BO}}}Emacs SE{{{BC}}}]]

Referenz


Danke, aber ich hatte gehofft, org-mode davon zu überzeugen, sie als eckige Klammern im Puffer zu rendern. Ihre Lösung funktioniert natürlich auch für den Export.
Omar

Funktioniert nicht beim HTML-Export.
Alex

3

Nachfolgend finden Sie die modifizierte Version org-make-link-regexp, die eine Verschachtelungsebene von eckigen Klammern in der Beschreibung ermöglicht:

(defun org-make-link-regexps ()
  "Update the link regular expressions.
This should be called after the variable `org-link-types' has changed."
  (setq org-link-types-re
    (concat
     "\\`\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):")
    org-link-re-with-space
    (concat
     "<?\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):"
     "\\([^" org-non-link-chars " ]"
     "[^" org-non-link-chars "]*"
     "[^" org-non-link-chars " ]\\)>?")
    org-link-re-with-space2
    (concat
     "<?\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):"
     "\\([^" org-non-link-chars " ]"
     "[^\t\n\r]*"
     "[^" org-non-link-chars " ]\\)>?")
    org-link-re-with-space3
    (concat
     "<?\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):"
     "\\([^" org-non-link-chars " ]"
     "[^\t\n\r]*\\)")
    org-angle-link-re
    (concat
     "<\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):"
     "\\([^" org-non-link-chars " ]"
     "[^" org-non-link-chars "]*"
     "\\)>")
    org-plain-link-re
    (concat
     "\\<\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):"
     (org-re "\\([^ \t\n()<>]+\\(?:([[:word:]0-9_]+)\\|\\([^[:punct:] \t\n]\\|/\\)\\)\\)"))
    ;;   "\\([^]\t\n\r<>() ]+[^]\t\n\r<>,.;() ]\\)")
    org-bracket-link-regexp
    ;; "\\[\\[\\([^][]+\\)\\]\\(\\[\\([^][]+\\)\\]\\)?\\]"
    "\\[\\[\\([^][]+\\)\\]\\(\\[\\([^[]*?\\[[^]]*?\\][^]]*?\\|[^][]+\\)\\]\\)?\\]"
    org-bracket-link-analytic-regexp
    (concat
     "\\[\\["
     "\\(\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):\\)?"
     "\\([^]]+\\)"
     "\\]"
     "\\(\\[" "\\([^[]*?\\[[^]]*?\\][^]]*?\\|[^]]+\\)" "\\]\\)?"
     ;; "\\(\\[" "\\([^]]+\\)" "\\]\\)?"
     "\\]")
    org-bracket-link-analytic-regexp++
    (concat
     "\\[\\["
     "\\(\\(" (mapconcat 'regexp-quote (cons "coderef" org-link-types) "\\|") "\\):\\)?"
     "\\([^]]+\\)"
     "\\]"
     "\\(\\[" "\\([^]]+\\)" "\\]\\)?"
     "\\]")
    org-any-link-re
    (concat "\\(" org-bracket-link-regexp "\\)\\|\\("
        org-angle-link-re "\\)\\|\\("
        org-plain-link-re "\\)")))

Wie oben erwähnt, ist das Problem des Bearbeitens von Verknüpfungen damit jedoch nicht gelöst (Org möchte Klammern weiterhin durch geschweifte Klammern ersetzen.) Dies kann auch nur eine Verschachtelungsebene einer Gruppe mit geschweiften Klammern behandeln.

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.