Saat ini, saya memasukkan karakter unicode (terutama simbol matematika) menggunakan metode input TeX. Ini rumit, karena, untuk setiap karakter, saya harus melakukan hal berikut:
- Beralih ke metode input TeX dengan menekan
C-\
- ketik ekspresi lateks seperti
\Bbb{R}
atau\Leftrightarrow
Ada subset karakter unicode yang relatif kecil (10-20) yang saya sisipkan sepanjang waktu.
T: Apakah ada cara untuk memasukkan karakter unicode dengan sedikit (2-4) penekanan tombol?
Jawaban:
Anda dapat menggunakan
abbrev-mode
untuk membuat string yang "meluas" ke karakter unicode yang Anda inginkan. Sebagai contoh,abbrev
tabel berikut mendefinisikan singkatan untuk tiga huruf kecil pertama dari alfabet Yunani:Anda kemudian dapat memberi tahu
text-mode
(atau mode apa pun yang Anda inginkan) untuk mewarisi tabel unicode Anda:Pergi ke buffer dalam mode teks. Nyalakan
abbrev-mode
. Ketikualpha
dan karakter non-kata (spasi, titik, dll.), Dan saksikan meluas ke α.sumber
Anda dapat menentukan urutan kunci Anda sendiri dengan fungsi elisp
global-set-key
danlocal-set-key
. Dengan demikian, disarankan untuk menggunakan C-cdan satu huruf untuk urutan kunci yang ditentukan pengguna. (Kalau tidak, mungkin Anda mengganti urutan kunci yang terikat oleh pustaka emacs-lisp lainnya. Kemudian Anda mendapat masalah ketika Anda menemukan bahwa versi pustaka dari urutan kunci akan sangat berguna bagi Anda.)Jika Anda ingin menggunakan urutan ini terlepas dari mode utama Anda dapat mengikatnya secara global.
Sebagai contoh, Anda dapat menambahkan
(global-set-key (kbd "C-c a") "⇔")
ke file konfigurasi Anda
~/.emacs
.Atau, Anda dapat menggunakan tombol-tombol ini tergantung pada mode utama.
Contohnya adalah:
Ini bekerja dengan
auctex
. Jika Anda menggunakan aslitex-mode
ataulatex-mode
mungkin Anda harus menggantinyaTeX-mode-hook
dengantex-mode-hook
.Perhatikan, bahwa ada juga
insert-char
terikat C-x 8 RET. Dengan itu Anda dapat memasukkan karakter utf8 jika Anda tahu kode mereka. Jika Anda tidak tahu kode Anda dapat memasukkannya dengan deskripsi mereka tetapi itu menjadi rumit.Ada juga mode khusus yang mendukung pengguna dengan input simbol lateks, seperti
company-math
-Mode danac-math
-mode .Keduanya adalah mode penyelesaian.
company
bekerja dengan menu mouse danac
(autocomplete) bekerja dengan tab-kunci.Tetapi saya tidak yakin dengan status saat ini dari paket-paket ini. Anda dapat menginstal mode ini per melpa jika Anda ingin mencobanya.
sumber
C-c
adalah bahwa Anda bisa yakin itu tidak akan bertentangan dengan binding kunci apa pun yang disediakan oleh Emacs atau perpustakaan yang mungkin Anda gunakan.Anda mengatakan: Ada subset karakter unicode yang relatif kecil (saya kira 10-20) saya menyisipkan sepanjang waktu.
Dalam hal itu, seperti yang ditunjukkan oleh @Tobias, Anda dapat mengikat, untuk masing-masingnya, urutan kunci sederhana untuk (a) perintah yang memasukkan karakter itu atau (b) string karakter tunggal dengan karakter itu (ini bertindak seperti makro keyboard, untuk menyisipkan karakter).
Perpustakaan
ucs-cmds.el
dapat membantu Anda menentukan perintah tersebut. Perintah yang dihasilkan memiliki nama yang sama dengan karakter. Anda bisa menggunakan makroucsc-make-commands
untuk mendefinisikan seluruh rangkaian perintah yang menyisipkan karakter jenis tertentu.Misalnya, Anda bisa meletakkan ini di file init Anda untuk menentukan perintah yang memasukkan semua simbol matematika Unicode:
Itu memberi Anda perintah yang namanya sama dengan karakter matematika. Ikat semua ini yang sering Anda gunakan ke kunci yang mudah digunakan. Sebagai contoh:
(Atau ikat kunci ke perintah seperti itu hanya dalam mode Tex, gunakan
define-key
dengan keymapnya.)Dengan sesederhana itu
(ucsc-make-commands "^math")
Anda telah tersedia semua perintah penyisipan karakter yang tercantum di bawah ini.Ada juga karakter Unicode lainnya, yang namanya tidak dimulai dengan
math
tetapi yang digunakan dalam matematika - misalnya, karakterPARTIAL DIFFERENTIAL
. Anda dapat dengan mudah membuat perintah yang menyisipkan karakter-karakter itu juga. (Dan perhatikan bahwa karakter yang namanya dimulaimath
mungkin perlu menggunakan font khusus - banyak font yang tidak mendukungnya.)Tentu saja Anda dapat menggunakan ekspresi reguler yang lebih ketat daripada
^math
, jika Anda ingin mendefinisikan hanya karakter yang cocok dengan pola tersebut. Sebagai contoh, ini mendefinisikan perintah untuk semua karakter diferensial parsial:Itu memberi Anda perintah ini:
Perhatikan bahwa karakter Unicode menamai kata-kata dengan karakter spasi, dan namanya huruf besar. Perintah penyisipan yang sesuai menggunakan tanda hubung sebagai ganti spasi dan huruf kecil bukan huruf besar.
Satu keuntungan dari memiliki perintah yang dinamai karakter yang mereka sisipkan, alih-alih, katakanlah, hanya mengikat kunci ke string tunggal karakter, adalah bahwa Anda dapat menggunakan
M-x
untuk memasukkan karakter yang jarang Anda gunakan, dengan nama menggunakan penyelesaian. Alih-alih menyelesaikan terhadap seluruh rangkaian nama karakter Unicode, Anda menyelesaikan terhadap nama-nama perintah penyisipan karakter yang telah Anda tetapkan.Ini adalah perintah yang menyisipkan karakter yang namanya dimulai dengan
math
. Mereka adalah apa yang Anda dapatkan dengan mengevaluasi(ucsc-make-commands "^math")
....
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
sumber