Чи можу я зробити посилання в Org Mode, які містять дужки, [або]?


13

Чи є можливість уникнути дужок ( [і ]), щоб їх можна було включити в опис посилання на режим Org? Наступне посилання не працює, наприклад:

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

Я сподівався, що використання зворотної косої риски ( \[) спрацює, або що буде орган-сутність, але, здається, це не так.


1
Проблема полягає в тому, що посилання в Org аналізуються за допомогою регулярних виразів, і це завдання буде еквівалентним рекурсії, яку неможливо розібрати з регулярними виразами. Якщо ви хочете додати лише один рівень рекурсії, це можна зробити шляхом виправлення org-make-link-regexps, але в цілому цього неможливо зробити за допомогою поточної установки.
wvxvw

Втечу можна зробити. Ви можете спробувати адаптувати відповідний повторний випуск org-bracket-link-regexpдля вирішення цього питання, хоча він org-insert-linkвсе ще хоче замінити дужки дужками, і це може мати інші наслідки.
politza

О, я просто згадав про це \[і \], мабуть, давати відображені рівняння (на кшталт $$), а не уникнути дужок.
Омар

Відповіді:


5

Працюючим рішенням, не дуже гарним, є використання org-режиму макросів .

Наведені нижче макроси замінюються кодами ASCII [та ]при експорті в html або латекс.

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

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

Довідково


Дякую, але я сподівався переконати org-mode вивести їх як дужки всередині буфера. Ваше рішення, звичайно, працює на експорт.
Омар

Не працює для експорту HTML.
Алекс

3

Нижче наведена модифікована версія, org-make-link-regexpяка дозволить забезпечити один рівень вкладення квадратних дужок всередині опису:

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

Але, як зазначалося вище, це не вирішує проблему редагування посилань (Org все одно захоче замінити дужки дужками.) Це також може обробляти лише один рівень вкладення однієї групи, що складається з дужок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.