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).
C-c C-c
saat Anda berada di sel? Saya baru saja menempelkan contoh Anda ke buffer mode-org, tekanC-c C-c
, dan semuanya selaras dengan baik.:align-to
properti tampilan, yang dijelaskan dalam gnu.org/software/emacs/manual/html_node/elisp/… .Jawaban:
Ini tergantung pada font yang Anda gunakan. Dan saya tidak berpikir Elisp memiliki kemampuan penyelarasan tingkat piksel.
Org menghitung lebar string dengan
string-width
bukannyalength
.string-width
mengembalikan 1 untuk ASCII dan karakter CJK setengah lebar atau 2 untuk karakter full-lebar. Evaluasi kode berikut akan menunjukkan kepada Anda bahwa: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,
m
lebar 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.
sumber