Como posso misturar japonês e inglês na mesma tabela de modo organizacional (que usa fontes de largura fixa)? Algo como:
| mmmmmm | | | ウ ど う デ シ ウ | | | フ ー フ | フ ー フ |
não vai alinhar. O Emacs simplesmente conta os caracteres japoneses como um, quando na verdade eles são 10% maiores.
A largura de uma coluna pode ser definida em pixels? Eu sei que <10> definiria a largura, mas isso não ajuda, pois conta em termos de letras de largura fixa.
O problema é basicamente como o emacs alinha as colunas (usando a largura da fonte).
C-c C-c
enquanto está em uma célula? Acabei de colar seu exemplo em um buffer de modo organizacional, sucessoC-c C-c
e tudo alinhado de maneira adequada.:align-to
propriedade display, descrita em gnu.org/software/emacs/manual/html_node/elisp/… .Respostas:
Isso depende das fontes que você está usando. E não acho que o Elisp tenha capacidade de alinhamento no nível de pixel.
A organização calcula a largura da sequência com, em
string-width
vez delength
.string-width
retorna 1 para caracteres ASCII e CJK de meia largura ou 2 para caracteres de largura total. Avalie o seguinte código para mostrar que:Agora, mesmo que o modo Org tenha a resposta certa da propriedade sting e tenha adicionado blocos ao redor de strings, é o trabalho do mecanismo de exibição do Emacs colocar onde esses bits aparecem na tela.
O mecanismo de exibição do Emacs obtém informações de fonte do sistema operacional subjacente. Para simplificar o problema complexo, digamos que, com a sua configuração,
m
a largura de 5 pixels e "は" seja 10. Nesse caso, eles estarão perfeitamente alinhados porque a suposição do modo Org ("は" ocupa o dobro da largura de " m ") corresponde aos pixels reais na tela.Em vez disso, se a configuração das fontes tiver 7 pixels para "m" e 10 pixels para "は", as coisas não corresponderão. E não há nada no modo Org nem o mecanismo de exibição pode fazer. Eles fizeram o que disseram, pela sua configuração, para fazer.
fonte