essa pergunta realmente surge porque eu gosto de usar fontes não monoespaçadas (Sabon, Minion, Garamond etc.) Isso causa um problema ao usar o modo de indentação orgânica, pois o texto sob as manchetes agora não está alinhado com as manchetes. Exemplo:
A fonte é Georgia. Agora, se eu mudar para consolas:
Eu acho que o problema é que, em fontes não monoespaçadas, o "espaço" e o * não ocupam o mesmo espaço. Embora eu não saiba como resolver isso. Eu pesquisei na internet e não consegui encontrar um tutorial para ajustar o recuo. Eu tentei ler org-indent.el, mas é um tiro no escuro para eu entender. A ajuda é muito apreciada!
indentation
fonts
Alex
fonte
fonte
org-indent
não estão realmente lá, são apenasline-prefix
propriedades, portanto podem ser substituídos por qualquer outro caractere, desde que invisível.SPC
chars, mas com a propriedade text (ou overlay) que impõe uma face que (por padrão) possui uma fonte monoespaçada. Talvez uma solicitação de aprimoramento da organização esteja em ordem. ;-)Respostas:
Uma solução é modificar
org-indent-strings
para usar estrelas em vez de espaços como o caractere de indentação. Isso significa que a largura da indentação sempre estará correta, mesmo ao usar uma fonte proporcional. O truque é definir a cor de primeiro plano da indentação como a cor de fundo, para que as estrelas fiquem invisíveis.Podemos conseguir isso com o seguinte código, que aconselha a função
org-indent-initialize
:O resultado é assim para mim no Mac OS X usando
emacs -Q
e(set-face-font 'default :family "Gill Sans")
:fonte
(concat (make-string (1- i) ?\ )
para(concat (make-string (1- i) ?*)
na definição deorg-indent-initialize
ie(defun org-indent-initialize...
, use Mx byte-compile-file para compilar org-indent.el a org-indent.elc. Em seguida, reinicie o emacs.a resposta de obsoleta é muito boa, mas não funcionou muito bem para mim. Atualmente, estou no Emacs 24.4 e na 8.2.4, e o conselho
org-indent-initialize
não fez nada. Eu tive que redefinir a função com o caractere de recuo alterado, e isso funcionou. Talvez quando eu atualizar para o Emacs 24.5 e org 8.3, o aviso funcionará.Mas também tive que fazer alguns outros ajustes, porque uso fontes de tamanho variável de tamanho diferente para diferentes níveis de cabeçalho, o que significa que um cabeçalho de nível 1
*
não tem a mesma largura que um de nível 2 e assim por diante.Então eu também tive que fazer isso:
org-hide
(usadas para recuar linhas de título) eorg-indent
(usadas para recuar linhas que não sejam de título) para garantir que elas usem a mesma fonte no mesmo tamanho.org-indent-boundary-character
como em*
vez do padrão(um espaço). Esse é o caractere que é inserido após os caracteres de recuo, mas antes do conteúdo. Não tenho certeza se mudar isso é uma necessidade, mas parece ajudar a consistência. Pode depender da fonte que você está usando, tamanhos, etc.
Fazer essas coisas, além de fazer a alteração
org-indent-initialize
como obsoleta fornecida, parece ter feito isso. Acabo com um buffer parecido com este:Você pode ver que, à medida que o nível do título diminui, o recuo não se alinha perfeitamente ao texto do cabeçalho. Acho que é por causa do uso de fontes menores para títulos de nível inferior, e não acho que haja uma maneira fácil de corrigir isso. Pode ser possível fazer algo com propriedades de texto como
line-prefix
ewrap-prefix
, porque elas podem ser configuradas para imagens e caracteres especiais, mas isso provavelmente seria complicado e lento. Se você usar o mesmo tamanho de fonte para todos os níveis de cabeçalho, isso provavelmente não será um problema.Enfim, isso provavelmente é bom o suficiente. :)
PS Conforme solicitado, aqui estão meus
org-level
rostos. Eles são copiadoscustom-set-faces
, mas se você não usar,customize
pode configurá-los fora dele.fonte
solarized-dark
tema, que faz parte dosolarized-theme
pacote que você pode instalar no ELPA. Quanto aosorg-level-*
rostos, vou adicioná-los à resposta acima.org-bullets
pacote. Executepackage-list-packages
e confira todos os pacotes começando comorg-
. :)De alguma forma, não consegui que as outras respostas funcionassem para minha configuração, mas a correção mais rápida e fácil que funcionou para mim foi:
Em seguida, basta alterar o
Font Family
atributo para sua fonte monoespaçada (no meu casoIosevka
).E isso é literalmente tudo o que você precisa fazer , pois
org-indent
(face para recuo de contorno) herda automaticamente deorg-hide
(face usada para ocultar estrelas principais nas manchetes)fonte
Uma solução muito mais simples: no modo organizacional, pressione
M-:
e execute o seguinteVocê pode precisar
M-x font-lock-fontify-buffer
depois disso. Essa solução simplesmente força os caracteres principais (espaços e estrelas) a usar uma fonte monoespaçada.Além disso, convém substituir o "Ubuntu Mono" por uma fonte monoespaçada de sua escolha,
fonte