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 \discretionary
in 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:
- Brechen Sie den Namen explizit ab:
\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
- Stellen Sie sicher, dass Ihr Vorangegangenes (oder nur tatsächlich)
lstset
gilt .breaklines=true
breaklines