Lorsque je souhaite faire référence à un théorème créé avec tcolorbox, j'obtiens quasi-systématiquement (mais pas toujours !) une erreur de numérotation avec la commande \ref{}, et systématiquement une erreur de compilation avec la commande \cref{} (bien que le package \cleveref soit correctement chargé).

Voici un exemple minimal (sur cet exemple, deux références sont correctes sur les cinq...) :

 \documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz-cd}
\usepackage{babel}

\usepackage{awesomebox}

\tikzcdset{arrow style=Latin Modern}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}

\newtcbtheorem[number within=section]{mytheo}{Théorème}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{mycoro}{Corollaire}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{mydefi}{Définition}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{myexple}{Exemple}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{myprop}{Proposition}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{th}

\begin{document}
\section{Préliminaires}

\begin{mydefi}{}{}\label{def:voisinage}
Une définition
\end{mydefi}{}{}

\begin{myexple}{}{}\label{exple:voisinage}
    Un exemple
\end{myexple}

L'exemple~\ref{exple:voisinage} était très instructif !

\section{Notation petit o}

\subsection{Définition}

On fait référence à la définition~\ref{def:voisinage}.

\begin{mydefi}{}{}\label{def:petit_o}
Définition
\end{mydefi}

\subsection{Critères}

On fait référence à la définition~\ref{def:petit_o}

\begin{myprop}{}{}\label{prop:critere_neglig_non_nul}
    Une Proposition
\end{myprop}{}{}

\begin{myprop}{}{}\label{prop:critere_neglig_nul}
    Encore une Proposition
\end{myprop}{}{}

\section{Equivalents}

 \subsection{Une autre sous-section}

On fait référence aux Propositions~\ref{prop:critere_neglig_non_nul}~et~\ref{prop:critere_neglig_nul}~:

\end{document}

Posée 22 Sep, 23:39

endomorphisme's gravatar image

endomorphisme
333117
Taux d'acceptation : 0%

Modifiée 22 Sep, 23:55


Pluseurs choses n'allaient pas dans votre code :

  1. Le préfixe (4e argument obligatoire de \newtcbtheorem) ne doit a priori pas être le même pour tous les environnement de théorèmes (ils sont censés permettre d'identifier que ce à quoi il est fait référence, est un théorème, une définition, un corollaire, etc.)
  2. Les labels des « théorèmes » ne doivent pas être spécifiés au moyen de \label, mais en 3e argument obligatoire des environnements de ces « théorèmes » ; ces labels doivent en outre ne pas comporter les préfixes.
  3. Pour faire référence à ces « théorèmes », les labels en argument de \ref (ou \cref, etc.) doivent être précédés du préfixe choisi pour le « théorème » en question puis de, par défaut, :.

Voici un code corrigé (notez que l'option francais de babel est à proscrire au profit de french, à passer de préférence en option de \documentclass et que babel est, sauf exceptions — dont hyperref puis cleveref —, à charger en dernier).

\documentclass[a4paper,french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz-cd}
\usepackage{awesomebox}
\usepackage{babel}

\tikzcdset{arrow style=Latin Modern}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}

\newtcbtheorem[number within=section]{mytheo}{Théorème}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{mycoro}{Corollaire}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{cor}

\newtcbtheorem[use counter from=mytheo]{mydefi}{Définition}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{def}

\newtcbtheorem[use counter from=mytheo]{myexple}{Exemple}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{exple}

\newtcbtheorem[use counter from=mytheo]{myprop}{Proposition}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{prop}

\begin{document}
\section{Préliminaires}

\begin{mydefi}{}{voisinage1}
Une définition
\end{mydefi}{}{}

\begin{myexple}{}{voisinage2}
    Un exemple
\end{myexple}

L'exemple~\ref{exple:voisinage2} était très instructif !

\section{Notation petit o}

\subsection{Définition}

On fait référence à la définition~\ref{def:voisinage1}.

\begin{mydefi}{}{petit_o}
Définition
\end{mydefi}

\subsection{Critères}

On fait référence à la définition~\ref{def:petit_o}

\begin{myprop}{}{critere_neglig_non_nul}
    Une Proposition
\end{myprop}{}{}

\begin{myprop}{}{critere_neglig_nul}
    Encore une Proposition
\end{myprop}{}{}

\section{Equivalents}

 \subsection{Une autre sous-section}

On fait référence aux Propositions~\ref{prop:critere_neglig_non_nul}~et~\ref{prop:critere_neglig_nul}~:

\end{document}
Lien permanent

Publiée 23 Sep, 11:05

denis's gravatar image

denis ♦♦
7.2k1510
Taux d'acceptation : 53%

Peut-être comme ça : dans le 4e paramètre de \newtcbtheorem le préfixe pour la référence et dans le 3e paramètre de l'appel au théorème le nom du théorème...

 \documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz-cd}
\usepackage{babel}

\usepackage{awesomebox}

\tikzcdset{arrow style=Latin Modern}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}

\newtcbtheorem[number within=section]{mytheo}{Théorème}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{th}

\newtcbtheorem[use counter from=mytheo]{mycoro}{Corollaire}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{cor}

\newtcbtheorem[use counter from=mytheo]{mydefi}{Définition}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{def}

\newtcbtheorem[use counter from=mytheo]{myexple}{Exemple}%
{colback=blue!5,colframe=blue!35!black,fonttitle=\bfseries}{exple}

\newtcbtheorem[use counter from=mytheo]{myprop}{Proposition}%
{colback=red!5,colframe=red!35!black,fonttitle=\bfseries}{prop}

\begin{document}
\section{Préliminaires}

\begin{mydefi}{}{voisinage}
Une définition
\end{mydefi}

\begin{myexple}{}{voisinage}
    Un exemple
\end{myexple}

L'exemple~\ref{exple:voisinage} était très instructif !

\section{Notation petit o}

\subsection{Définition}

On fait référence à la définition~\ref{def:voisinage}.

\begin{mydefi}{}{petit_o}
Définition
\end{mydefi}

\subsection{Critères}

On fait référence à la définition~\ref{def:petit_o}

\begin{myprop}{}{critere_neglig_non_nul}
    Une Proposition
\end{myprop}

\begin{myprop}{}{critere_neglig_nul}
    Encore une Proposition
\end{myprop}

\section{Equivalents}

 \subsection{Une autre sous-section}

On fait référence aux Propositions~\ref{prop:critere_neglig_non_nul}~et~\ref{prop:critere_neglig_nul}~:

\end{document}
Lien permanent

Publiée 23 Sep, 10:45

logamath's gravatar image

logamath
45316
Taux d'acceptation : 36%

Votre réponse
(dés)activer 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

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.