Encore une erreur incompréhensible depuis maj TeXLive

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté par 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.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 964
Inscription : jeudi 25 novembre 2010, 22:10

[Résolu] Encore une erreur incompréhensible depuis maj TeXLive

Message par marco56 »

Bonjour,
J'ai encore un truc étrange et là qui me dérange franchement. Ceci a lieu depuis la maj de TeXLive à moins d'une coïncidence.
Voici mon fichier :

Code : Tout sélectionner

\documentclass[7pt]{article}
\usepackage{longtable}
\usepackage[table]{xcolor}
\usepackage{lscape}
\usepackage[a3paper,landscape]{geometry}
\geometry{lmargin=0cm,rmargin=0cm,tmargin=1.3cm,bmargin=1.3cm}
\usepackage{arydshln}

\newcolumntype{R}[1]{>{\raggedright}m{#1}}
\newcolumntype{S}[1]{>{ \color{blue} \raggedright}m{#1}}
\newcolumntype{C}[1]{>{\centering}m{#1}}
\newcolumntype{L}[1]{>{\raggedleft}m{#1}}
\newcolumntype{D}[1]{>{\bfseries \raggedleft % \cellcolor{yellow!10}
} m{#1}}

\begin{document}

{\Large \begin{center}\textbf{Fichier classé par total de points} \hspace*{2cm} \today\end{center}}

\begin{center}
\arrayrulecolor{red!50}{
\rowcolors{2}{blue!10}{yellow!10}
\begin{longtable}{|S{5.15cm}|S{2.5cm}|R{2.4cm}|R{2.6cm}|R{0.35cm}|C{0.45cm}|C{0.4cm}|L{0.5cm}|*{16}{L{0.7cm}|} L{0.4cm}| >{\color{blue}}L{0.35cm}| L{0.7cm}| L{0.15cm}| D{1cm}| D{0.5cm}|}
\hline
Nom & Prénom & Lycée & Commune & Dpt & Brs & Niv & Avis & N.Mat & Cl.Mat & E.Mat & N.Phy & Cl.Phy & E.Phy & N.LV & Cl.LV & E.LV & N.Phi & Cl.Phi & E.Phi & Fr.Or & Fr.Ec & N.SI & Cl.SI & E.SI & PO & Bon & I & Total & N \tabularnewline
\hline
\endfirsthead
\input{tab-test.tex}
\hline
\end{longtable}
}
\end{center}

\end{document}
Dans mon fichier tab-test.tex, voici ce qu'il y a :

Code : Tout sélectionner

BIBI & Hop & Ici & Paris & 75 & NB & B & TT & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 100 & 100 & 5 & 140 & - & 100 & 1 \tabularnewline 
\hdashline
J'ai l'erreur suivante :

Code : Tout sélectionner

! Misplaced \noalign.
\hline ->\noalign 
                  {\ifnum 0=`}\fi \gdef \adl@LThdlrow {\multispan {\LT@cols ...
l.33 \hline
           
I expect to see \noalign only after the \cr of
an alignment. Proceed, and I'll ignore this case.

! Misplaced \omit.
\multispan ->\omit 
                   \@multispan 
l.33 \hline
mais uniquement lorsque mon tableau est dans le fichier auxiliaire.
Si je prends le contenu du fichier et que l'insère à la place du \input{...}, cela fonctionne parfaitement. :thumbdown:
Cela me dérange car le fichier auxiliaire fait dans les 250 lignes et de plus, tout est généré par un programme Python.
Si quelqu'un a une idée pour me débloquer, je suis preneur.
Joyeuses Pâques sinon. :)
Dernière modification par marco56 le mardi 06 avril 2021, 00:48, modifié 1 fois.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par un bon petit »

marco56 a écrit : lundi 05 avril 2021, 15:33 Si je prends le contenu du fichier et que l'insère à la place du \input{...}, cela fonctionne parfaitement. :thumbdown:
C'est tout à fait normal et c'est la faute à LaTeX.

À la base, \input est une primitive qui s'emploie ainsi : \input nomfichier.tex
Cette primitive est purement développable et son 1-développement est le contenu du fichier.
Dans le tableau, à l'endroit où elle se trouve, elle doit être purement développable (je n'entre pas dans le détail des subtilités de \halign).

Le problème est que lorsqu’on utilise laTeX, \input n'est PAS une primitive. Pour une raison que je n'ai jamais comprise et que je ne comprendrai jamais, LaTeX redéfinit \input de façon à ce qu'elle soit utilisé selon 2 syntaxes possibles :
  • \input nomfichier.tex
  • \input{nomfichier.tex}
Cela ne serait pas trop grave (quoiqu'il convient de ne JAMAIS redéfinir des primitives, n'est ce pas les dev de ConTeXt ?) si \input de LaTeX était purement développable. Mais comme la macro \input fait appel à \@ifnextchar qui utilise la primitive non développable \futurelet, et bien \input avec laTeX n'est pas purement développable. D'où l'erreur constatée.

Pour s'en sortir, il faut aller chercher la primitive \input, sauvegardée sous le doux nom de \@@input par LaTeX avant de la redéfinir. J'ai donc créé la macro \INPUT, copie de la primitive \input, et cela devrait fonctionner.

Code : Tout sélectionner

\documentclass[7pt]{article}
\usepackage{longtable}
\usepackage[table]{xcolor}
\usepackage{lscape}
\usepackage[a3paper,landscape]{geometry}
\geometry{lmargin=0cm,rmargin=0cm,tmargin=1.3cm,bmargin=1.3cm}
\usepackage{arydshln}
\makeatletter
\let\INPUT\@@input
\makeatother
\newcolumntype{R}[1]{>{\raggedright}m{#1}}
\newcolumntype{S}[1]{>{ \color{blue} \raggedright}m{#1}}
\newcolumntype{C}[1]{>{\centering}m{#1}}
\newcolumntype{L}[1]{>{\raggedleft}m{#1}}
\newcolumntype{D}[1]{>{\bfseries \raggedleft} m{#1}}
\begin{document}

\begin{center}
	\arrayrulecolor{red!50}
	\rowcolors{2}{blue!10}{yellow!10}
	\begin{longtable}{|S{5.15cm}|S{2.5cm}|R{2.4cm}|R{2.6cm}|R{0.35cm}|C{0.45cm}|C{0.4cm}|L{0.5cm}|*{16}{L{0.7cm}|} L{0.4cm}| >{\color{blue}}L{0.35cm}| L{0.7cm}| L{0.15cm}| D{1cm}| D{0.5cm}|}
		\hline
		Nom & Prénom & Lycée & Commune & Dpt & Brs & Niv & Avis & N.Mat & Cl.Mat & E.Mat & N.Phy & Cl.Phy & E.Phy & N.LV & Cl.LV & E.LV & N.Phi & Cl.Phi & E.Phi & Fr.Or & Fr.Ec & N.SI & Cl.SI & E.SI & PO & Bon & I & Total & N \tabularnewline
		\hline
		\endfirsthead
		\INPUT tab-test.tex
		\hline
	\end{longtable}
\end{center}
\end{document}
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par marco56 »

Un grand merci, cela fonctionne.
Ce qui m'étonne ou plutôt qui je trouve surprenant, j'en ai la preuve sur mon disque (les fichiers sont sauvegardés avec la date dans le nom du fichier), c'est que cela fonctionnait parfaitement il y a quelques semaines, avant la mise à jour vers TeXLive 2020.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par un bon petit »

marco56 a écrit : lundi 05 avril 2021, 15:33Ceci a lieu depuis la maj de TeXLive à moins d'une coïncidence.
Comment voulez-vous qu'on sache ce qui a changé si vous ne dites pas au moins une des 2 informations suivantes
  • de quelle version de TeXlive vous venez.
  • quelle version de LaTeX et/ou de longtable vous utilisiez lorsque ça fonctionnait.
Il peut y avoir pas mal de trucs qui évoluent, autant du côté de LaTeX, mais plus probablement du côté de longtable. Pour \input, cet état de fait dure depuis des décennies.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par marco56 »

Ce n'est pas bien grave et de toutes façons, c'est trop tard : je venais de TL2018 mais je ne peux plus connaître la version de longtable que j'utilisais.
C'est juste que j'étais content d'utiliser LaTeX pour avoir une compatibilité accrue entre les versions et une pérennité de mes fichiers et qu'au final, ce n'est pas vraiment le cas.
Merci encore en tous cas pour cette solution qui me sauve un peu la vie.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par un bon petit »

De toutes façons, TeXlive2020 est depuis quelques jours obsolète et plus maintenue : il faut donc sans tarder mettre à jour et passer à TeXlive2021.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par marco56 »

Oui, j'ai vu. J'hésite un peu :)
Sans rire, y a-t--il une méthode mieux qu'une autre ? Si j'en crois ma dernière expérience, il vaut mieux enlever la version 2020 et réinstaller à neuf la 2021 ?
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par un bon petit »

marco56 a écrit : mardi 06 avril 2021, 00:48 Oui, j'ai vu. J'hésite un peu :)
Sans rire, y a-t--il une méthode mieux qu'une autre ?
Cela ne pose aucune difficulté. Il faut arrêter de se faire une montagne de cette manip.

Pour ma part, je désinstalle TL2020 avec tlmgr remove --all
Je télécharge l'iso de TL2021 (car je l'installe sur plusieurs ordi). Je monte l'iso dans un répertoire vierge quelconque de mon disque dur.
Je lance l'installation de TL2021 et 15 minutes plus tard, c'est bon.
marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Encore une erreur incompréhensible depuis maj TeXLive

Message par marco56 »

Yep ! C'est fait et tout semble tourner correctement. Merci encore.