Bisakah saya membuat tautan dalam Mode Org yang mengandung tanda kurung, [atau]?

13

Apakah ada cara untuk keluar dari tanda kurung ( [dan ]) sehingga mereka dapat dimasukkan dalam deskripsi tautan mode Organisasi? Tautan berikut tidak berfungsi, misalnya:

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

Saya berharap menggunakan backslash ( \[) akan bekerja atau akan ada entitas org, tetapi sepertinya tidak demikian.

Omar
sumber
1
Masalahnya adalah tautan dalam Org diuraikan menggunakan ekspresi reguler, dan tugas ini akan setara dengan rekursi, yang tidak dapat diuraikan dengan ekspresi reguler. Jika Anda hanya ingin menambahkan satu tingkat rekursi, itu bisa dilakukan dengan menambal org-make-link-regexps, tetapi secara umum itu tidak dapat dilakukan dengan pengaturan saat ini.
wvxvw
Lolos bisa dilakukan. Anda dapat mencoba menyesuaikan regexp yang relevan org-bracket-link-regexpuntuk menangani hal ini, meskipun org-insert-linkmasih ingin mengganti tanda kurung dengan kawat gigi dan mungkin ada konsekuensi lainnya.
politza
Oh, saya baru ingat itu \[dan \]seharusnya memberi persamaan yang ditampilkan (seperti $$), bukan tanda kurung.
Omar

Jawaban:

5

Solusi yang berfungsi, tidak begitu cantik, adalah dengan menggunakan mode org Macro .

Makro di bawah ini diganti oleh kode ASCII [dan ]ketika mengekspor ke html atau lateks.

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

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

Referensi

Kaushal Modi
sumber
Terima kasih, tapi saya berharap untuk meyakinkan org-mode untuk menjadikannya sebagai tanda kurung di dalam buffer. Solusi Anda tentu saja berfungsi untuk ekspor.
Omar
Tidak berfungsi untuk ekspor HTML.
Alex
3

Di bawah ini adalah versi yang dimodifikasi org-make-link-regexpyang akan memungkinkan satu tingkat kurung kurung persegi di dalam deskripsi:

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

Tetapi seperti yang disebutkan di atas, ini tidak menyelesaikan masalah pengeditan tautan (Org masih ingin mengganti tanda kurung dengan kurung kurawal.) Ini juga hanya dapat menangani satu level bersarang dari satu grup kurung.

wvxvw
sumber