De acordo com esta pergunta:
Como lidar com filas muito longas que não contém espaços?
Meu problema é que minhas \lstinline
frases 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 \discretionary
pergunta citada foi um erro? De qualquer forma, o acima funciona para mim.
Responder3
Tive alguma sorte esta noite seguindo estas duas etapas:
- Quebre o nome explicitamente:
\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
- Certifique-se de que o seu anterior
lstset
tenhabreaklines=true
(ou apenasbreaklines
).