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}

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


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

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

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

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

RPG
() автор топика
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от Tweaker

Интересно, проверю, спасибо.

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

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

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

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

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

Код, pdf.

Tweaker ★★★★☆
()
2 октября 2012 г.

Поясните пожалуйста, куда вставлять команды \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
()
Ответ на: комментарий от anonymous

Сам verbatim нужно подключить через usepackage

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