Aligner les colonnes du tableau du mode Org avec les polices japonaises


12

Comment puis-je mélanger le japonais et l'anglais dans la même table en mode org (qui utilise des polices à largeur fixe)? Quelque chose comme:

| mmmmmm | |
| は ど う デ シ ウ | |
| ハ ー フ | ハ ー フ |

ne s'alignera pas. Emacs compte simplement les caractères japonais comme un, alors qu'en fait ils sont plus gros comme 10%.

La largeur d'une colonne peut-elle être définie en pixels? Je sais que <10> définirait la largeur, mais cela n'aide pas, car cela compte en termes de lettres à largeur fixe.

Le problème est essentiellement comment emacs aligne les colonnes (en utilisant la largeur de police).


Avez-vous essayé d'aligner les tableaux avec C-c C-clorsque vous êtes dans une cellule? Je viens de coller votre exemple dans un tampon en mode org, de frapper C-c C-cet tout est bien aligné.
elethan

C'est probablement quelque chose qui doit être ajouté au mode org. Il pourrait être possible d'y parvenir en utilisant la :align-topropriété display, décrite dans gnu.org/software/emacs/manual/html_node/elisp/… .
legoscia

@elethan: oui, certains exemples fonctionnent avec une certaine combinaison de polices occidentales, de taille de visage et de texte japonais. Emacs essaie d'aligner les exemples comme ci-dessus et parfois il réussit. Cependant, ce n'est qu'une question de chance. En général, emacs est aveugle pour cela.
Quora Feans

Vous n'avez pas besoin d'une police à espacement fixe pour cela? Dans ce cas, stackoverflow.com/q/3758139/4050592 devrait vous aider à condition que vous disposiez d'une police japonaise à espacement fixe que vous pouvez utiliser.
Andrew Swann

Réponses:


5

Cela dépend des polices que vous utilisez. Et je ne pense pas qu'Elisp ait une capacité d'alignement au niveau des pixels.

Org calcule la largeur de la chaîne avec string-widthau lieu de length. string-widthrenvoie 1 pour les caractères ASCII et CJK demi-largeur ou 2 pour les caractères pleine largeur. Évaluer le code suivant vous montrera que:

(string-width "m")
1
(string-width "ハ")
1
(string-width "は")
2

Maintenant, même si le mode Org a obtenu la bonne réponse de la propriété sting et a ajouté des pads autour des chaînes, c'est le travail du moteur d'affichage Emacs de placer où ces bits vont à l'écran.

Le moteur d'affichage Emacs obtient les informations de police du système d'exploitation sous-jacent. Pour simplifier le problème complexe, disons que, avec votre configuration, mla largeur de 5 pixels et "は" est 10. Dans ce cas, ils seront parfaitement alignés car l'hypothèse du mode Org ("は" prend deux fois la largeur de " m ") correspond aux pixels réels de votre écran.

Au lieu de cela, si votre configuration de polices a 7 pixels pour "m" et 10 pixels pour "は", les choses ne correspondent pas. Et il n'y a rien en mode Org ni le moteur d'affichage ne peuvent le faire. Ils ont fait ce qu'ils avaient dit, selon votre configuration, de faire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.