Строки кода, которые я пишу в lstlisting, иногда слишком длинные. Поэтому в конце происходит разрыв строки. Но иногда эти разрывы не очень удачно выбраны и могут сделать код гораздо менее читаемым.
Есть ли способпредопределитьместа, гдеперерывдолжен появитьсяЕсли необходимо?
Мой документ:
\documentclass{book}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{listings}
\lstdefinestyle{General} {
basicstyle=\small\ttfamily,
breaklines=true
}
\lstset{style=General}
\begin{document}
\begin{lstlisting}
This is a very long listing which eventually needs a break at the end of this beautiful line.
\end{lstlisting}
\end{document}
В этом случае разрыв строки происходит после "break". Было бы здорово определить разрыв после "listing", например. Или, может быть, второй после "beautiful", если есть достаточно места (возможно, после изменения некоторых настроек документа, таких как границы или формат). В этом случае первый следует игнорировать.
решение1
- Возможно, я неправильно понял ваш вопрос. Фраза «иногда эти перерывы выбираются неудачно» не имеет особого смысла для типичного листингового материала.
- Содержание листинга рассматривается
verbatim
буквально, как оно есть. - Поэтому вы можете добавлять переносы строк вручную в любом месте, где захотите.
- Кроме того,
listings
пакет предлагает автоматические переносы строк (вы включили это). Я отметил автоматический перенос строк с помощью$\hookrightarrow$
отступа по умолчанию. - Кроме того, вы можете изменить
linewidth
как опцию (не показано).
Кстати: я не знаю, зачем мне нужно использовать
\mbox
in\mbox{{$\hookrightarrow$}\space}
. Также~
вместо\space
вызвало ошибку.
\documentclass{book}
\usepackage{listings}
\lstdefinestyle{myListingStyle}
{
basicstyle = \small\ttfamily,
breaklines = true,
postbreak = \mbox{{$\hookrightarrow$}\space} % See https://tex.stackexchange.com/questions/116534 for example
}
\begin{document}
\begin{lstlisting}[
style = myListingStyle,
caption = {Natural/Automatic line break.}
]
This is a very long listing which eventually needs a break at the end of this beautiful line.
\end{lstlisting}
\begin{lstlisting}[
style = myListingStyle,
caption = {Manual line break.}
]
This is a very long listing which eventually
needs a break at the end of this beautiful line.
\end{lstlisting}
\end{document}