Que signifie C @ t {++} dans la page de manuel gdb?

16

Je lisais la page de manuel de gdb et je suis tombé sur la ligne:

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

Le C @ t {++} ressemble à une expression régulière mais je n'arrive pas à le décoder.

Qu'est-ce que ça veut dire?

sam
la source
pour quelle version? ressemble à C ++ seulement ils ont auguré l'encodage spécial de toute ++façon
thrig
@thrig Je peux le confirmer dans Ubuntu 16.04, gdb 7.11.1-0ubuntu1 ~ 16.5.
Melebius
À quoi cela ressemble-t-il à une expression régulière?
Fund Monica's Lawsuit
FWIW, ce serait une expression rationnelle invalide.
Courses de légèreté avec Monica
De toute évidence, ils ont oublié comment écrireC\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
tchrist

Réponses:

28

GNU déteste les pages de manuel, donc elles écrivent généralement de la documentation dans un autre format et en génèrent une, sans vraiment se soucier si le résultat est utilisable.

C@t{++}est un balisage texinfo qui n'a pas été traduit. Il n'était pas destiné à faire partie de la documentation visible par l'utilisateur. Il devrait simplement dire C++(éventuellement avec une police spéciale pour le ++rendre joli).


la source
8
Dans ce cas, c'était exactement l'inverse. Le doco a été initialement écrit en roff dans les années 1980 et le roff (mal) converti à la main en texinfo en 2013.
JdeBP
6
Pouvons-nous obtenir une citation pour les opinions dans la première phrase?
thosphor
4
@thosphor Voir par exemple unix.stackexchange.com/questions/77514/what-is-gnu-info-for
Kusalananda
3
@Kusalananda Merci pour le lien / info. Cette source ne soutient cependant pas l'opinion dans la réponse.
thosphor
2
@thosphor "haine" est un peu exagéré, mais il est clair que RMS et FSF ne le considèrent pas comme leur format préféré.
Barmar
18

La séquence @t{...}est le balisage texinfo pour composer une séquence à l'aide d'une police à largeur fixe (voir la section Polices du manuel texinfo pour plus de détails et quelques exemples.)

Il semble qu'ils essayaient d'écrire "C ++" et que le "++" utilise une police à largeur fixe (comme " ++".) Peut-être que quelqu'un a trouvé de meilleurs résultats avec des polices spécifiques lors du rendu de la documentation en PostScript ou PDF ou dans un format qui utilise des polices à largeur variable par défaut.

La raison pour laquelle cela ne semble pas fonctionner et que vous voyez la séquence non traitée est que texinfo est utilisé par le infosystème de documentation, alors qu'il manutilise nroff qui est un langage différent avec des commandes différentes (par exemple, la commande pour passer à une constante largeur de police dans nroff est \f(CW), il n'a donc bien sûr pas reconnu la @t{...}séquence inchangée.

Ce problème semble avoir été introduit dans un commit d'avril 2013 où les pages de manuel ont été converties en texinfo et ce balisage spécifique a été introduit. Il semble que le script maintenant utilisé pour générer les pages de manuel ( texi2man.pl) ne reconnaisse pas ou ne convertisse pas correctement cette séquence.

filbranden
la source
6
L'ironie est que cela pod2manfournit une macro roff pour "un C ++ plus agréable" qui n'est pas utilisé parce que son code de reconnaissance entre en jeu pour la chaîne "C ++".
JdeBP
2
@JdeBP Vous semblez avoir les réponses ici, alors pourquoi n'en écrivez-vous pas?
pipe
3
Collaboration, pipe. Les commentaires sur les réponses servent à suggérer des améliorations aux réponses . Voici quelques améliorations. Voyons si les deux répondeurs ici souhaitent les incorporer. Je ne veux pas marcher sur leurs orteils s'ils le font.
JdeBP
3
@JdeBP Merci pour votre appel. Si je me souviens bien, j'ai obtenu l' C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'expansion de troff d'un labbie à Murray Hill pendant l'évangélisation initiale du langage C ++ lorsque nous composions les procédures USENIX pour ces premiers événements C ++. Les labbies étaient assez sérieux au sujet de leur troff. :)
tchrist