Como lidar com frases lstinline muito longas, como nomes de classes longos?

Como lidar com frases lstinline muito longas, como nomes de classes longos?

De acordo com esta pergunta:

Como lidar com filas muito longas que não contém espaços?

Meu problema é que minhas \lstinlinefrases não contêm nenhum caractere especial como "-". Nas minhas lstlinlines há nomes de classes muito longos, como ThisIsAVeryLongExampleClassNameAndItHasNoLineBreak. O problema que resulta desses nomes de classes são caixas cheias demais.

Alguém conhece uma abordagem para definir marcas de quebra de linha condicionais. (Como \-no texto normal).

Responder1

Ou, para tornar as coisas totalmente automáticas (no seu 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, isso deve ser colocado em um estilo...

(Para chegar -ao final da linha, use \discretionary{-}{}{}. 26 vezes :-)

Responder2

O truque legal da pergunta que você citou pode ser usado para definir uma quebra de linha 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}

PS Acho que \\o segundo argumento da \discretionarypergunta citada foi um erro? De qualquer forma, o acima funciona para mim.

Responder3

Tive alguma sorte esta noite seguindo estas duas etapas:

  1. Quebre o nome explicitamente:\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
  2. Certifique-se de que o seu anterior lstsettenha breaklines=true(ou apenas breaklines).

informação relacionada