Разберите тире (-), дефис (-) и эмдаш (-) друг от друга


16

Тире (-), en-dash (-) и emdash (-) различны, но их трудно отличить друг от друга. Это вызывает проблемы, например, при написании программ. Есть ли какой-нибудь способ отличить их в emacs? Благодарю.


Можете ли вы рассказать об одном случае использования этих штрихов, вызывающих проблемы при написании кода? Единственная черта, с которой я столкнулся при чтении и написании кода, это обычная черта. Я использую n-dash и m-dash только в документации режима org, используя --и ---.
Каушал Моди


Так что проблема не в коде в emacs, а в том, что вы скопировали с веб-страницы. Вполне вероятно, что тот, кто написал эту статью, сделал это org-modeтам, где --будет отображаться как n-dash, если он не будет заключен в дословное форматирование или форматирование кода =command --some-arg=.
Каушал Моди

Я верю некоторым? все? Разновидности уценки также поддерживают то, что гораздо чаще, чем режим org для написания блогов. Так что это очень вероятная проблема.
Каушал Моди

1
Конечно, первый - дефис, а не тире.
TRiG

Ответы:


10

Вот немного веселья с улыбающимися лицами Unicode. Ан-дэш визуально становится черным смайликом. Эм-Дэш визуально становится белым смайликом. Обратите внимание, что некоторые версии Emacs могут не поддерживать символы Unicode на смайликах - это только демонстрация - конечно, можно выбирать другие символы Unicode. Можно использовать другие лица, и пользователь может создавать свои собственные лица.

(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]))

Вот обновленный пример , который эффективно присоединяет дефис-минус и добавляет цвета - то есть, то 8211 визуально становится --с , font-lock-keyword-faceкак окрашивание; причем, 8212 визуально становится ---с font-lock-function-name-faceкак окраской.

(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 как --и em-dash ---с отличным лицом, например, жирным красным, чтобы пользователь знал, что emacs отобразил их по-другому?
Каушал Моди

2
@kaushalmodi - я обновил пример, чтобы включить 8211как --с font-lock-keyword-face; и 8212как ---с font-lock-function-name-face.
законник

9

Чтобы процитировать документы:

C-x =запускает команду what-cursor-position, которая является интерактивной скомпилированной функцией Lisp в simple.el.

Это связано с C-x =.

(what-cursor-position &optional DETAIL)

Распечатать информацию о позиции курсора (на экране и в буфере). Также опишите символ после точки и укажите его код в восьмеричном, десятичном и шестнадцатеричном виде.

Для многобайтового символа, не входящего в ASCII, также укажите его кодирование в выбранной системе кодирования буфера, если система кодирования безопасно кодирует символ. Если символ закодирован в один байт, этот код отображается в шестнадцатеричном виде. Если символ закодирован в более чем один байт, отображается только «...».

Кроме того, с аргументом префикса, показать подробности об этом символе в буфере * Help *. Смотрите также команду `description-char '.

Акцент и форматирование мое.

Попробуйте запомнить эти коды:

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

Но если вы забудете их, вы можете легко это сделать C-u C-x =, при этом всплывает буфер с дополнительной информацией, включая name:поле.


1
В чем разница между дефисом, минусом и тире с точки зрения их глифов?
StackExchange для всех

HYPHEN-MINUSэто каноническое имя Unicode для простого тире, которое вы обычно можете набрать, нажав клавишу слева от =клавиши. Это «обычный» тире, используемый везде в программировании.
PythonNut

когда это называется тире, а когда дефис?
StackExchange для всех

@Tim Для нас это синонимы. Орган по стандартизации Unicode называет это дефисом. Вы называете это чертой .... ни один из вас не прав.
PythonNut

4
@Тим. В английской орфографии дефисы связывают вещи. Например, в двадцать три есть дефис . Штрихи отдельные вещи. Я бы не назвал это чертой вообще.
TRiG

6

Используйте библиотеку, highlight-chars.elчтобы выделить любые символы Unicode, как вы хотите. См. Подсветка символов в Emacs Wiki.

Вы можете использовать команду hc-highlight-charsдля выделения символов четырьмя способами:

  1. в отдельности
  2. используя диапазоны
  3. использование классов персонажей (например [:digit:])
  4. используя наборы символов (например, iso-8859-1или lao)

hc-highlight-charsпредложит вам выделить персонажа (персонажей) на определенное лицо и лицо, которое будет использоваться для них. (С префиксом arg он невыделен.)

Когда вас попросят выделить символ (ы), вы можете использовать, C-x 8 RETчтобы выбрать символы Юникода, используя завершение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.