Разделение листингов в предопределенных местах

Разделение листингов в предопределенных местах

Строки кода, которые я пишу в 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как опцию (не показано).

Кстати: я не знаю, зачем мне нужно использовать \mboxin \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}

введите описание изображения здесь

Связанный контент