I use tikz
and tcolorbox
to create boxes for theorems. I calculate the length of the title in order to cut the frame. Everything works until the counter gets to 10 or 100, the calculation of the length gets wrong or something else and here is the results :
At first we could think it has to appear when the counter gets to 10,20,30... etc. but it only does this for 10 and 100. It might also appear for 1000.
MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[most]{tcolorbox}
\usepackage{bbm}
\usetikzlibrary{calc}
\newlength{\longueur}
\definecolor{vert}{RGB}{51,92,41}
\definecolor{bleu}{RGB}{64,106,152}
\definecolor{rouge}{RGB}{178,27,15}
\newcommand{\definebox}[4]{
\ifstrequal{#4}{o}{
\newcounter{#1}
\newenvironment{#1}[1][]{
\settowidth{\longueur}{\textbf{\textsc{#3} \arabic{#1}##1}}
\pgfmathsetmacro{\len}{\the\longueur*1pt/1cm}
\refstepcounter{#1}
\begin{tcolorbox}[enhanced,opacityback=0,opacityframe=0,before skip=0.5cm,left=2.5mm,right=2.5mm,top=3mm,bottom=0.5mm,breakable,overlay unbroken={
\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \arabic{#1}##1}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay first={\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \arabic{#1}##1}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay middle={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},overlay last={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},after={\vspace{0.2ex} \noindent}]}
{\end{tcolorbox}}}
{\newenvironment{#1}[1][]{
\settowidth{\longueur}{\textbf{\textsc{#3}##1}}
\pgfmathsetmacro{\len}{\the\longueur*1pt/1cm}
\begin{tcolorbox}[enhanced,opacityback=0,opacityframe=0,before skip=0.5cm,left=2.5mm,right=2.5mm,top=3mm,bottom=0.5mm,breakable,overlay unbroken={
\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3}##1}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay first={\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3}##1}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay middle={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},overlay last={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},after={\vspace{0.2ex} \noindent}]}
{\end{tcolorbox}}}
}
\definebox{bv}{vert}{Définition}{o}
\definebox{bb}{bleu}{Proposition}{o}
\definebox{br}{rouge}{Théorème}{o}
\begin{document}
\begin{bb}[ -- Théorème d'inversion locale]
Si $f:U \to F$ est $C^{1}$ avec $a \in U$ tel que $df(a) \in \textrm{Isom}(E,F)$, alors il existe un voisinage ouvert $V \subset U$ de $a$ et un voisinage ouvert $W$ de $f(a)$ tel que $f_{|V}:V \to W$ est un $C^{1}$-difféomorphisme.
\end{bb}
\end{document}
new MWE for Jinwen :
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[most]{tcolorbox}
\usepackage{tipa}
\usetikzlibrary{calc}
\newlength{\longueur}
\definecolor{vert}{RGB}{51,92,41}
\definecolor{bleu}{RGB}{64,106,152}
\definecolor{rouge}{RGB}{178,27,15}
\newcommand{\definebox}[4]{
\ifstrequal{#4}{o}{
\newcounter{#1}
\newenvironment{#1}[1][]{
\refstepcounter{#1}
\def\temp{##1}
\ifx\temp\empty
\def\tempdescription{\!\!}
\else
\def\tempdescription{-- ##1}
\fi
\settowidth{\longueur}{\textbf{\textsc{#3} \arabic{#1} \tempdescription}}
\pgfmathsetmacro{\len}{\the\longueur*1pt/1cm}
\begin{tcolorbox}[enhanced,opacityback=0,opacityframe=0,before skip=0.5cm,left=2.5mm,right=2.5mm,top=3mm,bottom=0.5mm,breakable,overlay unbroken={
\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \arabic{#1} \tempdescription}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay first={\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \arabic{#1} \tempdescription}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay middle={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},overlay last={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},after={\vspace{0.2ex} \noindent}]}
{\end{tcolorbox}}}
{\newenvironment{#1}[1][]{
\settowidth{\longueur}{\textbf{\textsc{#3} \tempdescription}}
\pgfmathsetmacro{\len}{\the\longueur*1pt/1cm}
\begin{tcolorbox}[enhanced,opacityback=0,opacityframe=0,before skip=0.5cm,left=2.5mm,right=2.5mm,top=3mm,bottom=0.5mm,breakable,overlay unbroken={
\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \tempdescription}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay first={\node[anchor=west,#2] at ($(interior.north west)+(0.345,0.05)$){\textbf{\textsc{#3} \tempdescription}\vphantom{/Î)}};
\draw[very thick,#2]($(interior.north west)+(0.362,0.025)$)--($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$)--($(interior.north west)+(0.362,0.025)+(\len,0)+(0.215,0)$);},overlay middle={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$); \draw[very thick,#2]($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},overlay last={
\draw[very thick,#2]($(interior.north west)+(-0.025,0.025)$)--($(interior.south west)+(-0.025,-0.025)$)--($(interior.south east)+(+0.025,-0.025)$)--($(interior.north east)+(+0.025,+0.025)$);},after={\vspace{0.2ex} \noindent}]}
{\end{tcolorbox}}}
}
\definebox{bv}{vert}{Définition}{o}
\definebox{bb}{bleu}{Proposition}{o}
\definebox{br}{rouge}{Théorème}{o}
\begin{document}
\begin{bb}
test
\end{bb}
\end{document}