Eu estava lendo a página de manual do gdb e me deparei com a linha:
You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.
O C @ t {++} parece um regex, mas não consigo decodificá-lo.
O que isso significa?
man
documentation
gdb
sam
fonte
fonte
++
alguma formaC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
Respostas:
O GNU odeia páginas de manual, então elas geralmente escrevem documentação em outro formato e geram uma página de manual a partir dela, sem realmente se preocupar se o resultado é utilizável.
C@t{++}
é alguma marcação texinfo que não foi traduzida. Não era para ser parte da documentação visível ao usuário. Deveria simplesmente dizerC++
(possivelmente com uma fonte especial++
para fazer com que pareça agradável).fonte
A sequência
@t{...}
é a marcação texinfo para digitar uma sequência usando fonte de largura fixa (consulte Fontes seção do manual texinfo para obter mais detalhes e alguns exemplos.)Parece que eles estavam tentando escrever "C ++" e o "++" usa uma fonte de largura fixa (como "
++
".) Talvez alguém tenha encontrado que produz melhores resultados com fontes específicas ao renderizar documentação em PostScript ou PDF ou em algum formato que usa fontes de largura variável por padrão.A razão pela qual isso não parece funcionar e você está vendo a sequência não processada é que o texinfo é usado pelo
info
sistema de documentação, enquantoman
usa o nroff, que é uma linguagem diferente com comandos diferentes (por exemplo, o comando para alternar para uma constante fonte width em nroff é\f(CW
), então é claro que não reconheceu a@t{...}
sequência inalterada.Esse problema parece ter sido introduzido em um commit a partir de abril de 2013, onde as páginas de manual foram convertidas em texinfo e essa marcação específica foi introduzida. Parece que o script agora usado para gerar as páginas de manual (
texi2man.pl
) não reconhece ou converte adequadamente essa sequência.fonte
pod2man
fornece uma macro roff para "um C ++ mais agradável" que não é usado porque seu código de reconhecimento apenas entra em ação na string "C ++".C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
expansão do troff de um laboratório em Murray Hill durante o evangelismo inicial da linguagem C ++ quando estávamos digitando os procedimentos do USENIX para esses primeiros eventos em C ++. Os labbies foram muito sérios sobre seu troff. :)