조직 모드에서 대괄호 [또는]가 포함 된 링크를 만들 수 있습니까?


13

조직 모드 링크 의 설명 에 포함 할 수 있도록 대괄호 ( []) 를 이스케이프 해야합니까? 예를 들어 다음 링크는 작동하지 않습니다.

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

백 슬래시 ( \[)를 사용하거나 조직이있을 수 있기를 희망 했지만 실제로는 그렇지 않습니다.


1
문제는 조직의 링크가 정규식을 사용하여 구문 분석되고이 태스크는 정규식으로 구문 분석 할 수없는 재귀와 동등하다는 것입니다. 한 수준의 재귀 만 추가하려면 패치 org-make-link-regexps를 통해 가능하지만 일반적으로 현재 설정으로는 수행 할 수 없습니다.
wvxvw

탈출이 가능합니다. 브래킷을 중괄호로 바꾸고 싶지만 다른 결과가있을 수 org-bracket-link-regexp있지만이를 처리하기 위해 관련 정규 표현식을 적용하려고 시도 org-insert-link할 수 있습니다.
politza

아, 난 그냥 것을 기억 \[하고 \]표시 식 (같은 줄로되어있다 $$),하지 브래킷을 탈출에게.
Omar

답변:


5

작동하지 않는 솔루션은 조직 모드 매크로 를 사용하는 것 입니다.

아래 매크로는 HTML 또는 라텍스로 내보낼 때 [및 의 ASCII 코드로 대체됩니다 ].

# 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가 그것들을 버퍼 안에 괄호로 렌더링하도록 설득하기를 바랐습니다. 귀하의 솔루션은 물론 수출 작업을 수행합니다.
Omar

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

그러나 위에서 언급 한 것처럼 링크 편집 문제를 해결하지 못합니다 (Org는 여전히 대괄호를 대괄호로 바꾸려고합니다.) 또한 한 대괄호 그룹의 하나의 중첩 수준 만 처리 할 수 ​​있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.