Lassen Sie einen Bindestrich (-), einen En-Bindestrich (-) und einen Emdash (-) auseinander

16

Ein Bindestrich (-), ein En-Bindestrich (-) und ein Emdash (-) sind unterschiedlich, aber schwer voneinander zu unterscheiden. Dies führt zB beim Schreiben von Programmen zu Problemen. Gibt es eine Möglichkeit, sie in Emacs leichter auseinander zu halten? Vielen Dank.

Tim
quelle
Können Sie über einen Anwendungsfall sprechen, der die Bindestriche betrifft, die beim Schreiben von Code zu Problemen führen? Der einzige Gedankenstrich, auf den ich beim Lesen und Schreiben von Code gestoßen bin, ist der reguläre Gedankenstrich. Ich verwende n-dash und m-dash nur in der Dokumentation im Organisationsmodus mit --und ---.
Kaushal Modi
Das Problem liegt also nicht am Code in Emacs, sondern an etwas, das Sie von einer Webseite kopiert haben. Es ist wahrscheinlich, dass die Person, die diesen Artikel geschrieben hat, dies in org-modewhere --als n-dash rendert, es sei denn, es ist wörtlich oder in einer Code-Formatierung wie =command --some-arg=.
Kaushal Modi
Ich glaube einige? alle? Flavours of Markdown unterstützen auch das, was beim Schreiben von Blogs weitaus häufiger vorkommt als der Org-Modus. Das ist also ein sehr wahrscheinliches Problem.
Kaushal Modi
1
Sicher ist der erste Bindestrich überhaupt kein Bindestrich.
TRiG

Antworten:

10

Hier ist ein bisschen Spaß mit Unicode-Smileys. Der en-dash wird optisch zu einem schwarzen Smiley. Der Em-Dash wird optisch zu einem weißen Smiley. Beachten Sie, dass einige Emacs-Versionen möglicherweise keine Unicode-Zeichen für Smileys unterstützen. Dies ist nur eine Demonstration. Andere Unicode-Zeichen können natürlich ausgewählt werden. Andere Gesichter können verwendet werden, und der Benutzer kann seine eigenen Gesichter zusammenstellen.

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

Hier ist ein aktualisiertes Beispiel, das den Bindestrich-Minus effektiv verkettet und Farbe hinzufügt - dh das 8211 Visuelle wird --mit der font-lock-keyword-faceAs-Färbung; und das 8212 Visuelle wird ---mit der font-lock-function-name-faceAs-Färbung.

(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]))
Gesetzesliste
quelle
Kann der En-Dash als --und der Em-Dash als ---mit einem markanten Gesicht wie fettem Rot gerendert werden, sodass der Benutzer weiß, dass Emacs diese anders gerendert hat?
Kaushal Modi
2
@ kaushalmodi - Ich habe das Beispiel aktualisiert, um es 8211wie --das font-lock-keyword-face; und das 8212wie ---mit dem font-lock-function-name-face.
Gesetzesliste
9

So zitieren Sie die Dokumente:

C-x =führt den Befehl aus what-cursor-position, bei dem es sich um eine interaktiv kompilierte Lisp-Funktion handelt simple.el.

Es ist gebunden an C-x =.

(what-cursor-position &optional DETAIL)

Informationen zur Cursorposition ausgeben (auf dem Bildschirm und innerhalb des Puffers). Beschreiben Sie auch das Zeichen nach dem Punkt und geben Sie den Zeichencode in Oktal, Dezimal und Hexadezimal an.

Geben Sie für ein Nicht-ASCII-Multibyte-Zeichen auch dessen Codierung im ausgewählten Codierungssystem des Puffers an, wenn das Codierungssystem das Zeichen sicher codiert. Wenn das Zeichen in einem Byte codiert ist, wird dieser Code in hexadezimaler Form angezeigt. Wenn das Zeichen in mehr als einem Byte codiert ist, wird nur "..." angezeigt.

Zeigen Sie außerdem mit Präfix-Argument Details zu diesem Zeichen im * Help * -Puffer an. Siehe auch den Befehl "describe-char".

Betonung und Formatierung meiner.

Versuchen Sie, sich diese Codes zu merken:

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

Aber wenn Sie sie vergessen, können Sie leicht tun C-u C-x =, was einen Puffer mit zusätzlichen Informationen, einschließlich eines name:Feldes , aufbläst .

PythonNut
quelle
1
Was ist der Unterschied zwischen Bindestrich, Minus und Bindestrich in Bezug auf die Glyphen?
Tim
HYPHEN-MINUSist der kanonische Unicode-Name für den einfachen Bindestrich, den Sie normalerweise eingeben können, indem Sie die Taste links neben der =Taste drücken. Es ist der "normale" Strich, der überall in der Programmierung verwendet wird.
PythonNut
Wann heißt es ein Bindestrich und wann ein Bindestrich?
Tim,
@Tim Für uns sind sie Synonyme. Der Unicode-Standardtext nennt es einen Bindestrich. Du nennst es einen Gedankenstrich ... keiner von euch irrt.
PythonNut
4
@Tim. In der englischen Rechtschreibung verbinden Bindestriche Dinge. Es gibt zum Beispiel einen Bindestrich in dreiundzwanzig . Striche trennen Dinge. Ich würde das überhaupt nicht als einen Gedankenstrich bezeichnen.
TRiG
6

Verwenden Sie die Bibliothek highlight-chars.el, um beliebige Unicode-Zeichen zu markieren. Siehe Hervorheben von Zeichen im Emacs Wiki.

Sie können den Befehl verwenden hc-highlight-chars, um Zeichen auf vier Arten hervorzuheben:

  1. individuell
  2. mit Bereichen
  3. mit Zeichenklassen (zB [:digit:])
  4. mit Zeichensätzen (zB iso-8859-1oder lao)

hc-highlight-charsfordert Sie auf, die Zeichen in einem bestimmten Gesicht und das für sie zu verwendende Gesicht hervorzuheben. (Mit einem Präfix arg hebt es hervor.)

Wenn Sie zur Hervorhebung der Zeichen aufgefordert werden, können Sie C-x 8 RETmithilfe der Vervollständigung Unicode-Zeichen auswählen.

Drew
quelle