Nhanh chóng chèn biểu tượng unicode?


8

Hiện tại, tôi đang chèn các ký tự unicode (chủ yếu là các ký hiệu toán học) bằng phương thức nhập TeX. Điều này là cồng kềnh, vì, đối với mỗi nhân vật, tôi phải làm như sau:

  1. Chuyển sang phương thức nhập TeX nhấn C-\
  2. gõ biểu thức latex như \Bbb{R}hoặc\Leftrightarrow

Có một tập hợp con tương đối nhỏ của các ký tự unicode (10-20) tôi đang chèn mọi lúc.

Q: Có cách nào để chèn các ký tự unicode với một vài (2-4) tổ hợp phím không?



1
Có lẽ điều đáng nói là không cần phải chuyển sang phương thức nhập TeX mỗi lần. Bạn chỉ có thể để nó bật. Nhược điểm duy nhất là cần phải nhập \ khi bạn muốn một dấu gạch chéo ngược theo nghĩa đen
không dùng nữa vào

Câu trả lời:


6

Bạn có thể sử dụng abbrev-modeđể tạo các chuỗi "mở rộng" thành các ký tự unicode mà bạn muốn. Ví dụ: abbrevbảng sau định nghĩa các chữ viết tắt cho ba chữ cái viết thường đầu tiên của bảng chữ cái Hy Lạp:

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

Sau đó, bạn có thể yêu cầu text-mode(hoặc bất kỳ chế độ nào khác bạn muốn) kế thừa bảng unicode của bạn:

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

Đi đến một bộ đệm trong chế độ văn bản. Bật abbrev-mode. Nhập ualphavà ký tự không phải từ (dấu cách, dấu chấm, v.v.) và xem nó mở rộng thành α.


6

Bạn có thể xác định các chuỗi khóa của riêng mình với các hàm elisp global-set-keylocal-set-key. Do đó, nên sử dụng C-cvà một chữ cái duy nhất cho các chuỗi khóa do người dùng xác định. (Nếu không, có thể là bạn ghi đè các chuỗi khóa bị ràng buộc bởi các thư viện emacs-lisp khác. Sau này bạn gặp rắc rối khi bạn phát hiện ra rằng phiên bản thư viện của chuỗi khóa sẽ rất hữu ích cho bạn.)

Nếu bạn muốn sử dụng các chuỗi này độc lập với chế độ chính, bạn có thể liên kết chúng trên toàn cầu.

Ví dụ, bạn có thể thêm

(global-set-key (kbd "C-c a") "⇔")

vào tập tin cấu hình của bạn ~/.emacs.

Ngoài ra, bạn có thể sử dụng các phím này tùy thuộc vào chế độ chính.

Một ví dụ là:

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

Điều này làm việc với auctex. Nếu bạn đang sử dụng bản địa tex-modehoặc latex-modecó thể bạn phải thay thế TeX-mode-hookbằng tex-mode-hook.


Lưu ý, đó cũng là insert-charràng buộc C-x 8 RET. Do đó, bạn có thể nhập utf8-character nếu bạn biết mã của họ. Nếu bạn không biết mã, bạn có thể nhập chúng theo mô tả của chúng nhưng điều đó trở nên cồng kềnh.


Ngoài ra còn có các chế độ đặc biệt hỗ trợ người dùng với đầu vào của các ký hiệu latex, như company-math-Modeac-math-mode .

Cả hai đều là chế độ hoàn thành. companyhoạt động với menu chuột và ac(tự động hoàn thành) hoạt động với tab-key.

Nhưng tôi không chắc chắn về tình trạng hiện tại của các gói này. Bạn có thể cài đặt các chế độ này cho mỗi melpa nếu bạn muốn thử chúng.


FWIW: Người dùng có thể sử dụng bất kỳ chuỗi chính nào họ thích. Ưu điểm của chuỗi khóa bắt đầu C-clà bạn có thể chắc chắn rằng nó sẽ không xung đột với bất kỳ ràng buộc chính nào được cung cấp bởi Emacs hoặc thư viện bạn có thể sử dụng.
vẽ

@Drew Có, tôi biết điều đó. Nguy cơ tiềm ẩn của xung đột với trình tự chính của thư viện là lý do cho khuyến nghị của tôi.
Tobias

Vâng, tôi đã tìm ra điều đó. Nhận xét của tôi là vì lợi ích của bất kỳ độc giả nào trong câu trả lời của bạn, những người có thể có ấn tượng khác với " bạn nên tuân theo quy ước để sử dụng Cc và một chữ cái duy nhất cho các chuỗi khóa do người dùng xác định. " Cc cộng với một lá thư. Tôi chắc chắn chúng tôi đồng ý - Tôi chỉ muốn điều này rõ ràng với độc giả. Nếu bạn đã nói rằng bạn khuyên họ nên sử dụng Cc cộng với một chữ cái (điểm thưởng để nói lý do tại sao) thì tôi sẽ không bình luận. HTH.
vẽ

@Drew Đó là lý do tại sao tôi thêm liên kết. Các văn bản liên kết làm cho mọi thứ rõ ràng. Bây giờ, tôi cũng thêm một ghi chú trong văn bản.
Tobias

3

Bạn nói: Có một tập hợp con các ký tự unicode tương đối nhỏ (tôi đoán là 10-20) Tôi đang chèn mọi lúc.

Trong trường hợp đó, như @Tobias đã chỉ ra, bạn chỉ có thể liên kết, đối với mỗi trong số chúng, một chuỗi khóa đơn giản để (a) một lệnh chèn ký tự đó hoặc (b) một chuỗi ký tự đơn với ký tự đó (hành động này giống như một macro bàn phím, để chèn ký tự).

Thư viện ucs-cmds.elcó thể giúp bạn xác định các lệnh như vậy. Các lệnh kết quả có cùng tên với các ký tự. Bạn có thể sử dụng macro ucsc-make-commandsđể xác định toàn bộ nhóm lệnh chèn một ký tự của một loại nhất định.

Ví dụ: bạn có thể đặt cái này trong tệp init của mình để xác định các lệnh chèn tất cả các ký hiệu toán học Unicode:

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

Điều đó cung cấp cho bạn các lệnh có tên giống như các ký tự toán học. Ràng buộc bất kỳ thứ nào trong số này mà bạn sử dụng nhiều để dễ sử dụng. Ví dụ:

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

(Hoặc liên kết một khóa với một lệnh như vậy chỉ trong chế độ Tex, sử dụng define-keyvới sơ đồ phím của nó.)

Chỉ với đơn giản như vậy, (ucsc-make-commands "^math")bạn đã có sẵn tất cả các lệnh chèn ký tự được liệt kê bên dưới.

Ngoài ra còn có các ký tự Unicode khác, có tên không bắt đầu bằng mathnhưng được sử dụng trong toán học - ví dụ: ký tự PARTIAL DIFFERENTIAL. Bạn cũng có thể dễ dàng tạo các lệnh chèn bất kỳ ký tự nào. (Và lưu ý rằng các ký tự có tên bắt đầu mathcũng có thể yêu cầu sử dụng phông chữ đặc biệt - nhiều phông chữ không hỗ trợ chúng.)

Tất nhiên bạn có thể sử dụng biểu thức chính quy chặt chẽ hơn ^math, nếu bạn muốn chỉ xác định các ký tự khớp với mẫu đó. Ví dụ: điều này xác định các lệnh cho tất cả các ký tự phân biệt một phần:

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

Điều đó cung cấp cho bạn các lệnh sau:

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

Lưu ý rằng các ký tự Unicode tên các từ riêng biệt với các ký tự khoảng trắng và các tên là chữ hoa. Các lệnh chèn tương ứng sử dụng dấu gạch nối thay vì dấu cách và chữ thường thay vì chữ hoa.

Một lợi thế của việc có các lệnh được đặt tên theo ký tự mà chúng chèn, thay vào đó, chỉ là các phím ràng buộc với các chuỗi ký tự đơn, là bạn có thể sử dụng M-xđể nhập các ký tự mà bạn sử dụng ít thường xuyên hơn, bằng cách sử dụng tên hoàn thành. Thay vì hoàn thành đối với toàn bộ nhóm tên ký tự Unicode, bạn hoàn thành đối chiếu với tên của các lệnh chèn ký tự bạn đã xác định.


Đây là các lệnh chèn các ký tự có tên bắt đầu bằng math. Họ là những gì bạn nhận được bằng cách đánh giá (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

...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.