Je voudrais savoir comment créer un raccourci de multicolumn avec le nombre de colonne comme valeur par défaut.

Voici un ECM expliquant le problème renconté

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\newcommand{\tcellfont}{\bfseries}
\newcommand*{\tcell}[2]{\multicolumn{#1}{|c|}{\tcellfont #2}}
\newcommand*{\tcellbis}[2][1]{\multicolumn{#1}{|c|}{\tcellfont #2}}
\begin{document}
La première commande avec deux arguments fonctionne bien
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hline
\tcell{1}{Titre1}&\tcell{1}{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
\caption{essai1}
\end{table}
Mais lorsque je définis la même commande avec une valeur par défaut,\\
j'obtiens l'erreur <<\verb|Misplaced \omit|>>
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hline
\tcellbis{Titre1}&\tcellbis{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Posée 19 Aoû '18, 18:51

Hugues's gravatar image

Hugues
772916
Taux d'acceptation : 25%

Modifiée 20 Aoû '18, 13:48

touhami's gravatar image

touhami
10.0k410

La commande \multicolumn doit être utiliser avant tout autre chose dans la cellule, ici il a une teste faite par LaTeX pour détecter la présence de l'argument optionnel.

(19 Aoû '18, 19:57) touhami touhami's gravatar image

\multicolumn est une commande LaTeX utilisée pour fusionner des colonnes (plusieurs cases sur une même ligne). \multicolumn doit apparaitre comme le premier élément dans l'ensemble des cases concernées, plus précisément elle doit apparaitre immédiatement après \\ ou &.

Dans l'ECM de la question, il n'y a rien avant \multicolumn avec \tcell, alors que \tcellbis commence par une teste pour détecter la valeur de l'argument optionnel.

Voici une petit explication. Commençons par deux exemples :

ECM qui fonction

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\newcommand*{\tcell}[2]{%
\empty% <-----------------------------
\multicolumn{#1}{|c|}{\bfseries #2}}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\tcell{1}{Titre1}&\tcell{1}{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ECM qui ne fonction pas

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\newcommand*{\tcell}[2]{%
\relax% <-----------------------------
\multicolumn{#1}{|c|}{\bfseries #2}}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\tcell{1}{Titre1}&\tcell{1}{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Pourquoi ? \empty est une commande LaTeX qui se développe en rien (donc il n' y a rien avant \multicolumn) alors que \relax est une commande (primitive) non développable qui dit à TeX de ne rien faire. Avec \relax non développable \multicolumn n'est pas la première chose dans la cellule.

Addendum : ! Misplaced \omit. est une erreur générée par TeX le programme lui même, elle signifie que la commande \omit (la primitive à laquelle \multicolumn fait appel) est mal placée.

Solution Pour résoudre le problème il faut utiliser les commandes de l'extension xparse.

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage{xparse}
\newcommand{\tcellfont}{\bfseries}
\newcommand*{\tcell}[2]{\multicolumn{#1}{|c|}{\tcellfont #2}}
\NewExpandableDocumentCommand{\tcellbis}{O{1}m}{\multicolumn{#1}{|c|}{\tcellfont #2}}
\begin{document}
La première commande avec deux arguments fonctionne bien
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hline
\tcell{1}{Titre1}&\tcell{1}{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
\caption{essai1}
\end{table}
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hline
\tcellbis{Titre1}&\tcellbis{Titre2} \\
\hline
1 & 2 \\
\hline
3 & 4 \\
\hline
\end{tabular}
\caption{essai2}
\end{table}
\end{document}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien permanent

Publiée 20 Aoû '18, 01:56

touhami's gravatar image

touhami
10.0k410
Taux d'acceptation : 51%

Modifiée 20 Aoû '18, 13:47

Votre réponse
[Masquer l'aperçu]

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Mots-clés de la question :

×5
×4

Question posée : 19 Aoû '18, 18:51

Question vue : 5,626 fois

Dernière mise à jour : 20 Aoû '18, 13:48