Я читал справочную страницу для GDB, и я наткнулся на строку:
You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.
C @ t {++} выглядит как регулярное выражение, но я не могу его расшифровать.
Что это означает?
man
documentation
gdb
Сэм
источник
источник
++
каким - то образомC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
Ответы:
GNU ненавидит man-страницы, поэтому они обычно пишут документацию в другом формате и генерируют man-страницу из этого, не заботясь о том, пригоден ли результат.
C@t{++}
некоторая разметка texinfo, которая не была переведена. Это не было предназначено, чтобы быть частью видимой пользователем документации. Надо просто сказатьC++
(возможно, с каким-то специальным шрифтом,++
чтобы он выглядел красиво).источник
Последовательность
@t{...}
является Texinfo разметки верстать последовательность с использованием фиксированной ширины шрифта (см Шрифты секции Texinfo по эксплуатации для получения более подробной информации и некоторые примеры.)Похоже, они пытались написать «C ++» и использовать «++» для шрифта фиксированной ширины (например, «
++
».) Возможно, кто-то обнаружил, что дает лучшие результаты с конкретными шрифтами при отображении документации в PostScript или PDF или в каком-либо формате, который по умолчанию использует шрифты переменной ширины.Причина, по которой это не работает, и вы видите необработанную последовательность, состоит в том, что texinfo используется системой
info
документации, в то время какman
использует nroff, который является другим языком с другими командами (например, команда для переключения на константу Ширина шрифта в nroff есть\f(CW
), поэтому он, конечно, не распознал@t{...}
последовательность без изменений.Эта проблема, кажется, была введена в коммите с апреля 2013 года, когда man-страницы были преобразованы в texinfo, и была введена эта конкретная разметка. Похоже, что скрипт, который теперь используется для генерации man-страниц (
texi2man.pl
), не распознает и не конвертирует эту последовательность должным образом.источник
pod2man
предоставляет макрос roff для «более приятного C ++» , который не используется, потому что его код распознавания включается только для строки «C ++».C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
расширение troff от labbie в Murray Hill во время первоначальной евангелизации языка C ++ еще тогда, когда мы набирали процедуры USENIX для тех ранних событий C ++. Лабби были довольно серьезны в отношении своего трона. :)