Giới thiệu dấu gạch ngang (-), en-dash (-) và emdash (-)


16

Dấu gạch ngang (-), en-dash (-) và emdash (-) khác nhau nhưng khó phân biệt. Điều này gây ra vấn đề, ví dụ như khi viết chương trình. Có cách nào để phân biệt chúng dễ dàng hơn trong emacs không? Cảm ơn.


Bạn có thể nói về một trường hợp sử dụng về những dấu gạch ngang gây ra vấn đề khi viết mã không? Dấu gạch ngang duy nhất tôi đã gặp trong khi đọc và viết mã là dấu gạch ngang thông thường. Tôi chỉ sử dụng n-dash và m-dash trong tài liệu chế độ org bằng cách sử dụng -----.
Kaushal Modi


Vì vậy, vấn đề không nằm ở mã trong emacs mà là từ thứ bạn đã sao chép từ một trang web. Có khả năng người viết bài báo đó đã làm như vậy trong org-modeđó --sẽ hiển thị dưới dạng n-dash trừ khi nó được gói theo nguyên văn hoặc định dạng mã như thế nào =command --some-arg=.
Kaushal Modi

Tôi tin một số? tất cả? hương vị của markdown cũng hỗ trợ cái phổ biến hơn nhiều so với chế độ org để viết blog. Vì vậy, đó là một vấn đề rất có thể.
Kaushal Modi

1
Chắc chắn rằng cái đầu tiên là một dấu gạch nối, không phải là một dấu gạch ngang.
TRiG

Câu trả lời:


10

Đây là một niềm vui nhỏ với khuôn mặt cười Unicode. Các en-dash trực quan trở thành một khuôn mặt cười đen. Các em-dash trực quan trở thành một khuôn mặt cười trắng. Lưu ý, một số phiên bản Emacs có thể không hỗ trợ các ký tự Unicode mặt cười - nó chỉ có nghĩa là một minh chứng - tất nhiên các ký tự Unicode khác có thể được chọn. Các khuôn mặt khác có thể được sử dụng và người dùng có thể tự do sáng tác khuôn mặt của mình.

(let ((glyph-en-dash (make-glyph-code ?\u263A 'font-lock-keyword-face))
      (glyph-em-dash (make-glyph-code ?\u263B 'font-lock-function-name-face)) )
  (when (not buffer-display-table)
    (setq buffer-display-table (make-display-table)))
  (aset buffer-display-table 8211 `[,glyph-en-dash])
  (aset buffer-display-table 8212 `[,glyph-em-dash]))

Dưới đây là một ví dụ cập nhật kết hợp hiệu quả dấu gạch nối và thêm màu - tức là, 8211 trực quan trở thành --với font-lock-keyword-facemàu như; và, 8212 trực quan trở thành ---với font-lock-function-name-facemàu sắc.

(let ((glyph-en-dash (make-glyph-code ?\u002D 'font-lock-keyword-face))
      (glyph-em-dash (make-glyph-code ?\u002D 'font-lock-function-name-face)) )
  (when (not buffer-display-table)
    (setq buffer-display-table (make-display-table)))
  (aset buffer-display-table 8211 `[,glyph-en-dash ,glyph-en-dash])
  (aset buffer-display-table 8212 `[,glyph-em-dash ,glyph-em-dash ,glyph-em-dash]))

En-dash có thể được hiển thị dưới dạng --và em-dash như ---với một khuôn mặt khác biệt như màu đỏ đậm để người dùng biết rằng emacs đã kết xuất chúng khác nhau không?
Kaushal Modi

2
@kaushalmodi - Tôi đã cập nhật ví dụ để bao gồm 8211như --với font-lock-keyword-face; và 8212như ---với font-lock-function-name-face.
luật

9

Để trích dẫn các tài liệu:

C-x =chạy lệnh what-cursor-position, là một hàm Lisp được biên dịch tương tác trong simple.el.

Nó bị ràng buộc với C-x =.

(what-cursor-position &optional DETAIL)

In thông tin về vị trí con trỏ (trên màn hình và trong bộ đệm). Cũng mô tả ký tự sau điểm và đưa ra mã ký tự của nó theo số bát phân, thập phân và thập lục phân.

Đối với một ký tự đa nhân không phải ASCII, cũng cung cấp mã hóa của nó trong hệ thống mã hóa được chọn của bộ đệm nếu hệ thống mã hóa mã hóa ký tự đó một cách an toàn. Nếu ký tự được mã hóa thành một byte, mã đó được hiển thị dưới dạng hex. Nếu ký tự được mã hóa thành nhiều hơn một byte, chỉ "..." được hiển thị.

Ngoài ra, với đối số tiền tố, hiển thị chi tiết về ký tự đó trong bộ đệm * Trợ giúp *. Xem thêm lệnh 'description-char'.

Nhấn mạnh và định dạng của tôi.

Cố gắng nhớ các mã này:

  • HYPHEN-MINUS 45
  • EN DASH 8211
  • EM DASH 8212

Nhưng nếu bạn quên chúng, bạn có thể dễ dàng thực hiện C-u C-x =, trong đó bật lên một bộ đệm với thông tin bổ sung, bao gồm cả một name:trường.


1
sự khác biệt giữa dấu gạch ngang, dấu trừ và dấu gạch ngang về glyphs của chúng là gì?
Tim

HYPHEN-MINUSlà tên Unicode chuẩn cho dấu gạch ngang đơn giản, bạn thường có thể nhập bằng cách nhấn phím ở bên trái của =phím. Đó là dấu gạch ngang "thông thường" được sử dụng ở mọi nơi trong lập trình.
PythonNut

khi nào nó được gọi là dấu gạch ngang và khi dấu gạch nối?
Tim

@Tim Theo như chúng tôi quan tâm, chúng là từ đồng nghĩa. Cơ thể tiêu chuẩn Unicode gọi nó là dấu gạch nối. Bạn gọi nó là một dấu gạch ngang .... không phải bạn sai.
PythonNut

4
@Tim. Trong chính tả tiếng Anh, dấu gạch nối kết nối mọi thứ. Có một dấu gạch nối trong hai mươi ba , ví dụ. Dấu gạch ngang những thứ riêng biệt. Tôi sẽ không gọi đó là một dấu gạch ngang cả.
TRiG

6

Sử dụng thư viện highlight-chars.elđể làm nổi bật bất kỳ ký tự Unicode nào bạn muốn. Xem các nhân vật nổi bật trên Emacs Wiki.

Bạn có thể sử dụng lệnh hc-highlight-charsđể làm nổi bật các ký tự theo bốn cách:

  1. cá nhân
  2. sử dụng phạm vi
  3. sử dụng các lớp ký tự (ví dụ [:digit:])
  4. sử dụng bộ ký tự (ví dụ iso-8859-1hoặc lao)

hc-highlight-charsnhắc bạn để (các) nhân vật làm nổi bật một khuôn mặt cụ thể và khuôn mặt để sử dụng cho họ. (Với một tiền tố cho thấy nó không sáng.)

Khi bạn được nhắc để (các) ký tự nổi bật, bạn có thể sử dụng C-x 8 RETđể chọn các ký tự Unicode khi hoàn thành.

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.