Согласно этому вопросу:
Как быть с очень длинными строками, не содержащими пробелов?
Моя проблема в том, что мои \lstinline
-фразы не содержат никаких специальных символов, таких как "-". В моих lstlinlines есть очень длинные имена классов, такие как ThisIsAVeryLongExampleClassNameAndItHasNoLineBreak
. Проблема, которая возникает из-за этих имен классов, — переполненные поля.
Кто-нибудь знает, как установить условные знаки переноса строк. (Как \-
в обычном тексте)?
решение1
Или, чтобы сделать все полностью автоматическим (в вашем случае):
\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{документ}
Очевидно, это следует изложить в определенном стиле...
(Чтобы попасть -
в конец строки, используйте \discretionary{-}{}{}
. 26 раз :-)
решение2
Крутой трюк из процитированного вами вопроса можно использовать для определения условного переноса строки:
\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 Я полагаю, \\
что второй аргумент \discretionary
в цитируемом вопросе был ошибкой? В любом случае, вышесказанное работает для меня.
решение3
Сегодня мне повезло, я выполнил следующие два шага:
- Разбейте имя явно:
\lstinline{ThisIsAVeryLongExampleClassName}\lstinline{AndItHasNoLineBreak}
- Убедитесь, что ваше предыдущее
lstset
имело местоbreaklines=true
(или простоbreaklines
на самом деле).