Penyisipan cepat unicode simbol?

8

Saat ini, saya memasukkan karakter unicode (terutama simbol matematika) menggunakan metode input TeX. Ini rumit, karena, untuk setiap karakter, saya harus melakukan hal berikut:

  1. Beralih ke metode input TeX dengan menekan C-\
  2. 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?

Pikiran kosong
sumber
1
Mungkin perlu disebutkan bahwa tidak perlu beralih ke metode input TeX setiap kali. Anda bisa membiarkannya hidup. Satu-satunya downside adalah kebutuhan untuk mengetik \\ ketika Anda ingin backslash literal
usang

Jawaban:

6

Anda dapat menggunakan abbrev-modeuntuk membuat string yang "meluas" ke karakter unicode yang Anda inginkan. Sebagai contoh, abbrevtabel berikut mendefinisikan singkatan untuk tiga huruf kecil pertama dari alfabet Yunani:

(define-abbrev-table 'unicode-table
  '(("ualpha" "α")
    ("ubeta"  "β")
    ("ugamma" "γ"))
    "Unicode characters I use all the time.")

Anda kemudian dapat memberi tahu text-mode(atau mode apa pun yang Anda inginkan) untuk mewarisi tabel unicode Anda:

(define-abbrev-table 'text-mode-abbrev-table
  nil
  "Text mode abbrev table."
  :parents (list unicode-table))

Pergi ke buffer dalam mode teks. Nyalakan abbrev-mode. Ketik ualphadan karakter non-kata (spasi, titik, dll.), Dan saksikan meluas ke α.

Dan
sumber
6

Anda dapat menentukan urutan kunci Anda sendiri dengan fungsi elisp global-set-keydan local-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:

(defun my-latex-hook-function () (local-set-key (kbd "C-c a") "⇔"))
(add-hook 'TeX-mode-hook 'my-latex-hook-function)

Ini bekerja dengan auctex. Jika Anda menggunakan asli tex-modeatau latex-modemungkin Anda harus menggantinya TeX-mode-hookdengan tex-mode-hook.


Perhatikan, bahwa ada juga insert-charterikat 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 dan ac-math-mode .

Keduanya adalah mode penyelesaian. companybekerja dengan menu mouse dan ac(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.

Tobias
sumber
FWIW: Pengguna dapat menggunakan urutan kunci yang mereka suka. Keuntungan dari urutan kunci yang dimulai C-cadalah bahwa Anda bisa yakin itu tidak akan bertentangan dengan binding kunci apa pun yang disediakan oleh Emacs atau perpustakaan yang mungkin Anda gunakan.
Drew
@Rew Ya, saya tahu itu. Risiko potensial konflik dengan urutan kunci perpustakaan adalah alasan rekomendasi saya.
Tobias
Ya, saya pikir itu. Komentar saya adalah untuk kepentingan setiap pembaca dari jawaban Anda yang mungkin mendapatkan kesan berbeda dari " Anda harus mengikuti konvensi untuk menggunakan Cc dan satu huruf untuk urutan kunci yang ditentukan pengguna. " Tidak ada konvensi untuk kunci yang ditentukan pengguna untuk menggunakan Cc ditambah surat. Saya yakin kami setuju - saya hanya ingin ini menjadi jelas bagi pembaca. Jika Anda mengatakan bahwa Anda merekomendasikan mereka menggunakan Cc plus surat (poin bonus untuk mengatakan mengapa) maka saya tidak akan berkomentar. HTH.
Drew
@Drew Itulah alasan saya menambahkan tautan. Teks yang ditautkan membuat semuanya jelas. Sekarang, saya juga menambahkan catatan dalam teks.
Tobias
3

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.eldapat membantu Anda menentukan perintah tersebut. Perintah yang dihasilkan memiliki nama yang sama dengan karakter. Anda bisa menggunakan makro ucsc-make-commandsuntuk 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:

(require 'ucs-cmds)           ; Load the library
(ucsc-make-commands "^math")  ; Use the macro to create commands

Itu memberi Anda perintah yang namanya sama dengan karakter matematika. Ikat semua ini yang sering Anda gunakan ke kunci yang mudah digunakan. Sebagai contoh:

(global-set-key (kbd "C-c S") 'mathematical-bold-capital-sigma)

(Atau ikat kunci ke perintah seperti itu hanya dalam mode Tex, gunakan define-keydengan 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 mathtetapi yang digunakan dalam matematika - misalnya, karakter PARTIAL DIFFERENTIAL. Anda dapat dengan mudah membuat perintah yang menyisipkan karakter-karakter itu juga. (Dan perhatikan bahwa karakter yang namanya dimulai mathmungkin 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:

(ucsc-make-commands "^math.*partial differential")

Itu memberi Anda perintah ini:

mathematical-bold-italic-partial-differential
mathematical-bold-partial-differential
mathematical-italic-partial-differential
mathematical-sans-serif-bold-italic-partial-differential
mathematical-sans-serif-bold-partial-differential

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-xuntuk 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").

mathematical-bold-capital-a
mathematical-bold-capital-alpha
mathematical-bold-capital-b
mathematical-bold-capital-beta
mathematical-bold-capital-c
mathematical-bold-capital-chi
mathematical-bold-capital-d
mathematical-bold-capital-delta

...

mathematical-bold-digit-eight
mathematical-bold-digit-five
mathematical-bold-digit-four

...

mathematical-bold-epsilon-symbol
mathematical-bold-fraktur-capital-a
mathematical-bold-fraktur-capital-b

...

mathematical-bold-fraktur-small-a
mathematical-bold-fraktur-small-b

...

mathematical-bold-italic-capital-a
mathematical-bold-italic-capital-alpha
mathematical-bold-italic-capital-b
mathematical-bold-italic-capital-beta

...

mathematical-bold-italic-nabla
mathematical-bold-italic-partial-differential
mathematical-bold-italic-phi-symbol
mathematical-bold-italic-pi-symbol
mathematical-bold-italic-rho-symbol
mathematical-bold-italic-small-a
mathematical-bold-italic-small-alpha
mathematical-bold-italic-small-b
mathematical-bold-italic-small-beta

...

mathematical-bold-nabla
mathematical-bold-partial-differential
mathematical-bold-phi-symbol
mathematical-bold-pi-symbol
mathematical-bold-rho-symbol
mathematical-bold-script-capital-a
mathematical-bold-script-capital-b

...

mathematical-bold-script-small-a
mathematical-bold-script-small-b

...

mathematical-bold-small-a
mathematical-bold-small-alpha
mathematical-bold-small-b
mathematical-bold-small-beta

...

mathematical-double-struck-capital-a
mathematical-double-struck-capital-b

...

mathematical-double-struck-digit-eight
mathematical-double-struck-digit-five
mathematical-double-struck-digit-four
mathematical-double-struck-digit-nine
mathematical-double-struck-digit-one
mathematical-double-struck-digit-seven
mathematical-double-struck-digit-six
mathematical-double-struck-digit-three
mathematical-double-struck-digit-two
mathematical-double-struck-digit-zero
mathematical-double-struck-small-a
mathematical-double-struck-small-b

...

mathematical-falling-diagonal
mathematical-fraktur-capital-a
mathematical-fraktur-capital-b

...

mathematical-fraktur-small-a
mathematical-fraktur-small-b

...

mathematical-italic-capital-a
mathematical-italic-capital-alpha
mathematical-italic-capital-b
mathematical-italic-capital-beta

...

mathematical-italic-nabla
mathematical-italic-partial-differential
mathematical-italic-phi-symbol
mathematical-italic-pi-symbol
mathematical-italic-rho-symbol
mathematical-italic-small-a
mathematical-italic-small-alpha

...

mathematical-italic-small-dotless-i
mathematical-italic-small-dotless-j
mathematical-italic-small-e
mathematical-italic-small-epsilon

...

mathematical-italic-small-final-sigma

...

mathematical-left-angle-bracket
mathematical-left-double-angle-bracket
mathematical-left-flattened-parenthesis
mathematical-left-white-square-bracket
mathematical-left-white-tortoise-shell-bracket
mathematical-monospace-capital-a
mathematical-monospace-capital-b

...

mathematical-monospace-digit-eight
mathematical-monospace-digit-five
mathematical-monospace-digit-four

...

mathematical-monospace-small-a
mathematical-monospace-small-b

...

mathematical-right-angle-bracket
mathematical-right-double-angle-bracket
mathematical-right-flattened-parenthesis
mathematical-right-white-square-bracket
mathematical-right-white-tortoise-shell-bracket
mathematical-rising-diagonal
mathematical-sans-serif-bold-capital-a
mathematical-sans-serif-bold-capital-alpha
mathematical-sans-serif-bold-capital-b
mathematical-sans-serif-bold-capital-beta

...

mathematical-sans-serif-bold-digit-eight
mathematical-sans-serif-bold-digit-five
mathematical-sans-serif-bold-digit-four

...

mathematical-sans-serif-bold-italic-capital-a
mathematical-sans-serif-bold-italic-capital-alpha
mathematical-sans-serif-bold-italic-capital-b
mathematical-sans-serif-bold-italic-capital-beta

...

mathematical-sans-serif-bold-italic-nabla
mathematical-sans-serif-bold-italic-partial-differential

...

mathematical-sans-serif-bold-italic-small-a
mathematical-sans-serif-bold-italic-small-alpha
mathematical-sans-serif-bold-italic-small-b
mathematical-sans-serif-bold-italic-small-beta

...

mathematical-sans-serif-bold-italic-small-final-sigma

...

mathematical-sans-serif-bold-nabla
mathematical-sans-serif-bold-partial-differential

...

mathematical-sans-serif-bold-small-a
mathematical-sans-serif-bold-small-alpha
mathematical-sans-serif-bold-small-b
mathematical-sans-serif-bold-small-beta

...

mathematical-sans-serif-bold-small-final-sigma

...

mathematical-sans-serif-capital-a
mathematical-sans-serif-capital-b

...

mathematical-sans-serif-digit-eight
mathematical-sans-serif-digit-five
mathematical-sans-serif-digit-four

...

mathematical-sans-serif-italic-capital-a
mathematical-sans-serif-italic-capital-b

...

mathematical-sans-serif-italic-small-a
mathematical-sans-serif-italic-small-b

...

mathematical-sans-serif-small-a
mathematical-sans-serif-small-b

...

mathematical-script-capital-a

...

mathematical-script-small-a
mathematical-script-small-b

...

Drew
sumber