pertanyaan ini sebenarnya muncul karena saya suka menggunakan font non-monospace, (Sabon, Minion, Garamond, dll.) Ini menyebabkan masalah ketika menggunakan mode indentasi-org, karena teks di bawah judul sekarang tidak selaras dengan berita utama. Contoh:
Fonnya adalah Georgia. Sekarang, jika saya beralih ke konsol:
Saya pikir masalahnya adalah bahwa dalam font non-monospace, "spasi" dan * tidak memakan ruang yang sama. Meskipun saya tidak tahu bagaimana menyelesaikannya. Saya telah mencari di internet dan tidak bisa menemukan tutorial untuk memperbaiki indentasi sendiri. Saya sudah mencoba untuk membaca org-indent.el tetapi ini merupakan jalan panjang bagi saya untuk mengerti. Bantuan sangat dihargai!
indentation
fonts
Alex
sumber
sumber
org-indent
tidak benar-benar ada, mereka hanyaline-prefix
sifat, sehingga mereka dapat digantikan oleh karakter lain selama itu tidak terlihat.SPC
karakter tetapi dengan properti teks (atau hamparan) yang memaksakan wajah yang (secara default) memiliki font monospace. Mungkin permintaan penyempurnaan Organisasi sedang dilakukan. ;-)Jawaban:
Salah satu solusinya adalah memodifikasi
org-indent-strings
menggunakan bintang alih-alih spasi sebagai karakter lekukan. Ini berarti bahwa lebar lekukan akan selalu benar, bahkan ketika menggunakan font yang proporsional. Triknya adalah mengatur warna latar depan lekukan menjadi sama dengan warna latar belakang, sehingga bintang-bintang menjadi tidak terlihat.Kita dapat mencapai ini dengan kode berikut, yang menyarankan fungsi
org-indent-initialize
:Hasilnya terlihat seperti ini untuk saya di Mac OS X menggunakan
emacs -Q
dan(set-face-font 'default :family "Gill Sans")
:sumber
(concat (make-string (1- i) ?\ )
ke(concat (make-string (1- i) ?*)
dalam definisiorg-indent-initialize
yaitu(defun org-indent-initialize...
kemudian gunakan Mx byte-compile-file untuk mengkompilasi org-indent.el ke org-indent.elc. Kemudian mulai ulang emacs.Jawaban yang sudah usang itu sangat bagus, tetapi tidak cukup untuk saya. Saya saat ini menggunakan Emacs 24.4 dan org 8.2.4, dan memberi saran
org-indent-initialize
tidak melakukan apa-apa. Saya harus mendefinisikan kembali fungsi dengan karakter indentasi yang diubah, dan itu berhasil. Mungkin ketika saya meningkatkan ke Emacs 24.5 dan org 8.3 nasihat akan bekerja.Tetapi saya juga harus membuat beberapa penyesuaian lainnya, karena saya menggunakan font dengan ukuran variabel dengan ukuran yang berbeda untuk level heading yang berbeda, yang berarti bahwa heading level-1
*
tidak sama lebar dengan level-2, dan seterusnya.Jadi saya juga harus melakukan ini:
org-hide
(digunakan untuk membuat indentasi baris judul) danorg-indent
(digunakan untuk indentasi garis non-judul) untuk memastikan mereka menggunakan font yang sama pada ukuran yang sama.org-indent-boundary-character
untuk*
bukan default(spasi). Ini adalah karakter yang dimasukkan setelah karakter lekukan tetapi sebelum konten. Saya tidak yakin apakah mengubah ini adalah suatu keharusan, tetapi tampaknya membantu konsistensi. Ini mungkin tergantung pada font yang Anda gunakan, ukuran, dll.
Melakukan hal-hal itu selain membuat perubahan menjadi
org-indent-initialize
usang disediakan tampaknya telah melakukannya. Saya berakhir dengan buffer yang terlihat seperti ini:Anda dapat melihat bahwa, ketika level judul turun, indentasi tidak sejajar dengan teks judul. Saya pikir itu karena menggunakan font yang lebih kecil untuk judul tingkat bawah, dan saya tidak berpikir ada cara mudah untuk memperbaikinya. Dimungkinkan untuk melakukan sesuatu dengan properti teks seperti
line-prefix
danwrap-prefix
, karena itu dapat diatur ke gambar dan karakter khusus, tetapi itu mungkin akan rumit dan lambat. Jika Anda menggunakan ukuran font yang sama untuk semua level tajuk, ini mungkin tidak akan menjadi masalah.Bagaimanapun, ini mungkin cukup bagus. :)
PS Seperti yang diminta, inilah
org-level
wajah saya . Ini disalin daricustom-set-faces
, tetapi jika Anda tidak menggunakancustomize
Anda dapat mengaturnya di luar itu.sumber
solarized-dark
tema, yang merupakan bagian darisolarized-theme
paket yang dapat Anda instal dari ELPA. Sedangkan untukorg-level-*
wajah, saya akan menambahkannya ke jawaban di atas.org-bullets
paket. Jalankanpackage-list-packages
dan periksa semua paket yang dimulai denganorg-
. :)Entah bagaimana saya tidak bisa mendapatkan jawaban lain yang berfungsi untuk pengaturan saya, tetapi perbaikan tercepat dan termudah yang berhasil bagi saya adalah:
Kemudian, ubah saja
Font Family
atribut ke font monospace Anda (dalam kasus saya,Iosevka
).Dan itu benar - benar semua yang harus Anda lakukan , karena
org-indent
(wajah untuk lekukan garis besar) secara otomatis mewarisi dariorg-hide
(wajah yang digunakan untuk menyembunyikan bintang terkemuka di berita utama)sumber
Solusi yang lebih sederhana: dalam mode org, tekan
M-:
dan jalankan yang berikut iniAnda mungkin perlu
M-x font-lock-fontify-buffer
setelah itu. Solusi ini hanya memaksa karakter utama (spasi dan bintang) untuk menggunakan font monospace.Juga, Anda ingin mengganti "Ubuntu Mono" dengan font monospace yang Anda pilih,
sumber