O que C @ t {++} significa na página do manual gdb?

16

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?

sam
fonte
para qual versão? olhares como C ++ só eles bodged a codificação especial de ++alguma forma
thrig
@thrig Posso confirmar isso no Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5.
Melebius
O que faz isso parecer uma regex para você?
Fund Monica's Lawsuit
FWIW, isso seria uma regex inválida.
Lightness Races com Monica
Claramente eles esqueceram como escreverC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist

Respostas:

28

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 dizer C++(possivelmente com uma fonte especial ++para fazer com que pareça agradável).


fonte
8
Nesse caso, foi exatamente o contrário. O doco foi originalmente escrito em roff na década de 1980 e a ROFF (mal) mão-convertido em texinfo em 2013.
JdeBP
6
Podemos obter alguma citação para as opiniões na primeira frase?
thosphor
4
@thosphor Ver, por exemplo unix.stackexchange.com/questions/77514/what-is-gnu-info-for
Kusalananda
3
@Kusalananda Obrigado pelo link / informações. Essa fonte não suporta a opinião na resposta.
thosphor
2
@thosphor "hate" é um exagero, mas é claro que o RMS e a FSF não o consideram o formato preferido.
Barmar
18

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 infosistema de documentação, enquanto manusa 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.

filbranden
fonte
6
A ironia é que pod2manfornece 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 ++".
JdeBP # 18/18
2
@JdeBP Você parece ter as respostas aqui, por que não escreve uma?
pipe
3
Colaboração, cano. Os comentários das respostas são para sugerir melhorias nas respostas . Aqui estão algumas melhorias. Vamos ver se os dois respondentes aqui desejam incorporá-los. Eu quero não pisar na ponta dos pés, se o fizerem.
JdeBP # 18/18
3
@JdeBP Obrigado pela chamada. Lembro-me de que recebi a 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. :)
tchrist