Según esta pregunta:
¿Cómo lidiar con colas muy largas que no contienen espacios?
Mi problema es que mis \lstinline
frases 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 \discretionary
la pregunta citada fue un error. De todos modos, lo anterior funciona para mí.
Respuesta3
Tuve algo de suerte esta noche siguiendo estos dos pasos:
- Rompe el nombre explícitamente:
\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
- Asegúrese de que su anterior
lstset
lo tengabreaklines=true
(obreaklines
simplemente lo tenga).