With xelatex or lualatex you could color the font instead of using the color commands. This would survive a box break:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\usepackage{blindtext}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\begin{document}
\begin{tcolorbox}[breakable]
\blindtext[3]
\addfontfeatures{Color=blue}
\blindtext[3]
\addfontfeatures{Color=red}
\blindtext
\addfontfeatures{Color=brown}
\blindtext
\end{tcolorbox}
\end{document}
I don't know about mathescape
, but presumably you don't want/need to enter math mode anyway, since you just want to make a box.
So use escapechar=<char>
instead. I've turned your code snippets into an MWE to more clearly show the solution, but the same escapechar=|
(or some other character not used anywhere in the listing) is equally valid inside listing options
in your environment's definition.
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\begin{document}
\begin{tcblisting}{listing only,listing options={basicstyle=\ttfamily,escapechar=|}}
Now is the |\fbox{winter}| of our discontent
Made glorious summer by this sun of York;
\end{tcblisting}
\end{document}
Here's the full code made into a compilable example:
\documentclass[11pt]{article}
\usepackage[pdftex]{xcolor}
\definecolor{vlgray}{gray}{0.9}
\definecolor{lgray}{gray}{0.7}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,listings}
\newenvironment{shk}{%
\tcblisting{listing only,colback=vlgray,colframe=vlgray,enlarge
top by=0mm,top=-2mm,bottom=2mm,enhanced,
after={\par\vspace{0.5\baselineskip}\noindent},
overlay={\node[draw,fill= black,yshift=4pt,xshift=-10pt,left,text=white,
anchor=east,font=\footnotesize\bfseries] at (frame.south east)
{Shakespeare};},
listing options={basicstyle=\small\ttfamily,breaklines=true,
language=HTML,escapechar=|},}}
{\endtcblisting}
\begin{document}
\begin{shk}
Now is the |\fbox{winter}| of our discontent
Made glorious summer by this sun of York;
\end{shk}
\end{document}
Best Answer
As an alternative to my comment, it's also possible to use
attach title to upper
which includes the title in upper part. In this case, the font and color can be selected withfonttitle
orcoltitle
options.