ฉันสามารถสร้างลิงค์ในโหมดองค์กรที่มีเครื่องหมายวงเล็บ [หรือ] ได้หรือไม่?


13

มีทางที่จะหลบหนีวงเล็บ ( [และ]) เพื่อให้สามารถรวมไว้ในคำอธิบายของลิงค์โหมดองค์กรได้หรือไม่? ลิงค์ต่อไปนี้ใช้งานไม่ได้ตัวอย่างเช่น:

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

ฉันหวังว่าการใช้แบ็กสแลช ( \[) จะใช้งานได้หรือว่าจะมีองค์กร org แต่ดูเหมือนจะไม่เป็นเช่นนั้น


1
ปัญหาคือลิงค์ในองค์กรถูกแยกวิเคราะห์โดยใช้นิพจน์ทั่วไปและงานนี้จะเทียบเท่ากับการเรียกซ้ำซึ่งไม่สามารถแยกวิเคราะห์ด้วยนิพจน์ทั่วไป หากคุณต้องการเพิ่มระดับการเรียกซ้ำเพียงระดับเดียวนั่นจะทำได้โดยการปะแก้org-make-link-regexpsแต่โดยทั่วไปแล้วไม่สามารถทำได้ด้วยการตั้งค่าปัจจุบัน
wvxvw

การหลบหนีสามารถทำได้ คุณสามารถลองปรับ regexp ที่เกี่ยวข้อง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 เพื่อแสดงผลเป็นวงเล็บภายในบัฟเฟอร์ แน่นอนว่าโซลูชันของคุณทำงานเพื่อการส่งออก
โอมาร์

ใช้งานไม่ได้กับการส่งออก HTML
Alex

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

แต่ดังที่ได้กล่าวไว้ข้างต้นการทำเช่นนี้ไม่สามารถแก้ปัญหาการแก้ไขลิงก์ได้ (องค์กรจะยังต้องการแทนที่วงเล็บด้วยเครื่องหมายปีกกา) ซึ่งสามารถจัดการได้เพียงหนึ่งระดับของกลุ่มที่อยู่ในวงเล็บ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.