Distinguer un tiret (-), un en-tiret (-) et un emdash (-)

16

Un tiret (-), un en-tiret (-) et un emdash (-) sont différents mais difficiles à distinguer. Cela pose des problèmes, par exemple lors de l'écriture de programmes. Existe-t-il un moyen de les distinguer plus facilement dans emacs? Merci.

StackExchange pour tous
la source
Pouvez-vous parler d'un cas d'utilisation de ces tirets qui posent problème lors de l'écriture de code? Le seul tiret que j'ai rencontré lors de la lecture et de l'écriture de code est le tiret normal. J'utilise n-dash et m-dash uniquement dans la documentation en mode organisation en utilisant --et ---.
Kaushal Modi
Le problème ne vient donc pas du code dans emacs mais de quelque chose que vous avez copié à partir d'une page Web. Il est probable que la personne qui a écrit cet article l'a fait dans org-mode--s'affichera en tant que n-dash à moins qu'il ne soit enveloppé dans un format textuel ou du code comme =command --some-arg=.
Kaushal Modi
J'en crois certains? tout? les saveurs de démarque prennent également en charge ce qui est beaucoup plus répandu que le mode org pour écrire des blogs. C'est donc un problème très probable.
Kaushal Modi
1
Ce premier est sûrement un trait d'union, pas un tiret du tout.
TRiG

Réponses:

10

Voici un peu de plaisir avec les visages souriants Unicode. Le tableau de bord devient visuellement un visage souriant noir. L'em-dash devient visuellement un visage souriant blanc. Remarque, certaines versions d'Emacs peuvent ne pas prendre en charge les caractères Unicode de smiley - c'est uniquement destiné à être une démonstration - d'autres caractères Unicode peuvent bien sûr être choisis. D'autres visages peuvent être utilisés et l'utilisateur est libre de composer ses propres visages.

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

Voici un exemple mis à jour qui concatène efficacement le trait d'union moins et ajoute de la couleur - c'est-à-dire que le 8211 visuel devient --avec la font-lock-keyword-facecoloration as; et, le devient 8212 visuellement--- avec la font-lock-function-name-facecoloration as.

(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]))
liste des lois
la source
Le en-dash peut-il être rendu en tant --que em-dash comme ---avec un visage distinct comme du rouge gras afin que l'utilisateur sache qu'emacs les a rendus différemment?
Kaushal Modi
2
@kaushalmodi - J'ai mis à jour l'exemple pour inclure 8211as --avec le font-lock-keyword-face; et le 8212comme ---avec le font-lock-function-name-face.
lawlist
9

Pour citer les documents:

C-x =exécute la commande what-cursor-position, qui est une fonction Lisp interactive compilée dans simple.el.

C'est lié C-x =.

(what-cursor-position &optional DETAIL)

Imprimer les informations sur la position du curseur (à l'écran et dans le tampon). Décrivez également le caractère après le point et donnez son code de caractère en octal, décimal et hexadécimal.

Pour un caractère multi-octets non ASCII, indiquez également son codage dans le système de codage sélectionné du tampon si le système de codage code le caractère en toute sécurité. Si le caractère est codé en un octet, ce code est affiché en hexadécimal. Si le caractère est codé sur plusieurs octets, seul "..." est affiché.

De plus, avec l'argument préfixe, affichez les détails de ce caractère dans le tampon * Aide *. Voir aussi la commande `describe-char '.

Souligné et formaté le mien.

Essayez de vous souvenir de ces codes:

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

Mais si vous les oubliez, vous pouvez facilement le faire C-u C-x =, qui affiche un tampon avec des informations supplémentaires, y compris un name:champ.

PythonNut
la source
1
Quelle est la différence entre le trait d'union, le moins et le tiret en termes de leurs glyphes?
StackExchange for All
HYPHEN-MINUSest le nom canonique Unicode pour le tiret simple, que vous pouvez généralement taper en appuyant sur la touche à gauche de la =touche. C'est le tiret "régulier" utilisé partout dans la programmation.
PythonNut
quand est-il appelé un tiret et quand un trait d'union?
StackExchange for All
@Tim Pour nous, ce sont des synonymes. Le corps des normes Unicode l'appelle un trait d'union. Vous appelez cela un tiret .... aucun de vous n'a tort.
PythonNut
4
@Tim. Dans l'orthographe anglaise, les tirets relient les choses. Il y a un trait d'union sur vingt-trois , par exemple. Les tirets séparent les choses. Je n'appellerais pas ça du tout un tiret.
TRiG
6

Utilisez la bibliothèque highlight-chars.elpour mettre en évidence les caractères Unicode comme vous le souhaitez. Voir Mettre en surbrillance les caractères sur le wiki Emacs.

Vous pouvez utiliser la commande hc-highlight-charspour mettre en surbrillance les caractères de quatre manières:

  1. individuellement
  2. utilisant des plages
  3. en utilisant des classes de caractères (par exemple [:digit:])
  4. en utilisant des jeux de caractères (par exemple iso-8859-1ou lao)

hc-highlight-charsvous invite à indiquer le (s) personnage (s) à mettre en évidence dans un visage particulier et le visage à utiliser pour eux. (Avec un préfixe arg, il n'est pas mis en surbrillance.)

Lorsque vous êtes invité à mettre le (s) caractère (s) en surbrillance, vous pouvez utiliser C-x 8 RETpour choisir les caractères Unicode en utilisant la complétion.

A dessiné
la source