Texto e código inline com aspas no modo de organização
37
No modo Org, eu posso colocar texto com =ou ~para colocar texto no modo literal ou código embutido .
No entanto, isso falhará se o texto tiver aspas e não foi possível encontrar uma explicação ou solução alternativa na documentação .
Por exemplo:
=hello= Renderiza como literalmente
~hello~ Renderiza como código
=hello'= Falha ao renderizar como literalmente
~hello'~ Falha ao renderizar como código
A única solução que encontrei até agora é a inserção de caracteres invisíveis C-x 8 <RET> 200b <RET>, como digitação , conforme explicado nesta pergunta .
Por que isso é (é um bug?) E como posso evitar esse problema sem inserir caracteres invisíveis?
Primeiro de tudo: Este é o Emacs. Não é um bug, é uma configuração!
Em segundo lugar, @glucas está correto ao dizer que você precisa modificarorg-emphasis-regexp-components para obter o que deseja. No entanto, gostaria de sugerir duas modificações no código dele (@ Malabarba) e fornecer um pouco mais de contexto:
Você não precisa copiar o valor inteiro do org-emphasis-regexp-componentsarquivo init para modificar um único componente. Para o seu caso de uso, o seguinte é suficiente:
Você não precisa modificar org-emphasis-regexp-componentsantes de carregar org-modevia (require 'org). Basta adicionar a seguinte linha após as modificações:
Caso você queira personalizar outros aspectos de como a marcação de ênfase funciona org-mode, saiba o seguinte:
O valor de org-emphasis-regexp-componentsé uma lista com cinco entradas.
A primeira entrada controla quais caracteres têm permissão para preceder imediatamente os caracteres de marcação. Se você quiser ter algo como why=hello=renderizar corretamente, precisará modificar esta entrada.
(setcar org-emphasis-regexp-components "...")
A segunda entrada controla quais caracteres têm permissão para seguir imediatamente os caracteres de marcação. Se você quiser ter algo como =hello=thererenderizar corretamente, precisará modificar esta entrada.
A terceira entrada especifica os caracteres que não são permitidos como caracteres de borda , ou seja, caracteres que seguem imediatamente um caractere de marcação de abertura ou precedem um caractere de marcação de fechamento. Você precisará modificar isso para tornar as coisas como ='hello'=renderizadas corretamente.
A quarta entrada lista os caracteres permitidos no corpo da sua sequência marcada, ou seja, caracteres que aparecem entre os caracteres da borda. Você raramente precisará modificar isso; por padrão, qualquer caractere é permitido como um caractere do corpo.
A quinta entrada especifica quantas novas linhas são permitidas dentro de uma expressão marcada. Por padrão, org-modepermite uma única nova linha. Portanto, se você deseja adicionar marcações ao texto que abrange mais de duas linhas consecutivas, será necessário modificar essa entrada.
... onde Nestá o número de novas linhas que você deseja permitir.
Publicações relacionadas
As pessoas parecem se deparar com esse problema com bastante frequência. Além da postagem que você mencionou , há pelo menos mais duas perguntas no StackOverflow que lidam com problemas muito semelhantes:
Votei na sua resposta, mas também gostaria de elogiar a qualidade da resposta.
Kaushal Modi
Obrigado @itsjeyd Isso funciona muito bem Se eu executar essas duas linhas interativamente quando o Emacs estiver totalmente carregado com meus buffers já abertos. No entanto, e por incrível que pareça, eu encontro "Symbol's value as variable is void: org-emphasis-regexp-components"mesmo que eu coloque essas duas linhas na parte inferior do meu .emacsarquivo. Alguma idéia de por que esse poderia ser o caso?
Amelio Vazquez-Reina
@ AmelioVazquez-Reina De nada :) Só para ter certeza: Você está (require 'org)no seu .emacsarquivo antes de fazer alguma personalização org-emphasis-regexp-components?
itsjeyd
11
@ AmelioVazquez-Reina Estou feliz que tudo esteja funcionando corretamente para você agora :) Suas observações estão corretas - você não precisa (require 'org)no seu arquivo init para poder usá-lo. Caso contrário, o Emacs o carregará automaticamente quando você: (a) abrir um .orgarquivo pela primeira vez na sessão atual ou (b) ativar o modo manualmente via M-xorg-modepela primeira vez na sessão atual, ou (c) ) quando restaura uma área de trabalho salva que inclui pelo menos um .orgarquivo. (continuação)
itsjeyd
11
@ AmelioVazquez-Reina (continuação) A questão é : o Emacs não será carregado org-modeautomaticamente só porque você colocou algumas personalizações no seu arquivo init. É por isso que você precisa (require 'org)antes de personalizar qualquer uma de suas variáveis. Sem carregar completamente o modo, o Emacs não saberá o que fazer com variáveis como org-emphasis-regexp-components; eles não são definidos quando o Emacs os encontra pela primeira vez, daí a Symbol's value as variable is voidmensagem.
"Symbol's value as variable is void: org-emphasis-regexp-components"
mesmo que eu coloque essas duas linhas na parte inferior do meu.emacs
arquivo. Alguma idéia de por que esse poderia ser o caso?(require 'org)
no seu.emacs
arquivo antes de fazer alguma personalizaçãoorg-emphasis-regexp-components
?(require 'org)
no seu arquivo init para poder usá-lo. Caso contrário, o Emacs o carregará automaticamente quando você: (a) abrir um.org
arquivo pela primeira vez na sessão atual ou (b) ativar o modo manualmente viaM-x
org-mode
pela primeira vez na sessão atual, ou (c) ) quando restaura uma área de trabalho salva que inclui pelo menos um.org
arquivo. (continuação)org-mode
automaticamente só porque você colocou algumas personalizações no seu arquivo init. É por isso que você precisa(require 'org)
antes de personalizar qualquer uma de suas variáveis. Sem carregar completamente o modo, o Emacs não saberá o que fazer com variáveis comoorg-emphasis-regexp-components
; eles não são definidos quando o Emacs os encontra pela primeira vez, daí aSymbol's value as variable is void
mensagem.Há uma opção muito mais simples: use blocos de origem embutidos :
Isso funciona sem problemas para caracteres como aspas e fornece destaque de sintaxe para código embutido.
Para incluir o código-fonte embutido ao exportar, adicione esta declaração ao cabeçalho:
fonte
Você pode remover os caracteres de citação
org-emphasis-regexp-components
conforme descrito por @Malabarba nesta postagem do blog .O código relevante dessa postagem:
Consulte a sequência de documentos para
org-emphasis-regexp-components
: por padrão, os caracteres de citação são considerados:fonte