¿Cómo lidiar con frases lstinline muy largas, como nombres de clases largos?

¿Cómo lidiar con frases lstinline muy largas, como nombres de clases largos?

Según esta pregunta:

¿Cómo lidiar con colas muy largas que no contienen espacios?

Mi problema es que mis \lstinlinefrases no contienen ningún carácter especial como "-". En mis lstlinlines hay nombres de clase muy largos como ThisIsAVeryLongExampleClassNameAndItHasNoLineBreak. El problema que resulta de esos nombres de clases son las casillas demasiado llenas.

¿Alguien conoce un método para establecer marcas de salto de línea condicionales? (Como \-en el texto normal).

Respuesta1

O, para hacer las cosas completamente automáticas (en su caso):

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

Obviamente, esto debería ponerse en un estilo...

(Para llegar -al final de la línea, utilice \discretionary{-}{}{}. 26 veces :-)

Respuesta2

El genial truco de la pregunta que has citado se puede utilizar para definir un salto de línea condicional:

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

PD: Supongo que \\el segundo argumento de \discretionaryla pregunta citada fue un error. De todos modos, lo anterior funciona para mí.

Respuesta3

Tuve algo de suerte esta noche siguiendo estos dos pasos:

  1. Rompe el nombre explícitamente:\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
  2. Asegúrese de que su anterior lstsetlo tenga breaklines=true(o breaklinessimplemente lo tenga).

información relacionada