Cosa significa C @ t {++} nella pagina man di gdb?


16

Stavo leggendo la manpage di gdb e mi sono imbattuto nella riga:

You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.

Il C @ t {++} sembra una regex ma non riesco a decodificarlo.

Cosa significa?


per quale versione? sembra che solo in C ++ abbiano portato in ++qualche modo la codifica speciale
thrig

@thrig Posso confermarlo in Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5.
Melebio

Cosa ti fa sembrare una regex?
Finanzia la causa di Monica il

FWIW, sarebbe una regex non valida.
Lightness Races con Monica il

Chiaramente hanno dimenticato come scrivereC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist,

Risposte:


28

GNU odia le pagine man, quindi di solito scrivono documentazione in un altro formato e generano una pagina man da quella, senza preoccuparsi davvero se il risultato è utilizzabile.

C@t{++}è un markup texinfo che non è stato tradotto. Non intendeva far parte della documentazione visibile dall'utente. Dovrebbe semplicemente dire C++(possibilmente con qualche font speciale per ++renderlo bello).


8
In questo caso, era esattamente il contrario. Il doco è stato originariamente scritto in roff negli anni '80 e il roff (malamente) convertito a mano in texinfo nel 2013.
JdeBP,

6
Possiamo ottenere qualche citazione per le opinioni nella prima frase?
thosphor,


3
@Kusalananda Grazie per il link / informazioni. Quella fonte non supporta l'opinione nella risposta però.
thosphor,

2
@thosphor "odio" è un po 'un'esagerazione, ma è chiaro che RMS e FSF non lo considerano il loro formato preferito.
Barmar,

18

La sequenza @t{...}è il markup texinfo per comporre una sequenza usando font a larghezza fissa (vedere la sezione Font del manuale texinfo per maggiori dettagli e alcuni esempi.)

Sembra che stessero cercando di scrivere "C ++" e che "++" usasse un carattere a larghezza fissa (come " ++"). Forse qualcuno ha scoperto che produce risultati migliori con caratteri specifici durante il rendering della documentazione in PostScript o PDF o in un formato che utilizza i caratteri a larghezza variabile per impostazione predefinita.

Il motivo per cui questo non sembra funzionare e stai vedendo la sequenza non elaborata è che texinfo è utilizzato dal infosistema di documentazione, mentre manusa nroff che è una lingua diversa con comandi diversi (ad esempio, il comando per passare a una costante larghezza del carattere in nroff è \f(CW), quindi ovviamente non ha riconosciuto la @t{...}sequenza invariata.

Questo problema sembra essere stato introdotto in un commit da aprile 2013 in cui le pagine man sono state convertite in texinfo e è stato introdotto quel markup specifico. Sembra che lo script ora utilizzato per generare le pagine man ( texi2man.pl) non riconosca o converta correttamente quella sequenza.



6
L'ironia è che pod2manfornisce una macro roff per "un C ++ più bello" che non viene utilizzato perché il suo codice di riconoscimento si attiva solo per la stringa "C ++".
JdeBP,

2
@JdeBP Sembra che tu abbia le risposte qui, quindi perché non ne scrivi una?
pipe il

3
Collaborazione, pipe. I commenti alle risposte servono a suggerire miglioramenti alle risposte . Ecco alcuni miglioramenti. Vediamo se i due risponditori qui desiderano incorporarli. Voglio non calpestare le dita dei piedi se lo fanno.
JdeBP,

3
@JdeBP Grazie per la chiamata. Il mio ricordo è che ho avuto l' C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'espansione del troff da una lobby a Murray Hill durante l'evangelizzazione iniziale del linguaggio C ++ quando stavamo componendo le procedure USENIX per quei primi eventi C ++. Le lobby erano piuttosto serie sul loro troff. :)
tchrist,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.