Как заставить перенос строк в листинге пакетов? - PullRequest
39 голосов
/ 11 июня 2009

У меня проблема с пакетом объявлений в латексе. Мне нужно встроить исходный код следующего XML-документа http://www.sparxsystems.com.au/downloads/profiles/EP_Extensions.xml в приложение к моей магистерской работе. Проблема в том, что независимо от того, какие параметры я передаю пакету, я не могу разместить его на странице. Строки в листинге слишком длинные, и пакет листингов не переносит их, что кажется странным ... Какая комбинация опций поможет?

В данный момент я использую следующую инструкцию lstset:

\lstset{
breakindent=0em,
language=XML,
basicstyle=\footnotesize,
numbers=left,
numberstyle=\footnotesize,
stepnumber=2,
numbersep=5pt,
backgroundcolor=\color{white},
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=true,
breakatwhitespace=true,
breakautoindent=true,
escapeinside={\%*}{*)},
linewidth=\textwidth
}

Который, без других заданных параметров, и в сочетании со следующей командой:

\lstinputlisting{EP_Extensions.xml}

Перечисляет источник данного файла к следующему выводу: alt text

Ответы [ 4 ]

57 голосов
/ 09 декабря 2009

У меня только что была эта проблема ...

breaklines работал для меня, хотя вам нужно установить его в true - по умолчанию false:

\lstinputlisting[style=Python,
    caption=My Class,
    label={mine.py},
    breaklines=true,
  ]{../python/mine.py}

это то, что я использовал

10 голосов
/ 25 ноября 2011

У меня была эта проблема, и эта страница высоко оценивается в Google, так что вот решение для меня:

У меня было следующее включение: \usepackage[none]{hyphenat}, которое вызывает проблему, описанную выше. Я использовал его, чтобы решить проблему с автоматическим разрывом латекса в середине слова, что в некоторых случаях выглядит действительно глупо.

После долгих поисков альтернативы этому решению я не нашел ничего подходящего и согласился на правильные пунктирные линии, но плохо расставленные переносы.

2 голосов
/ 13 июня 2009

Не очень хороший ответ, но одна идея состоит в том, чтобы обернуть исходный код в слово перед включением. Если вы используете Linux, для этого можно использовать команду fold . Очевидно, что это лучше всего работает, если текст написан шрифтом фиксированной ширины, что я рекомендовал бы в любом случае для списков кода.

1 голос
/ 15 мая 2018

Продолжение до Ответ Аарона . Я использовал basicstyle=\ttfamily для своих объявлений. Поэтому я смог разрешить разрыв строки, изменив

\usepackage[none]{hyphenat}

до

\usepackage[htt]{hyphenat}
%           ^^^

hyphenat документы описывают, что опция htt "позволяет переносить ... набор текста с помощью \texttt или \ttfamily" В моем случае использования я не увидел ни одного переноса в своих списках, но я получил разрыв.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...