Modification environnement théorème

Bonjour à tous,
J'ai trouvé le joli code ci-joint afin d'illustrer mes cours. Mais j'aimerais que le bandeau supérieur soit inversé c'est-à-dire que le mot méthode avec son fond bleu soit à gauche. J'ai essayé de bidouiller le code afin de le faire moi même mais en vain. Si une bonne âme veut bien m'aider ça serait cool...
D'avance merci
\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} 
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{amsmath,amssymb}
\usepackage{enumitem}
\usetikzlibrary{calc}
%-----------
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
%----------
\newcommand{\syBrisse}[6][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-4mm]{%
\begin{center}
\par\bigskip%
\begin{tikzpicture}
\node[rounded corners, text width=#1, align=justify, inner sep=8pt, outer sep=0] (one)
{\medskip\parbox[t]{\textwidth}{\vspace*{22pt}\par#6}};
\node[text=black,anchor=north east,align=center, minimum height=20pt, inner xsep=5pt] (two) at (one.north east) {#5 \hspace*{.5mm}};
\path[fill=#2,draw=#2]
    ($(one.north west)+(0ex,-4.5pt)$) [rounded corners=3pt] --
    ($(two.north west)+(-22pt,-4.5pt)$) --
    ($(two.south west)+(-4pt,0pt)$) [sharp corners] --
    (two.south east) [rounded corners] --
    (one.north east) --
    (one.north west) [sharp corners] -- cycle;
\node[text=black,anchor=north west,align=center, minimum height=20pt, text height=2ex,inner sep=8pt, inner ysep=3pt] (three) at ($(one.north west)+(0,-3pt)$) {#4};
\node[text=white,anchor=north east,align=center, minimum height=20pt, inner sep=8pt,inner ysep=6.5pt] (for) at ($(one.north east)+(0,1.5pt)$) {#5\hspace*{0.8mm}};
\path[draw=#2,line width=0.8pt]
    (one.south west) [rounded corners] --
    (one.south east) [rounded corners] --
    (one.north east) --
    (one.north west) [rounded corners] -- cycle;
\foreach \x in {10,20,...,100}
\path[opacity=\x*0.01]
    ($(one.north west)+(0.4pt,-6.5pt+\x/100)$) [rounded corners=3pt,draw=gray!\x] --
    ($(two.north west)+(-23.3pt+\x/100,-6.5pt+\x/100)$) [rounded corners=3.5pt,draw=gray!\x] --
    ($(two.south west)+(-5.3pt+\x/100,-1.9pt+\x/100)$) --
    ($(two.south east)+(-0.4pt,-1.9pt+\x/100)$);
\path[draw=white,line width=1.1pt]
    ($(one.north west)+(0.4pt,-5.2pt)$) [rounded corners=3pt] --
    ($(two.north west)+(-22.3pt,-5.2pt)$) [rounded corners=3.5pt] --
    ($(two.south west)+(-4.3pt,-0.6pt)$) --
    ($(two.south east)+(-0.4pt,-0.6pt)$);
\begin{pgfonlayer}{background}
\path[fill=#3!5]
    (one.south west) [rounded corners] --
    (one.south east) [rounded corners] --
    (one.north east) --
    (one.north west) [rounded corners] -- cycle;
\path[opacity=0.5, top color=#3!5,bottom color=#3,middle color=#3!30]
    (one.south west) [rounded corners] --
    (one.south east) [sharp corners] --
    ($(one.south east)+(0ex,0.8cm)$) --
    ($(one.south west)+(0ex,0.8cm)$) [rounded corners] -- cycle;
\end{pgfonlayer}
\end{tikzpicture}
\end{center}
}

\begin{document}

\syBrisse{blue}{blue}{\textbf{Titre}}{\textbf{Méthode}}{
essai
}

\end{document} 

Réponses

  • Bah, il faut échanger est et ouest, prendre l'opposé des abscisses à l'endroit souhaité... et voilà, quoi.
    \documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \pgfdeclarelayer{background}
    \pgfsetlayers{background,main}
    
    \newcommand{\syBrisse}[6][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-4mm]{%
    \begin{center}
    \par\bigskip%
    \begin{tikzpicture}
    % Grand rectangle
    \node[rounded corners, text width=#1, align=justify, inner sep=8pt,
          outer sep=0] (one) {\medskip\parbox[t]{\textwidth}{%
                                         \vspace*{22pt}\par#6}};
    % Méthode (invisible)
    \node[text=black,anchor=north west,align=center, minimum height=20pt,
          inner xsep=5pt] (two) at (one.north west) {\hspace*{.5mm} #5};
    % Remplissage bleu supérieur qui recouvre « Méthode »
    \path[fill=#2,draw=#2]
        ($(one.north east)+(0ex,-4.5pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22pt,-4.5pt)$) --
        ($(two.south east)+(4pt,0pt)$) [sharp corners] --
        (two.south west) [rounded corners] --
        (one.north west) --
        (one.north east) [sharp corners] -- cycle;
    % Titre
    \node[text=black,anchor=north east,align=center, minimum height=20pt,
          text height=2ex,inner sep=8pt, inner ysep=3pt] (three)
          at ($(one.north east)+(0,-3pt)$) {#4};
    % Méthode (visible)
    \node[text=white,anchor=north west,align=center, minimum height=20pt,
          inner sep=8pt,inner ysep=6.5pt] (for)
          at($(one.north west)+(0,1.5pt)$) {\hspace*{0.8mm}#5};
    % Cadre extérieur
    \path[draw=#2,line width=0.8pt]
        (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    % Liseré sous le truc bleu
    \foreach \x in {10,20,...,100}
    \path[opacity=\x*0.01]
        ($(one.north east)+(-0.4pt,-6.5pt+\x/100)$) [rounded corners=3pt,draw=gray!\x] --
        ($(two.north east)+(23.3pt-\x/100,-6.5pt+\x/100)$) [rounded corners=3.5pt,draw=gray!\x] --
        ($(two.south east)+(5.3pt-\x/100,-1.9pt+\x/100)$) --
        ($(two.south west)+(0.4pt,-1.9pt+\x/100)$);
    \path[draw=white,line width=1.1pt]
        ($(one.north east)+(-0.4pt,-5.2pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22.3pt,-5.2pt)$) [rounded corners=3.5pt] --
        ($(two.south east)+(+4.3pt,-0.6pt)$) --
        ($(two.south west)+(+0.4pt,-0.6pt)$);
    % Dégradé formant l'essentiel du contenu de la boîte
    \begin{pgfonlayer}{background}
    \path[fill=#3!5]
        (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    \path[opacity=0.5, top color=#3!5,bottom color=#3,middle color=#3!30]
        (one.south west) [rounded corners] --
        (one.south east) [sharp corners] --
        ($(one.south east)+(0ex,0.8cm)$) --
        ($(one.south west)+(0ex,0.8cm)$) [rounded corners] -- cycle;
    \end{pgfonlayer}
    \end{tikzpicture}
    \end{center}
    }
    
    \begin{document}
    
    \syBrisse{blue}{blue}{\textbf{Titre}}{\textbf{Méthode}}{%
     Essai
    }
    
    \end{document}
    
    88052
  • Super merci. Tu es plus doué que moi.
  • J'ai encore un souci et donc besoin d'aide. Lorsque je compile le premier code ci-dessous, ça marche nickel. En revanche lorsque j'ajoute des packages dont j'ai besoin pour la suite de mon document et bien là ça ne marche plus. J'ai encore essayé de trouver la solution seul mais en vain. D'avance merci.
    Premier code:
    \documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{fourier} % package police d'écriture
    \usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,a4paper]{geometry} % package pour les marges
    \usepackage{tikz}
    \usetikzlibrary{calc}
    
    \pgfdeclarelayer{background}
    \pgfsetlayers{background,main}
    
    \definecolor{azzul}{RGB}{6,96,167}
    
    \newcounter{methode}[section]
    
    \newcommand{\meth}[3][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-4mm]{%
    \begin{center}
    \par\bigskip%
    \begin{tikzpicture}
    % Grand rectangle
    \node[rounded corners, text width=#1, align=justify, inner sep=8pt,
          outer sep=0] (one) {\medskip\parbox[t]{\textwidth}{%
                                         \vspace*{22pt}\par#3}};
    % Méthode (invisible)
    \node[text=black,anchor=north west,align=center, minimum height=20pt,
          inner xsep=15pt] (two) at (one.north west) {\hspace*{.5mm} \textbf{Méthode}};
    % Remplissage bleu supérieur qui recouvre « Méthode »
    \path[fill=azzul,draw=azzul]
        ($(one.north east)+(0ex,-4.5pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22pt,-4.5pt)$) --
        ($(two.south east)+(4pt,0pt)$) [sharp corners] --
        (two.south west) [rounded corners] --
        (one.north west) --
        (one.north east) [sharp corners] -- cycle;
    % Titre
    \node[text=black,anchor=north east,align=center, minimum height=20pt,
          text height=2ex,inner sep=8pt, inner ysep=3pt] (three)
          at ($(one.north east)+(0,-3pt)$) {\textbf{#2}};
    % Méthode (visible)
    \refstepcounter{methode}
    \node[text=white,anchor=north west,align=center, minimum height=20pt,
          inner sep=8pt,inner ysep=6.5pt] (for)
          at($(one.north west)+(0,1.5pt)$) {\textbf{Méthode~\thesection.\themethode}};
    % Cadre extérieur
    \path[draw=azzul,line width=0.8pt]
        (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    % Liseré sous le truc bleu
    \foreach \x in {10,20,...,100}
    \path[opacity=\x*0.01]
        ($(one.north east)+(-0.4pt,-6.5pt+\x/100)$) [rounded corners=3pt,draw=gray!\x] --
        ($(two.north east)+(23.3pt-\x/100,-6.5pt+\x/100)$) [rounded corners=3.5pt,draw=gray!\x] --
        ($(two.south east)+(5.3pt-\x/100,-1.9pt+\x/100)$) --
        ($(two.south west)+(0.4pt,-1.9pt+\x/100)$);
    \path[draw=white,line width=1.1pt]
        ($(one.north east)+(-0.4pt,-5.2pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22.3pt,-5.2pt)$) [rounded corners=3.5pt] --
        ($(two.south east)+(+4.3pt,-0.6pt)$) --
        ($(two.south west)+(+0.4pt,-0.6pt)$);
    % Dégradé formant l'essentiel du contenu de la boîte
    \begin{pgfonlayer}{background}
    \path[fill=azzul!5]
       (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    \path[opacity=0.5, top color=azzul!5,bottom color=azzul,middle color=azzul!30]
        (one.south west) [rounded corners] --
        (one.south east) [sharp corners] --
        ($(one.south east)+(0ex,0.8cm)$) --
        ($(one.south west)+(0ex,0.8cm)$) [rounded corners] -- cycle;
    \end{pgfonlayer}
    \end{tikzpicture}
    \end{center}
    }
    
    \begin{document}
    
    \section{Test}
    
    \meth{Comment calculer l'inverse d'une matrice ?}
    {Essai}
    
    
    
    \section{Test}
    
    
    \end{document}
    
    
    Second code:
    \documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[explicit]{titlesec}
    \usepackage{amsthm}
    \usepackage{amssymb}
    \usepackage[T1]{fontenc} % package accents
    \usepackage{fourier} % package police d'écriture
    \usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,a4paper]{geometry} % package pour les marges
    \usepackage[francais]{babel} % package français
    \usepackage{pgf,tikz} % figure geogebra
    \usepackage{tabularx} %tableau
    \usepackage{multicol}
    \usepackage[framemethod=tikz]{mdframed} % package mise en page définition, théorème, propriété et exemple
    \usepackage[most]{tcolorbox} % package pour la couleur définition, théorème, propriété et exemple
    \usepackage{fancyhdr} % package entête et pied de page
    \usepackage{titletoc} % package mise en page table des matières
    \usepackage{variations} % package pour les tableaux de variations
    \usepackage{tikz,tkz-tab} % package figure, tableaux de signes et de variations
    \usetikzlibrary{arrows} % figure geogebra
    \usetikzlibrary{3d,calc}
    \usepackage{graphicx} % package gestion des images
    
    \pgfdeclarelayer{background}
    \pgfsetlayers{background,main}
    
    \definecolor{azzul}{RGB}{6,96,167}
    
    \newcounter{methode}[section]
    
    \newcommand{\meth}[3][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-4mm]{%
    \begin{center}
    \par\bigskip%
    \begin{tikzpicture}
    % Grand rectangle
    \node[rounded corners, text width=#1, align=justify, inner sep=8pt,
          outer sep=0] (one) {\medskip\parbox[t]{\textwidth}{%
                                         \vspace*{22pt}\par#3}};
    % Méthode (invisible)
    \node[text=black,anchor=north west,align=center, minimum height=20pt,
          inner xsep=15pt] (two) at (one.north west) {\hspace*{.5mm} \textbf{Méthode}};
    % Remplissage bleu supérieur qui recouvre « Méthode »
    \path[fill=azzul,draw=azzul]
        ($(one.north east)+(0ex,-4.5pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22pt,-4.5pt)$) --
        ($(two.south east)+(4pt,0pt)$) [sharp corners] --
        (two.south west) [rounded corners] --
        (one.north west) --
        (one.north east) [sharp corners] -- cycle;
    % Titre
    \node[text=black,anchor=north east,align=center, minimum height=20pt,
          text height=2ex,inner sep=8pt, inner ysep=3pt] (three)
          at ($(one.north east)+(0,-3pt)$) {\textbf{#2}};
    % Méthode (visible)
    \refstepcounter{methode}
    \node[text=white,anchor=north west,align=center, minimum height=20pt,
          inner sep=8pt,inner ysep=6.5pt] (for)
          at($(one.north west)+(0,1.5pt)$) {\textbf{Méthode~\thesection.\themethode}};
    % Cadre extérieur
    \path[draw=azzul,line width=0.8pt]
        (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    % Liseré sous le truc bleu
    \foreach \x in {10,20,...,100}
    \path[opacity=\x*0.01]
        ($(one.north east)+(-0.4pt,-6.5pt+\x/100)$) [rounded corners=3pt,draw=gray!\x] --
        ($(two.north east)+(23.3pt-\x/100,-6.5pt+\x/100)$) [rounded corners=3.5pt,draw=gray!\x] --
        ($(two.south east)+(5.3pt-\x/100,-1.9pt+\x/100)$) --
        ($(two.south west)+(0.4pt,-1.9pt+\x/100)$);
    \path[draw=white,line width=1.1pt]
        ($(one.north east)+(-0.4pt,-5.2pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22.3pt,-5.2pt)$) [rounded corners=3.5pt] --
        ($(two.south east)+(+4.3pt,-0.6pt)$) --
        ($(two.south west)+(+0.4pt,-0.6pt)$);
    % Dégradé formant l'essentiel du contenu de la boîte
    \begin{pgfonlayer}{background}
    \path[fill=azzul!5]
       (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    \path[opacity=0.5, top color=azzul!5,bottom color=azzul,middle color=azzul!30]
        (one.south west) [rounded corners] --
        (one.south east) [sharp corners] --
        ($(one.south east)+(0ex,0.8cm)$) --
        ($(one.south west)+(0ex,0.8cm)$) [rounded corners] -- cycle;
    \end{pgfonlayer}
    \end{tikzpicture}
    \end{center}
    }
    
    \begin{document}
    
    \section{Test}
    
    \meth{Comment calculer l'inverse d'une matrice ?}
    {Essai}
    
    
    
    \section{Test}
    
    
    \end{document}
    
  • Tu as un exemple qui marche et un assez proche qui ne marche pas. C'est la situation rêvée pour utiliser la méthode de dichotomie, pourquoi faut-il que ce soit quelqu'un d'autre qui le fasse pour toi ? Il suffit de modifier l'exemple qui marche ligne après ligne jusqu'à trouver ce qui pose problème, ce n'est pas compliqué.

    En l'occurrence, c'est l'usage de babel-french qui déclenche l'erreur ici. Il rend le point-virgule actif, ce qui fait que \foreach ne voit pas la fin de la boucle, semble-t-il. Pour corriger ça, je propose :
    • de mettre des accolades autour de l'instruction concernée par la boucle (rien que ceci permet d'éviter l'erreur) ;
    • d'utiliser la bibliothèque babel de TikZ (cela corrige le problème d'une autre manière).
    Si le \usetikzlibrary{babel} ne marche pas chez toi, c'est que ta distribution TeX (en particulier TikZ) est trop vieille. La première correction devrait suffire, mais quand ta distribution sera à jour, il vaudra mieux appliquer la deuxième aussi. Par ailleurs, j'ai un peu modifié l'ordre de chargement des packages (voir sur TeX.SE ; on peut aussi passer l'option 'french' à \documentclass) :
    \documentclass[a4paper,11pt]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[french]{babel}
    \usepackage{fourier} % package police d'écriture
    \usepackage[top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm,a4paper]{geometry} % package pour les marges
    \usepackage{fancyhdr} % package entête et pied de page
    \usepackage[explicit]{titlesec}
    \usepackage{titletoc} % package mise en page table des matières
    \usepackage{amsthm}
    \usepackage{amssymb}
    \usepackage{tabularx} %tableau
    \usepackage{multicol}
    \usepackage[framemethod=tikz]{mdframed} % package mise en page définition, théorème, propriété et exemple
    \usepackage[most]{tcolorbox} % package pour la couleur définition, théorème, propriété et exemple
    \usepackage{variations} % package pour les tableaux de variations
    \usepackage{tikz,tkz-tab} % package figure, tableaux de signes et de variations
    \usetikzlibrary{arrows} % figure geogebra
    \usetikzlibrary{3d,babel,calc}
    \usepackage{graphicx} % package gestion des images
    
    \pgfdeclarelayer{background}
    \pgfsetlayers{background,main}
    
    \definecolor{azzul}{RGB}{6,96,167}
    
    \newcounter{methode}[section]
    
    \newcommand{\meth}[3][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-4mm]{%
    \begin{center}
    \par\bigskip%
    \begin{tikzpicture}
    % Grand rectangle
    \node[rounded corners, text width=#1, align=justify, inner sep=8pt,
          outer sep=0] (one) {\medskip\parbox[t]{\textwidth}{%
                                         \vspace*{22pt}\par#3}};
    % Méthode (invisible)
    \node[text=black,anchor=north west,align=center, minimum height=20pt,
          inner xsep=15pt] (two) at (one.north west) {\hspace*{.5mm} \textbf{Méthode}};
    % Remplissage bleu supérieur qui recouvre « Méthode »
    \path[fill=azzul,draw=azzul]
        ($(one.north east)+(0ex,-4.5pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22pt,-4.5pt)$) --
        ($(two.south east)+(4pt,0pt)$) [sharp corners] --
        (two.south west) [rounded corners] --
        (one.north west) --
        (one.north east) [sharp corners] -- cycle;
    % Titre
    \node[text=black,anchor=north east,align=center, minimum height=20pt,
          text height=2ex,inner sep=8pt, inner ysep=3pt] (three)
          at ($(one.north east)+(0,-3pt)$) {\textbf{#2}};
    % Méthode (visible)
    \refstepcounter{methode}
    \node[text=white,anchor=north west,align=center, minimum height=20pt,
          inner sep=8pt,inner ysep=6.5pt] (for)
          at($(one.north west)+(0,1.5pt)$) {\textbf{Méthode~\thesection.\themethode}};
    % Cadre extérieur
    \path[draw=azzul,line width=0.8pt]
        (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    % Liseré sous le truc bleu
    \foreach \x in {10,20,...,100} {
    \path[opacity=\x*0.01]
        ($(one.north east)+(-0.4pt,-6.5pt+\x/100)$) [rounded corners=3pt,draw=gray!\x] --
        ($(two.north east)+(23.3pt-\x/100,-6.5pt+\x/100)$) [rounded corners=3.5pt,draw=gray!\x] --
        ($(two.south east)+(5.3pt-\x/100,-1.9pt+\x/100)$) --
        ($(two.south west)+(0.4pt,-1.9pt+\x/100)$);
    \path[draw=white,line width=1.1pt]
        ($(one.north east)+(-0.4pt,-5.2pt)$) [rounded corners=3pt] --
        ($(two.north east)+(+22.3pt,-5.2pt)$) [rounded corners=3.5pt] --
        ($(two.south east)+(+4.3pt,-0.6pt)$) --
        ($(two.south west)+(+0.4pt,-0.6pt)$);
    }
    % Dégradé formant l'essentiel du contenu de la boîte
    \begin{pgfonlayer}{background}
    \path[fill=azzul!5]
       (one.south west) [rounded corners] --
        (one.south east) [rounded corners] --
        (one.north east) --
        (one.north west) [rounded corners] -- cycle;
    \path[opacity=0.5, top color=azzul!5,bottom color=azzul,middle color=azzul!30]
        (one.south west) [rounded corners] --
        (one.south east) [sharp corners] --
        ($(one.south east)+(0ex,0.8cm)$) --
        ($(one.south west)+(0ex,0.8cm)$) [rounded corners] -- cycle;
    \end{pgfonlayer}
    \end{tikzpicture}
    \end{center}
    }
    
    \begin{document}
    
    \section{Test}
    
    \meth{Comment calculer l'inverse d'une matrice ?}{Essai}
    
    \end{document}
    

    Si tu ne comptes jamais mettre de saut de paragraphe dans les arguments de \meth (via \par, ou bien une ou des lignes blanches), il vaut mieux la définir avec \newcommand* ; ainsi, la détection d'accolade fermante oubliée pour un des arguments peut s'enclencher plus tôt, ce qui facilite l'interprétation du message d'erreur le cas échéant.
  • Mille mercis. En plus de m'apporter la solution, ton message est très pédagogique. En revanche, je n'ai pas compris le dernier paragraphe sur le saut de paragraphe.
  • Une commande définie avec \newcommand* n'accepte pas d'argument contenant le token \par (token = lexème) — et sauf circonstances exceptionnelles, une ligne blanche dans un fichier TeX donne lieu à un token \par. On peut voir cela comme une limitation par rapport à \newcommand, mais si par nature, une commande n'a pas d'utilité particulière avec des arguments contenant \par (ce qui est très, très souvent le cas), il vaut mieux la définir avec \newcommand*. Ainsi, lorsque TeX développe le token \macommande dans le contexte suivant :
    \macommande{pouet}{c'est cool,
      vraiment,
      vraiment,
      oh oui...}{et puis là, soudain...
    
    La suite du fichier...
    
    TeX va signaler que l'argument commençant par « et puis là, soudain... » n'est pas terminé, parce que le token \par qui suit (après interprétation des deux retours chariot successifs) est interdit ici lorsque \macommande a été définie avec \newcommand*. Cela va se présenter ainsi :
    Runaway argument?
    {et puis là, soudain... 
    ./fichier.tex: Paragraph ended before \macommande was complete.
    <to be read again> 
                       \par
    
    Alors que si \macommande a été définie avec \newcommand, le \par et « La suite du fichier... » font partie de l'argument commencé avec « et puis là, soudain... », donc l'interprétation de la situation par TeX différant nettement de ce qu'attendait a priori l'individu situé entre la chaise et le clavier, il risque d'y avoir des erreurs en cascade. La première erreur sera forcément signalée plus tard, lorsqu'un autre problème sera trouvé, et elle risque d'être plus difficile à interpréter que l'erreur « racine ».

    Noter qu'\endgraf passe toujours (même là où \par est interdit) et qu'avec xparse, il y a plus de granularité : c'est pour chaque argument individuellement d'une commande donnée que l'on peut décider s'il a le droit de contenir des tokens \par ou non.
  • J’ai encore une question. Comment faire pour régler les marges à gauche et à droite du texte qui sera à l'intérieur du cadre à la place du mot essai.
    D’avance merci
  • Le texte en question est composé dans une \parbox. Il suffit donc de la décaler vers la gauche ou la droite avec par exemple \hspace*, et d'ajuster la largeur de cette \parbox. Par exemple, si l'on veut rogner 1cm à gauche et 1cm à droite, ajouter \usepackage{calc} et en-dessous de mon commentaire « Grand rectangle », remplacer les lignes ressemblantes par :
    \node[draw,rounded corners, text width=#1, align=justify, inner sep=8pt,
          outer sep=0] (one) {\medskip
                              \hspace*{1cm}%
                              \parbox[t]{\textwidth-2cm}{\vspace*{22pt}#3}};
    
    (on peut remplacer \textwidth par \linewidth... selon le comportement désiré dans un environnement comme 'multicols').
  • Encore merci. Ça marche nickel.
Connectez-vous ou Inscrivez-vous pour répondre.