I'm creating a box for theorems, I need to calculate the length of the title to cut the top of the frame in order to not cover my title. The code works but if I replace #3 \arabic{#1}##1 by \textbf{\textsc{#3} \arabic{#1}##1} the width is not correct and my title is covered. How can I measure the correct width of the text when it's in textbf or textsc ?
MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\usepackage[T1]{fontenc}
\usepackage{afterpage}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc}
\definecolor{rednew}{RGB}{178,27,15}
\begin{document}
\newcommand{\definebox}[4]{
\ifstrequal{#4}{o}{
\newcounter{#1}
\newenvironment{#1}[1][]{
\refstepcounter{#1}
\begin{tcolorbox}[enhanced,opacityback=0,attach boxed title to top left={yshift=-\tcboxedtitleheight/2,xshift=4mm},center title,opacityframe=0,before skip=0.5cm,left skip=0.16cm,left=0.2cm,right=0cm,top=0.2cm,bottom=0cm,breakable,boxed title style={opacityback=0,opacityframe=0,colframe=white,size=fbox,arc=0mm},overlay unbroken and first={\pgfmathsetmacro{\textPosX}{width("#3 \arabic{#1}##1")1pt/1cm}
\node[anchor=west] at ($(interior.north west)+(0.345,0.05)$){#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)+(\textPosX,0)+(0.215,0)$);},overlay middle and last={\draw[very thick](frame.north west)--(frame.south west);},after={\vspace{1ex} \noindent}]}
{\end{tcolorbox}}}
{\newenvironment{#1}[1][]{
\begin{tcolorbox}[enhanced,opacityback=0,attach boxed title to top left={yshift=-\tcboxedtitleheight/2,xshift=4mm},center title,opacityframe=0,before skip=0.5cm,left skip=0.16cm,left=0.2cm,right=0cm,top=0.2cm,bottom=0cm,breakable,boxed title style={opacityback=0,opacityframe=0,colframe=white,size=fbox,arc=0mm},overlay unbroken and first={\pgfmathsetmacro{\textPosX}{width("#3##1")1pt/1cm}
\node[anchor=west] 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)+(\textPosX,0)+(0.215,0)$);},overlay middle and last={\draw[very thick](frame.north west)--(frame.south west);},after={\vspace{1ex} \noindent}]}
{\end{tcolorbox}}}
}
\definebox{theoremtest}{red}{Theorem name}{o}
\begin{theoremtest}
test
\end{theoremtest}
\end{document}
I edited the answer.
– pascal974 May 17 '22 at 07:10