Problème avec tcolorbox et xparse

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.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 398
Inscription : jeudi 14 octobre 2010, 09:20

Problème avec tcolorbox et xparse

Message par zariski63 »

Bonsoir !
Si quelqu'un avait une idée à me proposer quant au pourquoi ma première "tcolorbox" ne fonctionne pas ?

C'est un problème d'écriture des options O entre autre mais je ne vois pas lequel ... Merci beaucoup.

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{xcolor}
\usepackage{tcolorbox}
\tcbuselibrary{xparse}

\DeclareTColorBox{mybox2}{ O{red} O{} O{} }
    {colframe  = #1!75!black,
     colback   = #1!5!white,
     fonttitle = \bfseries,
     title     = {#2},
     #3}

\begin{document}

\begin{mybox2}[][My title][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}[blue][My title][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}[green][][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}
  Ceci est une tcolorbox.
\end{mybox2}

\end{document}
touhami
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 438
Inscription : dimanche 11 février 2007, 11:45

Re: Problème avec tcolorbox et xparse

Message par touhami »

Bonjour.

L’absence de l’argument optionnel est interprété comme #1=ValeurParDéfaut, alors que [] est interprété comme #1=RIEN ce qui donne colframe = !75!black qui est clairement inacceptable. Pour résoudre le problème on fait appel à la commande \ifblank de l'extension etoolbox

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{xcolor}
\usepackage{tcolorbox}
\tcbuselibrary{xparse}
\usepackage{etoolbox}

\DeclareTColorBox{mybox2}{ O{} O{} O{} }
    {colframe  = \ifblank{#1}{red}{#1}!75!black,
     colback   = \ifblank{#1}{red}{#1}!5!white,
     fonttitle = \bfseries,
     title     = {#2},
     #3}

\begin{document}

\begin{mybox2}[][My title][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}[red][My title][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}[blue][My title][]
  Ceci est une tcolorbox.
\end{mybox2}


\begin{mybox2}[green][][]
  Ceci est une tcolorbox.
\end{mybox2}

\begin{mybox2}
  Ceci est une tcolorbox.
\end{mybox2}

\end{document}
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 398
Inscription : jeudi 14 octobre 2010, 09:20

Re: Problème avec tcolorbox et xparse

Message par zariski63 »

Pouah grand merci, sans vous je n'y arrivais pas.
Impossible de comprendre, un moment j'ai cru qu'il fallait alterner les options O et m mais cela me gênait.
Bref je ne pouvais pas le trouver seul car sur xparse rien de cela.
Heureusement qu'il existe sur ce forum des gens ultra compétents.
Encore une fois merci !!!!