Wie geht man mit sehr langen Lstinline-Phrasen wie langen Klassennamen um?

Wie geht man mit sehr langen Lstinline-Phrasen wie langen Klassennamen um?

Gemäß dieser Frage:

Wie gehe ich mit sehr langen Zeilen um, die keine Leerzeichen enthalten?

Mein Problem ist, dass meine \lstinline-Phrasen keine Sonderzeichen wie "-" enthalten. In meinen lstlinlines gibt es sehr lange Klassennamen wie ThisIsAVeryLongExampleClassNameAndItHasNoLineBreak. Das Problem, das sich aus diesen Klassennamen ergibt, sind überfüllte Boxen.

Kennt jemand einen Ansatz zum Setzen von bedingten Zeilenumbruchzeichen (wie \-im normalen Text).

Antwort1

Oder um alles vollautomatisch zu machen (in Ihrem Fall):

\documentclass{minimal}
\usepackage{listings}
\begin{document}
\lstinline[
  literate={A}{A}{1\discretionary{}{}{}}
           {B}{B}{1\discretionary{}{}{}}
           {C}{C}{1\discretionary{}{}{}}
           {D}{D}{1\discretionary{}{}{}}
           {E}{E}{1\discretionary{}{}{}}
           {F}{F}{1\discretionary{}{}{}}
           {G}{G}{1\discretionary{}{}{}}
           {H}{H}{1\discretionary{}{}{}}
           {I}{I}{1\discretionary{}{}{}}
           {J}{J}{1\discretionary{}{}{}}
           {K}{K}{1\discretionary{}{}{}}
           {L}{L}{1\discretionary{}{}{}}
           {M}{M}{1\discretionary{}{}{}}
           {N}{N}{1\discretionary{}{}{}}
           {O}{O}{1\discretionary{}{}{}}
           {P}{P}{1\discretionary{}{}{}}
           {Q}{Q}{1\discretionary{}{}{}}
           {R}{R}{1\discretionary{}{}{}}
           {S}{S}{1\discretionary{}{}{}}
           {T}{T}{1\discretionary{}{}{}}
           {U}{U}{1\discretionary{}{}{}}
           {V}{V}{1\discretionary{}{}{}}
           {W}{W}{1\discretionary{}{}{}}
           {X}{X}{1\discretionary{}{}{}}
           {Y}{Y}{1\discretionary{}{}{}}
           {Z}{Z}{1\discretionary{}{}{}}
!ThisIsAVeryLongExampleClassNameAndItHasNoLineBreakThisIsAVeryLongExampleClassNameAndItHasNoLineBreakThisIsAVeryLongExampleClassNameAndItHasNoLineBreakThisIsAVeryLongExampleClassNameAndItHasNoLineBreakThisIsAVeryLongExampleClassNameAndItHasNoLineBreak!

\end{document}

Offensichtlich sollte dies in einen Stil gebracht werden ...

(Um -ans Ende der Zeile zu gelangen, verwenden Sie \discretionary{-}{}{}. 26 Mal :-)

Antwort2

Um einen bedingten Zeilenumbruch zu definieren, kann man den coolen Trick aus der von dir zitierten Frage nutzen:

\documentclass{minimal}
\usepackage{listings}
\begin{document}
Bla bla blabla blabla bla bla blabla bla blabla bla blabla
bla blabla bla blablablabla bla
\lstinline[literate={\\\-}{}{0\discretionary{-}{}{}}]!ThisIsAVeryLong\-Example\-ClassNameAndItHasNoLineBreak!
bla blabla blabla blabla bla
\end{document}

PS: Ich vermute, \\das zweite Argument \discretionaryin der zitierten Frage war ein Fehler? Wie auch immer, das Obige funktioniert für mich.

Antwort3

Ich hatte heute Abend etwas Glück mit den folgenden beiden Schritten:

  1. Brechen Sie den Namen explizit ab:\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
  2. Stellen Sie sicher, dass Ihr Vorangegangenes (oder nur tatsächlich) lstsetgilt .breaklines=truebreaklines

verwandte Informationen