ブラケット[または]を含むリンクを組織モードで作成できますか?


13

括弧([および])をエスケープして、それらをOrgモードリンクの説明に含めることができる方法はありますか?たとえば、次のリンクは機能しません。

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

バックスラッシュ(\[)を使用することで、または組織が存在することを期待していましたが、そうではないようです。


1
問題は、Orgのリンクが正規表現を使用して解析されることであり、このタスクは再帰と同等であり、正規表現では解析できません。1レベルの再帰のみを追加したい場合は、patching org-make-link-regexpsで実行できますが、一般的には現在のセットアップでは実行できません。
wvxvw

エスケープできます。org-bracket-link-regexpこれを処理するために関連する正規表現を調整しようとすることもできますが、org-insert-linkそれでもブラケットを中括弧に置き換えたいため、他の影響があるかもしれません。
ポリツァ

ああ、私はちょうどそれを覚えていて\[、エスケープされた括弧ではなく、\]表示された方程式(など$$)を与えることになっています。
オマー

回答:


5

動作するソリューションは、それほどきれいではありませんが、組織モードMacrosを使用することです

以下のマクロは、htmlまたはlatexにエクスポートする際の[およびの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がそれらをバッファ内のブラケットとしてレンダリングするように説得したいと思っていました。もちろん、あなたのソリューションはエクスポートのために機能します。
オマー

HTMLエクスポートでは機能しません。
アレックス

3

以下は、org-make-link-regexp説明内に1つのネストレベルの角括弧を許可する修正バージョンです。

(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はブラケットを中括弧で置き換えたいと思うでしょう)。これは、1つのブラケットグループの1つのネストレベルのみを処理できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.