
Ich versuche, die Anzeige eines Zeilenumbruchs innerhalb einer Listenumgebung zu korrigieren, genauer gesagt in einem Teil der Liste, der sich innerhalb eines Escape-Bereichs befindet:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[usenames,dvipsnames,table]{xcolor}
\usepackage{listings}
\lstset{}
\definecolor{keywordColor}{HTML}{0033B3}
\definecolor{parameterColor}{HTML}{067D17}
\definecolor{commentColor}{HTML}{8C8C8C}
\definecolor{scenarioColor}{HTML}{871094}
\newcommand{\lstKeyword}[1]{{\textcolor{keywordColor}{#1}}}
\newcommand{\lstParameter}[1]{{\textcolor{parameterColor}{#1}}}
\newcommand{\lstScenario}[1]{{\textcolor{scenarioColor}{\textit{#1}}}}
\lstdefinestyle{bddStory}
{
frame=single,
captionpos=b,
commentstyle=\color{commentColor},
keywordstyle=\color{keywordColor},
morekeywords={Given ,When ,Then ,And ,Narrative,Examples},
escapeinside={<@}{@>},
showspaces=false,
showtabs=false,
showstringspaces=false,
breaklines=true,
postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space},
breakatwhitespace=true
}
\title{Example Issue}
\begin{document}
\begin{lstlisting}[style=bddStory]
<@\lstScenario{Scenario: A scenario title is too long and can't fit into a single line which causes issues in the highlighting}@>
Given there is some further content
\end{lstlisting}
\end{document}
Der Inhalt wird wie folgt wiedergegeben – das Problem sind die beiden Umbrüche in der Box und der fehlende Pfeil in der neuen Zeile:
Antwort1
Diese segmentierte Box ist ein bekannter Fehler im listings
Paket. Sie können tcolorbox
den Patch von verwenden listings
, um ihn zu beheben. Beachten Sie, dass die Art und Weise, wie Argumente an das Paket übergeben werden, listings
unterschiedlich ist.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[usenames,dvipsnames,table]{xcolor}
\usepackage{tcolorbox}
\tcbuselibrary{skins, breakable, listings}
\definecolor{keywordColor}{HTML}{0033B3}
\definecolor{parameterColor}{HTML}{067D17}
\definecolor{commentColor}{HTML}{8C8C8C}
\definecolor{scenarioColor}{HTML}{871094}
\newcommand{\lstKeyword}[1]{{\textcolor{keywordColor}{#1}}}
\newcommand{\lstParameter}[1]{{\textcolor{parameterColor}{#1}}}
\newcommand{\lstScenario}[1]{{\textcolor{scenarioColor}{\textit{#1}}}}
\lstdefinestyle{bddStory}
{
captionpos=b,
commentstyle=\color{commentColor},
keywordstyle=\color{keywordColor},
morekeywords={Given ,When ,Then ,And ,Narrative,Examples},
escapeinside={<@}{@>},
showspaces=false,
showtabs=false,
showstringspaces=false,
breaklines=true,
postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space},
breakatwhitespace=true
}
\title{Example Issue}
\newtcblisting{mylisting}[1]{
enhanced,
breakable,
listing only,
boxrule=0.8pt,
sharp corners,
top=0mm,
bottom=0mm,
left=2mm,
right=2mm,
boxsep=0mm,
colframe=black,
colback=white,
listing options={
style=#1
}
}
\begin{document}
\begin{mylisting}{bddStory}
<@\lstScenario{Scenario: A scenario title is too long and can't fit into a single line which causes issues in the highlighting}@>
Given there is some further content
\end{mylisting}
\end{document}
Was den fehlenden Pfeil betrifft, denke ich, listings
dass das Paket nicht versucht, postbreak
Inhalte zum Escape-Bereich hinzuzufügen. Siehe das folgende Beispiel:
Wenn duWirklichdiese Funktion implementieren möchte, finde ich diese beiden Beiträge: