Czy mogę tworzyć linki w trybie organizacji zawierające nawiasy kwadratowe, [lub]?

13

Czy jest jakiś sposób na ucieczkę nawiasów ( [i ]), aby można je było uwzględnić w opisie łącza w trybie organizacji? Poniższy link nie działa, na przykład:

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

Miałem nadzieję, że użycie odwrotnego ukośnika ( \[) zadziała lub że będzie org-byt, ale wydaje się, że tak nie jest.

Omar
źródło
1
Problem polega na tym, że łącza w organizacji są analizowane przy użyciu wyrażeń regularnych, a to zadanie byłoby równoważne rekurencji, której nie można przeanalizować za pomocą wyrażeń regularnych. Jeśli chcesz dodać tylko jeden poziom rekurencji, byłoby to możliwe poprzez łatanie org-make-link-regexps, ale ogólnie rzecz biorąc, nie można tego zrobić przy obecnej konfiguracji.
wvxvw
Ucieczki można zrobić. Możesz spróbować dostosować odpowiednie wyrażenie regularne, org-bracket-link-regexpaby to obsłużyć, ale org-insert-linknadal chcesz zastąpić nawiasy klamrowe i może mieć inne konsekwencje.
politza
Och, właśnie to zapamiętałem \[i mam \]podać wyświetlane równania (jak $$), a nie nawiasy klamrowe.
Omar

Odpowiedzi:

5

Działającym rozwiązaniem, choć nie tak pięknym, jest użycie makr trybu org .

Poniższe makra są zastępowane kodami ASCII [i ]podczas eksportowania do HTML lub Lateksu.

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

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

Odniesienie

Kaushal Modi
źródło
Dzięki, ale miałem nadzieję przekonać tryb org do renderowania ich jako nawiasów wewnątrz bufora. Twoje rozwiązanie działa oczywiście na eksport.
Omar
Nie działa w przypadku eksportu HTML.
Alex
3

Poniżej znajduje się zmodyfikowana wersja, org-make-link-regexpktóra pozwoli na jeden poziom zagnieżdżenia nawiasów kwadratowych w opisie:

(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 "\\)")))

Ale jak wspomniano powyżej, nie rozwiązuje to problemu edycji łączy (Org nadal będzie chciał zastąpić nawiasy klamrowe). Może to również obsłużyć tylko jeden poziom zagnieżdżenia jednej grupy nawiasowej.

wvxvw
źródło