Problem mit TCBLISTING beim Seitenumbruch

Problem mit TCBLISTING beim Seitenumbruch

Ich verwende eine Tcolorbox zur Anzeige meiner Listings und das funktioniert eigentlich ganz gut. Wenn in meinem Listing aber ein Seitenumbruch auftritt, dann wird meine vordefinierte Eigenschaft „Basicstyle“ entfernt. Und ich habe keine Ahnung, warum. Vielleicht hat jemand eine Idee?

Dies ist mein Code:

\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}

Und das Ergebnis: Bildbeschreibung hier eingeben Hier ist ein Seitenumbruch. Bildbeschreibung hier eingeben

Aktualisieren:

Die Antwort von Thomas war die Lösung. Vielen Dank dafür. Trotzdem hier noch ein ausführlicheres Beispiel, mit dem Fix von Thomas. Falls jemand Interesse hat.

\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}

Antwort1

Da der angegebene Code nicht kompilierbar ist und insbesondere die Informationen über die verwendetenCSharp Stil fehlen, kann ich das Problem nicht testen. Ich habe jedoch eine Vermutung über die Ursache des Problems und versuche daher, einebeste AnnahmeAntwort.

Wenn tcolorboxein Seitenumbruch auftritt, werden die Farben des folgenden Boxteils auf ihre eingestellten Werte zurückgesetzt. Der Grund für dieses Verhalten ist, dass (La)TeX die Farbinformationen während eines \vsplitim Hintergrund laufenden Vorgangs nicht verfolgen kann.

Die Standardtextfarbe ist schwarz. Ich vermute, dass Ihr CSharpStil die aktuelle Textfarbe auf Weiß setzt, das nach dem Umbruch durch die Standardfarbe Schwarz ersetzt wird. Die Lösung hierfür besteht darin, die Standardtextfarbe des zu ändern tcolorbox. Versuchen Sie, Folgendes zu Ihrer Optionsliste hinzuzufügen:

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

Meinerratenist, dass dies den Zweck erfüllt.

verwandte Informationen