Problema con tcblisting en salto de página

Problema con tcblisting en salto de página

Utilizo un tcolorbox para mostrar mis listados y eso realmente funciona bastante bien. Pero si en mi listado se produce un salto de página, entonces se eliminará mi propiedad predefinida "estilo básico". Y no tengo idea de por qué. ¿Quizás alguien tenga una idea?

Este es mi código:

\begin{tcblisting}{
skin=enhanced,
colback=CSbackground,
boxrule=0pt,
arc=0pt,
outer arc=0pt,
top=-14.8pt,
bottom=-14.8pt,
colframe=red,
listing only,
left=-2.5pt,
right=-8pt,
overlay={\fill[CSnumberbg] ([xshift=-10pt]frame.south west) rectangle ([xshift=0pt]frame.north west);
                \fill[CSnumberline] ([xshift=-10pt]frame.south west) rectangle ([xshift=-9pt]frame.north west);},
listing style=CSharp,
breakable,
bottomsep at break=14.8pt,
topsep at break=14.8pt
}
string s = "this is a string"
%many repetitions
string s = "this is a string"
\end{tcblisting}

Y el resultado: ingrese la descripción de la imagen aquí aquí hay un salto de página. ingrese la descripción de la imagen aquí

Actualizar:

La respuesta de Thomas fue la solución. Gracias por eso. Sin embargo, aquí hay un ejemplo más completo, con la solución de Thomas. Si a alguien le interesa.

\usepackage{listings}
\usepackage[most]{tcolorbox}

\definecolor{CSbackground}{RGB}{30, 30, 30}
\definecolor{CSkeywords}{RGB}{86, 156, 214}
\definecolor{CSstrings}{RGB}{214, 157, 133}
\definecolor{CScomments}{RGB}{96, 139, 78}
\definecolor{CSemph}{RGB}{78, 201, 176}
\definecolor{CSnumberbg}{RGB}{241, 241, 241}
\definecolor{CSnumberline}{RGB}{38, 169, 202}

\lstdefinestyle{CSharp}{
    backgroundcolor=\color{CSbackground},
    language=[Sharp]C,
    frame=l,
    framesep=5pt,
    basicstyle=\footnotesize\ttfamily\color{White},
    showstringspaces=false,
    keywordstyle=\color{CSkeywords}\bfseries,
    identifierstyle=\ttfamily,
    stringstyle=\color{CSstrings},
    commentstyle=\color{CScomments},
    rulecolor=\color{CSbackground},
    emph={GZipStream,StreamWriter,WebClient,additionalClasses},
    emphstyle=\ttfamily\color{CSemph},
    xleftmargin=5pt,
    xrightmargin=5pt,
    aboveskip=\bigskipamount,
    belowskip=\bigskipamount,
    showspaces=false,
    showtabs=false,
    breaklines=true,
    breakatwhitespace=false,
    escapeinside={(*@}{@*)},
    numbers=left,
    numbersep=1.1em,
    stepnumber=1,
    numberstyle=\tiny\color{Gray}
}


\begin{tcblisting}{
    skin=enhanced,
    colback=CSbackground,
    boxrule=0pt,
    arc=0pt,
    outer arc=0pt,
    top=-14.8pt,
    bottom=-14.8pt,
    colframe=red,
    listing only,
    left=-2.5pt,
    right=-8pt,
    overlay={\fill[CSnumberbg] ([xshift=-10pt]frame.south west) rectangle ([xshift=0pt]frame.north west);
                    \fill[CSnumberline] ([xshift=-10pt]frame.south west) rectangle ([xshift=-9pt]frame.north west);},
    listing style=CSharp,
    breakable,
    bottomsep at break=14.8pt,
    topsep at break=14.8pt,
    colupper=white
    }
    string s = "this is a string"
    %many repetitions
    string s = "this is a string"
\end{tcblisting}

Respuesta1

CSharpDado que el código proporcionado no es compilable y, especialmente , falta información sobre el estilo utilizado , no puedo probar el problema. Pero tengo una suposición sobre la causa del problema y por eso trato de dar unamejor conjeturarespuesta.

Cuando tcolorboxse encuentra un salto de página, los colores de la siguiente parte del cuadro se restauran a sus valores de configuración. La razón de este comportamiento es que (La)TeX no puede realizar un seguimiento de la información de color durante un \vsplitproceso que funciona bajo el capó.

El color de texto predeterminado es negro. Supongo que su CSharpestilo establece el color del texto actual en blanco, que se reemplaza por el color negro predeterminado después de la pausa. La solución para esto es cambiar el color de texto predeterminado del archivo tcolorbox. Intente agregar lo siguiente a su lista de opciones:

%...
colupper=white,
%...

Miadivinares que esto funciona.

información relacionada