Orgモードテーブルの列を日本語フォントで揃える


12

同じ組織モードテーブル(固定幅フォントを使用)で日本語と英語を混在させるにはどうすればよいですか?何かのようなもの:

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

整列しません。Emacsは、実際に日本語の文字を10%大きくした場合に、単に1つとして数えます。

列の幅をピクセル単位で設定できますか?<10>が幅を設定することは知っていますが、固定幅の文字でカウントされるため、これは役に立ちません。

問題は基本的にemacsがどのように列を揃えるか(フォント幅を使用)です。


C-c C-cセル内にいるときにテーブルを揃えようとしましたか?私はあなたの例を組織モードのバッファhit C-c C-cに貼り付け、すべてがうまく整列しました。
エレサン

これはおそらくorg-modeに追加する必要があるものです。gnu.org/software/emacs/manual/html_node/elisp/…:align-toで説明されているdisplayプロパティを使用してこれを達成することが可能かもしれません。
レゴシア

@elethan:はい。一部の例は、欧米のフォント、フェイスサイズ、および日本語のテキストの特定の組み合わせで機能します。Emacsは上記の例を調整しようとしますが、時々それを正しくします。ただし、これは単なる運の問題です。一般的に、emacsはこれについて盲目です。
Quora Feans 16年

これには等幅フォントは必要ありませんか?この場合、stackoverflow.com / q / 3758139/4050592を使用すると、等幅の日本語フォントを使用できます。
アンドリュース

回答:


5

これは、使用しているフォントによって異なります。そして、Elispにはピクセルレベルの位置合わせ機能があるとは思わない。

組織はのstring-width代わりに文字列の幅を計算しlengthます。 string-widthASCIIおよび半角CJK文字の場合は1、全角文字の場合は2を返します。次のコードを評価すると、次のことがわかります。

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

現在、Orgモードはstingプロパティから正しい答えを得て、文字列の周りにパッドを追加しましたが、それらのビットが画面上で移動する場所を配置するのはEmacsディスプレイエンジンの仕事です。

Emacsディスプレイエンジンは、基盤となるOSからフォント情報を取得します。複雑な問題を簡単にするために、設定で、m幅が5ピクセルで、「は」が10であるとしましょう。この場合、Orgモードの仮定(「は」は幅の2倍であるため、 m ")は、画面上の実際のピクセルと一致します。

代わりに、フォント構成に「m」に7ピクセル、「は」に10ピクセルがある場合、物事は一致しません。また、OrgモードもDisplayエンジンも実行できません。彼らはあなたの設定により、彼らが言ったことをしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.