Tôi có thể tạo liên kết trong Chế độ Org có dấu ngoặc, [hoặc] không?


13

Có cách nào đó để thoát dấu ngoặc ( []) để có thể đưa chúng vào mô tả của liên kết chế độ Org không? Liên kết sau không hoạt động, ví dụ:

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

Tôi hy vọng sử dụng dấu gạch chéo ngược ( \[) sẽ hoạt động hoặc sẽ có một thực thể org, nhưng dường như đó không phải là trường hợp.


1
Vấn đề là các liên kết trong Org được phân tích cú pháp bằng các biểu thức thông thường và tác vụ này sẽ tương đương với đệ quy, không thể được phân tích cú pháp bằng các biểu thức thông thường. Nếu bạn muốn chỉ thêm một cấp đệ quy, điều đó có thể thực hiện được bằng cách vá org-make-link-regexps, nhưng nói chung không thể thực hiện được với thiết lập hiện tại.
wvxvw

Chạy trốn có thể được thực hiện. Bạn có thể cố gắng điều chỉnh biểu thức chính quy có liên quan org-bracket-link-regexpđể xử lý việc này, mặc dù org-insert-linkvẫn muốn thay thế dấu ngoặc bằng dấu ngoặc và nó có thể có các phân nhánh khác.
trị

Ồ, tôi chỉ nhớ điều đó \[\]được cho là đưa ra các phương trình được hiển thị (như $$), không thoát dấu ngoặc.
Omar

Câu trả lời:


5

Một giải pháp làm việc, mặc dù không đẹp lắm, là sử dụng Macros chế độ org .

Các macro bên dưới được thay thế bằng mã ASCII của []khi xuất sang html hoặc latex.

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

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

Tài liệu tham khảo


Cảm ơn, nhưng tôi đã hy vọng thuyết phục chế độ org để hiển thị chúng dưới dạng dấu ngoặc trong bộ đệm. Giải pháp của bạn tất nhiên làm việc cho xuất khẩu.
Omar

Không hoạt động để xuất HTML.
Alex

3

Dưới đây là phiên bản sửa đổi org-make-link-regexpsẽ cho phép một mức lồng nhau của dấu ngoặc vuông bên trong mô tả:

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

Nhưng như đã lưu ý ở trên, điều này không giải quyết được vấn đề chỉnh sửa liên kết (Org vẫn sẽ muốn thay thế dấu ngoặc bằng dấu ngoặc.) Điều này cũng chỉ có thể xử lý một mức lồng nhau của một nhóm được đặt trong ngoặc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.