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} \caption{essai2} \end{table} \end{document} |
Dans l'ECM de la question, il n'y a rien avant 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} 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} Pourquoi ? Addendum :
! Misplaced \omit. est une erreur générée par TeX
le programme lui même, elle signifie que la commande 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} Publiée 20 Aoû '18, 01:56 touhami |
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.