Ich habe die Manpage für gdb gelesen und bin auf die folgende Zeile gestoßen:
You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.
Das C @ t {++} sieht aus wie ein regulärer Ausdruck, aber ich kann es scheinbar nicht dekodieren.
Was bedeutet es?
man
documentation
gdb
Sam
quelle
quelle
++
irgendwieC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
Antworten:
GNU hasst Manpages, daher schreiben sie normalerweise Dokumentation in einem anderen Format und generieren daraus eine Manpage, ohne sich wirklich darum zu kümmern, ob das Ergebnis verwendbar ist.
C@t{++}
ist ein Texinfo-Markup, das nicht übersetzt wurde. Es sollte nicht Teil der für den Benutzer sichtbaren Dokumentation sein. Es sollte einfach heißenC++
(möglicherweise mit einer speziellen Schriftart++
, damit es schön aussieht).quelle
Die Folge
@t{...}
ist die texinfo Markup unter Verwendung einer Sequenz Schrift mit fester Breite zu setzen (siehe Schriften Abschnitt der texinfo Handbuch für weitere Details und einige Beispiele.)Es sieht so aus, als hätten sie versucht, "C ++" zu schreiben und "++" eine Schriftart mit fester Breite zu verwenden (wie "
++
"). Vielleicht hat jemand festgestellt, dass mit bestimmten Schriftarten bessere Ergebnisse erzielt werden, wenn die Dokumentation in PostScript oder PDF oder einem anderen Format gerendert wird Standardmäßig werden Schriftarten mit variabler Breite verwendet.Der Grund, warum dies nicht zu funktionieren scheint und Sie die unverarbeitete Sequenz sehen, ist, dass texinfo vom
info
Dokumentationssystem verwendet wird, währendman
nroff verwendet wird, eine andere Sprache mit verschiedenen Befehlen (zum Beispiel der Befehl zum Umschalten auf eine Konstante width font in nroff ist\f(CW
), daher hat es die@t{...}
Sequenz natürlich nicht unverändert erkannt .Dieses Problem wurde anscheinend in einem Commit vom April 2013 eingeführt, in dem die Manpages zu texinfo konvertiert und dieses spezielle Markup eingeführt wurden. Es scheint, dass das Skript, das jetzt zum Generieren der Manpages (
texi2man.pl
) verwendet wird, diese Sequenz nicht erkennt oder ordnungsgemäß konvertiert.quelle
pod2man
ein Roff-Makro für "ein schöneres C ++" bereitgestellt wird , das nicht verwendet wird, da sein Erkennungscode nur für die Zeichenfolge "C ++" verwendet wird.C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
erinnere mich, dass ich die Erweiterung von troff von einem Labbie in Murray Hill während der anfänglichen Evangelisation der C ++ - Sprache erhalten habe, als wir USENIX-Prozeduren für diese frühen C ++ - Ereignisse setzten. Die Labbys meinten es ziemlich ernst mit ihrem Troff. :)