Sejajarkan kolom dalam tabel mode Org dengan font Jepang


Bagaimana saya bisa mencampur Jepang dan Inggris dalam tabel mode-org yang sama (yang menggunakan font dengan lebar tetap)? Sesuatu seperti:

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

tidak akan selaras. Emacs hanya menghitung karakter Jepang sebagai satu, padahal memang mereka lebih seperti 10% lebih besar.

Bisakah lebar kolom diatur dalam piksel? Saya tahu bahwa <10> akan mengatur lebar, tapi itu tidak membantu, karena itu dihitung dalam hal huruf lebar tetap.

Masalahnya pada dasarnya adalah bagaimana emacs meluruskan kolom (menggunakan lebar font).


Sudahkah Anda mencoba menyelaraskan tabel dengan C-c C-csaat Anda berada di sel? Saya baru saja menempelkan contoh Anda ke buffer mode-org, tekan C-c C-c, dan semuanya selaras dengan baik.
elethan

Ini mungkin sesuatu yang perlu ditambahkan ke mode-org. Dimungkinkan untuk mencapai ini menggunakan :align-toproperti tampilan, yang dijelaskan dalam gnu.org/software/emacs/manual/html_node/elisp/… .
legoscia

@elethan: ya, beberapa contoh berfungsi dengan kombinasi font Barat, ukuran wajah, dan beberapa teks Jepang tertentu. Emacs mencoba menyelaraskan contoh seperti di atas dan kadang-kadang itu benar. Namun, ini hanya masalah keberuntungan. Secara umum, emacs buta untuk ini.
Quora Feans

Apakah Anda tidak memerlukan font monospasi untuk ini? Dalam hal ini stackoverflow.com/q/3758139/4050592 akan membantu asalkan Anda memiliki font Jepang monospasi yang dapat Anda gunakan.
Andrew Swann

Jawaban:


Ini tergantung pada font yang Anda gunakan. Dan saya tidak berpikir Elisp memiliki kemampuan penyelarasan tingkat piksel.

Org menghitung lebar string dengan string-widthbukannya length. string-widthmengembalikan 1 untuk ASCII dan karakter CJK setengah lebar atau 2 untuk karakter full-lebar. Evaluasi kode berikut akan menunjukkan kepada Anda bahwa:

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

Sekarang, meskipun mode Org mendapatkan jawaban yang tepat dari properti sengatan, dan menambahkan pembalut di sekitar string, itu adalah tugas mesin layar Emacs untuk menempatkan bit-bit tersebut di layar.

Mesin layar Emacs mendapat informasi font dari OS yang mendasarinya. Untuk membuat masalah yang kompleks menjadi sederhana, katakanlah, dengan konfigurasi Anda, mlebar adalah 5 piksel dan "は" adalah 10. Dalam hal ini mereka akan diselaraskan dengan sempurna karena asumsi mode Org ("は" membutuhkan dua kali lebar " m ") cocok dengan piksel aktual di layar Anda.

Sebaliknya, jika konfigurasi font Anda memiliki 7 piksel untuk "m" dan 10 piksel untuk "は", semuanya tidak akan cocok. Dan tidak ada mode Org yang dapat dilakukan oleh mesin Display. Mereka melakukan apa yang mereka perintahkan, berdasarkan konfigurasi Anda, untuk dilakukan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.