Czytałem stronę podręcznika dla gdb i natknąłem się na linię:
You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.
C @ t {++} wygląda jak wyrażenie regularne, ale nie mogę go zdekodować.
Co to znaczy?
man
documentation
gdb
sam
źródło
źródło
++
jakośC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
Odpowiedzi:
GNU nienawidzi stron podręcznika, więc zwykle piszą dokumentację w innym formacie i generują stronę podręcznika z tego, nie dbając o to, czy wynik jest użyteczny.
C@t{++}
to niektóre znaczniki texinfo, które nie zostały przetłumaczone. Nie miał być częścią dokumentacji widocznej dla użytkownika. Powinien po prostu powiedziećC++
(ewentualnie ze specjalną czcionką,++
aby wyglądał ładnie).źródło
Sekwencja
@t{...}
jest znacznikiem texinfo służącym do składania sekwencji przy użyciu czcionki o stałej szerokości ( więcej szczegółów i kilka przykładów znajduje się w sekcji Czcionki podręcznika texinfo).Wygląda na to, że próbowali napisać „C ++”, a „++” używał czcionki o stałej szerokości (np. „
++
”.) Być może ktoś odkrył, że daje lepsze wyniki w przypadku określonych czcionek podczas renderowania dokumentacji w PostScript lub PDF lub w innym formacie, który domyślnie używa czcionek o zmiennej szerokości.Powodem, dla którego wydaje się, że to nie działa i widzisz nieprzetworzoną sekwencję, jest to, że texinfo jest używany przez
info
system dokumentacji, podczas gdyman
używa nroff, który jest innym językiem z różnymi poleceniami (na przykład polecenie przełączenia na stałą szerokość czcionki w nroff to\f(CW
), więc oczywiście nie rozpoznała@t{...}
sekwencji bez zmian.Wydaje się, że ten problem został wprowadzony w zatwierdzeniu z kwietnia 2013 r., W którym strony podręcznika zostały przekonwertowane na texinfo i wprowadzono ten specjalny znacznik. Wygląda na to, że skrypt używany teraz do generowania stron man (
texi2man.pl
) nie rozpoznaje ani nie konwertuje poprawnie tej sekwencji.źródło
pod2man
zapewnia makro roff dla „ładniejszego C ++”, które nie jest używane, ponieważ jego kod rozpoznawania uruchamia się tylko dla ciągu „C ++”.C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
rozszerzenie troff od labbie na Murray Hill podczas początkowej ewangelizacji języka C ++, kiedy składaliśmy postępowania USENIX dla tych wczesnych wydarzeń w C ++. Hobby bardzo poważnie traktowały ich troff. :)