Was bedeutet C @ t {++} in der GDB-Manpage?

16

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?

Sam
quelle
für welche version sieht aus wie C ++ nur sie haben die spezielle Kodierung von ++irgendwie
thrig
@thrig Ich kann dies in Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5 bestätigen.
Melebius
Was macht das für Sie zu einem Regex?
Fund Monica's Lawsuit
FWIW, das wäre ein ungültiger regulärer Ausdruck.
Leichtigkeit Rennen mit Monica
Offensichtlich haben sie vergessen, wie man schreibtC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist

Antworten:

28

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ßen C++(möglicherweise mit einer speziellen Schriftart ++, damit es schön aussieht).


quelle
8
In diesem Fall war es genau umgekehrt. Das Dokument wurde ursprünglich in den 1980er Jahren in roff geschrieben und 2013 von Hand (schlecht) in texinfo konvertiert.
JdeBP,
6
Können wir die Meinungen im ersten Satz zitieren?
Thosphor
3
@ Kusalananda Danke für den Link / Info. Diese Quelle unterstützt die Meinung in der Antwort jedoch nicht.
Thosphor
2
@thosphor "Hass" ist ein bisschen übertrieben, aber es ist klar, dass RMS und FSF es nicht als ihr bevorzugtes Format betrachten.
Barmar
18

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 infoDokumentationssystem verwendet wird, während mannroff 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.

filbranden
quelle
6
Die Ironie ist, dass pod2manein 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.
JdeBP
2
@JdeBP Du scheinst die Antworten hier zu haben, also warum schreibst du keine?
Pipe
3
Zusammenarbeit, Pipe. Antwortkommentare dienen dazu, Verbesserungen der Antworten vorzuschlagen . Hier sind einige Verbesserungen. Mal sehen, ob die beiden hier angesprochenen Personen sie einbeziehen möchten. Ich möchte ihnen nicht auf die Zehen treten, wenn sie es tun.
JdeBP
3
@JdeBP Danke für den Aufruf. Ich 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. :)
tchrist