Explication sur message d'erreur

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Explication sur message d'erreur

Message par pianiste06 »

Bonjour,

Quand je compile le document final, il apparaît un message d'erreurs qui se répète sans cesse.
Sur le log, voici le message d'erreur en question :

Code : Tout sélectionner

! Only one # is allowed per tab.
<argument> ...ycr {}\tabskip \z@skip \halign {####
                                                  ####\crcr $\mathsurround \...
l.90 ...hfil $\crcr }}}}$}{157}{subsection.11.1.2}
                                                  %
There should be exactly one # between &'s, when an
\halign or \valign is being set up. In this case you had
more than one, so I'm ignoring all but the first.
Toute suggestion sera bienvenue.
Dernière modification par MB le vendredi 17 juillet 2020, 09:58, modifié 1 fois.
Raison : Balises code.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

Déjà il ne s'agit pas d'un message d'erreur sinon figurerait le mot error.
Il faut isoler la cause de ce message. Une solution consiste à réaliser un ECM qui le produit : supprimer du document final tout ce qui ne le produit pas.
En procédant par dichotomie, on peut accélérer le processus.

Pour essayer de localiser la source des messages un peu plus rapidement, je placerais quelques points de repères dans le fichier source tels que

Code : Tout sélectionner

\def\MESS{Repère 17}
\show\MESS
et dans le log apparaîtra

Code : Tout sélectionner

> \MESS=macro:
->Repère 17.
l.11 \show\MESS
Une autre solution que l'on peut pratiquer avec un bon éditeur (Emacs le fait) est d'effectuer une compilation partielle sur une partie suspecte (il s'agit visiblement d'un tableau).

C'est un travail un peu fastidieux, c'est sûr que s'il y avait un ou une voyante extra-lucide sur MaThemaTeX, ça ferait gagner du temps. Si tu en connais, essaye de la persuader de collaborer au site...
JJR.
LaTeXien migrateur.

pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Re: Explication sur message d'erreur

Message par pianiste06 »

Juste une question...

où placer le code :

Code : Tout sélectionner

\def\MESS{Repère 17}
\show\MESS
Sur le document principal ? Si oui... après le begin{document} ?
Ou sur chaque chapitre ?

C'est vrai que j'ai l'impression de chercher une aiguille dans une botte de foin.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

N'importe où dans le fichier source. Le but est d'encadrer la source des messages dont on veut déterminer l'origine entre deux repères, puis de les déplacer pour restreindre l'origine.
C'est une technique qui sort de mon imagination, je l'espère efficace. Peut-être qu'un vrai spécialiste de LaTeX (ce que je ne suis pas) trouverait une façon plus élégante de procéder.
JJR.
LaTeXien migrateur.

pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Re: Explication sur message d'erreur

Message par pianiste06 »

Bonjour Giair,

C'est fait. Voici ce que je trouve sur le log après \show\MESS

Code : Tout sélectionner

> \MESS=macro:
->Repère 17.
l.353 \show\MESS
                

\GPT@outputbox=\box143
LaTeX Font Info:    Trying to load font information for TS1+lmr on input line 4
88.
("C:\Program Files\MiKTeX 2.9\tex/latex/lm\ts1lmr.fd"
File: ts1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
) [1

{C:/Users/Franck/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}] [2] [3] [4
]
<Photo Franck.jpg, id=849, 319.1925pt x 369.38pt>
File: Photo Franck.jpg Graphic file (type jpg)
<use Photo Franck.jpg>
Package pdftex.def Info: Photo Franck.jpg  used on input line 573.
(pdftex.def)             Requested size: 95.75848pt x 110.81485pt.
File: Photo Franck.jpg Graphic file (type jpg)
<use Photo Franck.jpg>
Package pdftex.def Info: Photo Franck.jpg  used on input line 574.
(pdftex.def)             Requested size: 95.75848pt x 110.81485pt.
File: Photo Franck.jpg Graphic file (type jpg)
<use Photo Franck.jpg>
Package pdftex.def Info: Photo Franck.jpg  used on input line 576.
(pdftex.def)             Requested size: 95.75848pt x 110.81485pt.
Dernière modification par MB le vendredi 17 juillet 2020, 16:19, modifié 1 fois.
Raison : Balises code.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

Le but est d'encadrer les messages suspects pour extraire du fichier source un ECM qui provoque ces messages.
Or ici, il n'y a aucun message suspect. Charger l'image Frank.jpg n'a rien de suspect, à moins que ledit Frank ne soit un terroriste recherché.
JJR.
LaTeXien migrateur.

pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Re: Explication sur message d'erreur

Message par pianiste06 »

Bon, j'avoue ! C'est bien moi "Franck le terroriste"!

Ca peut te paraître débile, mais je ne vois pas trop comment utiliser le marqueur et récupérer les erreurs sur le fichier .log.

Si je reviens au message d'erreur :

Code : Tout sélectionner

! Only one # is allowed per tab.
<argument> ...r {}\tabskip \z@skip \halign {######
                                                  ##\crcr $\mathsurround \z@...
l.90 ...hfil $\crcr }}}}$}{157}{subsection.11.1.2}
                                                  %
There should be exactly one # between &'s, when an
\halign or \valign is being set up. In this case you had
more than one, so I'm ignoring all but the first.
Cela signifie que sur un tableau, j'ai inséré par erreur un symbole # après le séparateur & ?
Et je ne comprends pas trop pourquoi, ils parlent de la ligne L.90 ?
Dernière modification par MB le vendredi 17 juillet 2020, 16:20, modifié 1 fois.
Raison : Balises code.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

Ce n'est pas forcément la ligne 90 du fichier source, ça peut être la ligne 90 d'un fichier appelé par le fichier source..
Normalement, un éditeur de texte est capable d'indiquer sur quelle ligne se trouve le curseur et éventuellement de placer le curseur sur cette ligne.
Il faut parcourir le fichier log en remontant pour voir si un le message a son origine dans le fichier source, ou dans un fichier appelé.
C'est un travail de romain, c'est pourquoi on demande un ECM et son log. Autrement la recherche d'erreurs relève de la divination.
JJR.
LaTeXien migrateur.

pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Re: Explication sur message d'erreur

Message par pianiste06 »

En fait, j'ai 15 fichiers (un par chapitre) appelé par le document principal.
Il me suffit de les ouvrir 1 par 1 et de voir l'intrus à la ligne 90 ?

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

pianiste06 a écrit :
vendredi 17 juillet 2020, 13:13
En fait, j'ai 15 fichiers (un par chapitre) appelé par le document principal.
Il me suffit de les ouvrir 1 par 1 et de voir l'intrus à la ligne 90 ?
Pas sûr que la ligne 90 en question soit dans un de ces fichiers. Elle peut être dans un fichier appelé par un \usepackage.


La recherche dichotomique est compliquée si le fichier source est éclaté en plusieurs sous-documents.
Pour les besoins du debuggage, il est peut-être préférable de tout fusionner avec latexpand, puis d'effectuer une recherche dichotomique.
JJR.
LaTeXien migrateur.

pianiste06
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 139
Inscription : mardi 05 mai 2020, 08:29

Re: Explication sur message d'erreur

Message par pianiste06 »

Je viens de voir un truc bizarre... bien que le programme compilé affiche des messages en rouge (pour moi, c'était synonyme
de messages d'erreur...), je viens de voir que le PDF à la sortie sortait nickel.
J'ai comme l'impression qu'essayer de comprendre l'origine du bug revient à chercher l'aiguille dans une botte de foin alors
que le bouton de son pantalon tient parfaitement et qu'il n'est pas nécessaire de le recoudre.

Penses-tu que ca vaille le coup de se pencher sur l'origine du bug?

PS : ca fait à peine un an que j'ai découvert Latex...

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2574
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Explication sur message d'erreur

Message par gigiair »

C'était ma première réponse : il n'y a pas de message d'erreur. Quand il y en a une c'est écrit error dans le log. L'affichage en rouge n'est pas du fait de LaTeX mais de l'afficheur du log .
JJR.
LaTeXien migrateur.

touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 434
Inscription : dimanche 11 février 2007, 11:45

Re: Explication sur message d'erreur

Message par touhami »

pianiste06 a écrit :
vendredi 17 juillet 2020, 09:37
...
Sur le log, voici le message d'erreur en question :

Code : Tout sélectionner

! Only one # is allowed per tab.
<argument> ...ycr {}\tabskip \z@skip \halign {####
                                                  ####\crcr $\mathsurround \...
l.90 ...hfil $\crcr }}}}$}{157}{subsection.11.1.2}
                                                  %
There should be exactly one # between &'s, when an
\halign or \valign is being set up. In this case you had
more than one, so I'm ignoring all but the first.
...
Bonjour.
Je suppose que c'est au niveau de la deuxième sous-section de la première section du chapitre 11.
Dans le titre de la dite sous-section vous avez une commande (fragile) basée sur \ialign ou \oalign.

Code : Tout sélectionner

{subsection.11.1.2}


Dans la suite un exemple avec la commande \underbrace redéfinie par l'extension mathtools.

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{hyperref}

\usepackage{mathtools}



\begin{document}
\tableofcontents
\section{Foo}

\subsection{Bar $\underbrace{A}$}

Bla bla

\end{document} 
La solution est de protéger cette commande, c'est-à-dire ajouter le préfixe \protect.

Code : Tout sélectionner

\subsection{Bar $\protect\underbrace{A}$}