LINUX.ORG.RU

Настройка verbatim в TeX

 ,


2

1

Пост на заметку, вдруг кто-то тоже мучается с тем, как в окружении verbatim сделать перенос длинных строк, настроить отступы да и вообще...

Вредная особенность TeX-овского verbatim'a - наплевательское отношение к длинным строчкам. Причина заключена в том, что TeX ставит в окружении verbatim неразрывный пробел. Ок, исправляем:

\def\@xobeysp{ }

Меняет неразрывный пробел обратно на обычный.

Теперь незадача: текст в листинге выравнивается по ширине, непорядок... Решение следующее:

\def\verbatim@processline{\raggedright\the\verbatim@line\par}

Я просто скопировал макрос из verbatim.sty и добавил \raggedright. Листинги выглядят практически идеально, но мне не нравится отсутствие отступов. Так как processline представляет собой каждую строчку листинга, просто добавим пробел в начало:

\def\verbatim@processline{\hspace{1.2cm}\raggedright\the\verbatim@line\par}

В принципе можно накидать туда команд по вкусу...

Окончательное решение следующее:

\def\@xobeysp{ }
\def\verbatim@processline{\hspace{1.2cm}\raggedright\the\verbatim@line\par}

Теперь листинги имеют отступы, длинные строки переносятся и при этом отступа не имеют - красота. Надеюсь, это решение поможет ТеХническим писателям.


А пакеты listings/listingsutf8 вам не понравились?

mky ★★★★★ ()
Ответ на: комментарий от mky

Мне очень нравятся эти пакеты и я бы с удовольствием ими пользовался, но только тогда, когда они научатся понимать русский язык в листингах без костылей.

RPG ()
Ответ на: комментарий от RPG

А про xetex речи не было. У меня обычный латех, КОИ-8Р. Все ОК.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Ну вот в этом то и проблема, что lstlisting работает только с определенной версией теха. А у меня стиль универсальный для всех ТеХов.

RPG ()
Ответ на: комментарий от RPG

только с определенной версией теха

Не с определенной, а со всеми латехами.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

P.S. verbatim не подсвечивает код, не нумерует строки, не позволяет вставлять в код \label'ы и ссылаться потом на нужную строчку кода, не дает возможности красиво форматировать исходники (формулы, картинки в комментарииях и т.п.).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

А нормоконтролю это и не нужно, гораздо хуже сползающие русские буквы. Для обычных латехов я оставил lstlisting, а вот для XeTeX пришлось выпилить. Но без ХеТеХ документ вообще нормально не сверстаешь - попробуйте запилить, скажем, Courier New для латеха.

RPG ()
Ответ на: комментарий от RPG

попробуйте запилить, скажем, Courier New для латеха

Какой извращенец требует других шрифтов? В ГОСТе вообще про шрифты ничего не сказано (кроме шрифтов на чертежах)

Eddy_Em ☆☆☆☆☆ ()

Кстати, недавно нашел отличный пакет для листингов - minted. Из коробки подсветка, поддержка кириллицы в utf-8, и никаких косяков присущих прочим пакетам. Очень советую.

Tweaker ★★★★ ()
Ответ на: комментарий от Eddy_Em

Представьте, проходит через проверяющих квадриллион документов, напечатанных в «ворде», и тут бац - Computer Modern. ГОСТы вообще шрифт не регламентируют (только размер и начертание - моноширинный, курсив), но при этом негласно требуют TNR.

RPG ()
Ответ на: комментарий от Eddy_Em

Неплохо. Вот только есть сомнения в нужности кои-8.

Tweaker ★★★★ ()
Ответ на: комментарий от Tweaker

Наверное, потому что оригинальный латех однобайтовый?:)

RPG ()
Ответ на: комментарий от Tweaker

Там нет поддержки LaTeX и MetaPost, что меня безмерно печалит.

Evgueni ★★★★★ ()
Ответ на: комментарий от Evgueni

С чем едят метапост не знаю, а что не так с поддержкой латеха?

Tweaker ★★★★ ()
Ответ на: комментарий от Tweaker

Нет поддержки синтаксиса. По крайней мере пол года назад не было и в проекте.

Evgueni ★★★★★ ()
Ответ на: комментарий от Evgueni

Формулы в комментах поддерживает, а больше и не надо, вроде.

Tweaker ★★★★ ()
Ответ на: комментарий от Tweaker

Я имел в виду код для книги про LaTeX. Мне нужна поддержка его синтаксиса, а не формул.

Evgueni ★★★★★ ()
Ответ на: комментарий от Evgueni

Я имел в виду код для книги про LaTeX. Мне нужна поддержка его синтаксиса, а не формул.

Он же умеет все что умеет pygments. А в pygments синтаксис tex указан. Или какие то латехоспецифичные вещи не умеет?

Код, pdf.

Tweaker ★★★★ ()

Поясните пожалуйста, куда вставлять команды \def, для меня важно научить verbatim переносить строки

anonymous ()
Ответ на: комментарий от anonymous

Я вставлял это внутри стиля, но можно оставить и просто в шапке документа (до тега document).

RPG ()
Ответ на: комментарий от RPG

я так и вставил, до документа \def\@xobeysp{ } \def\verbatim@processline{\hspace{1.2cm}\raggedright\the\verbatim@line\par} \sloppy \begin{document} Это пример XML кода! \begin{verbatim} ...... \end {verbatim} пишет ошибку: ! Use of \verbatim doesn't match its definition. l.14 \begin{verbatim} If you say, e.g., `\def\a1{...}', then you must always put `1' after `\a', since control sequence names are made up of letters only. The macro here has not been followed by the required stuff, so I'm ignoring it. Если вставленные строки закомментировать, то ошибка исчезает. Texmaker 3.2

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.