Posso criar links no modo organizacional que contenham colchetes, [ou]?


13

Existe alguma maneira de escapar de colchetes ( [e ]) para que eles possam ser incluídos na descrição de um link no modo Org? O link a seguir não funciona, por exemplo:

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

Eu esperava que o uso de uma barra invertida ( \[) funcionasse ou que houvesse uma entidade organizacional, mas esse não parece ser o caso.


1
O problema é que os links na organização são analisados ​​usando expressões regulares e essa tarefa seria equivalente a recursão, que não pode ser analisada com expressões regulares. Se você quisesse adicionar apenas um nível de recursão, isso seria possível com o patch org-make-link-regexps, mas em geral isso não pode ser feito com a configuração atual.
wvxvw

O escape pode ser feito. Você pode tentar adaptar o regexp relevante org-bracket-link-regexppara lidar com isso, embora org-insert-linkainda queira substituir os colchetes por colchetes e isso possa ter outras ramificações.
politza 29/01

Ah, eu acabei de me lembrar disso \[e \]devo dar equações exibidas (como $$), não colchetes.
Omar

Respostas:


5

Uma solução funcional, porém não tão bonita, é usar as macros do modo organizacional .

As macros abaixo são substituídas pelos códigos ASCII do [e ]ao exportar para html ou 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}}}]]

Referência


Obrigado, mas eu esperava convencer o modo org a renderizá-los como colchetes dentro do buffer. É claro que sua solução funciona para exportação.
Omar

Não funciona para exportação de HTML.
21418 Alex

3

Abaixo está a versão modificada da org-make-link-regexpqual permitirá um nível de aninhamento de colchetes dentro da descrição:

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

Mas, como observado acima, isso não resolve o problema de editar links (a organização ainda desejará substituir colchetes por colchetes.) Isso também pode lidar apenas com um nível de aninhamento de um grupo entre colchetes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.