LINUX.ORG.RU

Latex: кириллица в verbatim

 , ,


1

2

Добрый вечер!

Пишу статейку, в которую также нужно включать фрагменты когда. Проблема возникла, при попытках вписать код, содержащий в себе кириллические символы (конкретно - в регулярных выражениях), с помощью verbatim. Однако, при компиляции кириллические символы не отображаются.

Попытки использовать listing тоже не принесли успеха - символы стали видно, однако в целом всё превратилось в мешанину пробелы между словами схлопнулись, скобки улетели куда угодно, только не туда, куда надо.

Не понятно, что с этим делать. Заранее спасибо за помощь!

В случае listings — это известная старая проблема. Он не работает с unicode. Там внутри предполагается, что символ кодируется одним байтом. Иными словами, (гомерический злобный хохот) либо переходить на koi8-r, либо отказаться от listings (ну или оставить на кириллицы только комментарии — тут это решается)

А вот с verbatim это что-то новенькое. Вангую, что каких-то шрифтов не хватает. Иными словами пример кода в студию, а иначе угадать что не так не получится.

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

Каким надо быть ССЗБ, чтобы использовать хрюникод в текстах и как системнуя локаль? Для этого есть КОИ8 или другая кодировка. А хрюникоду место лишь в иксовых приложениях.

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

Вот для листингов что у меня:

\usepackage[framemethod=tikz]{mdframed}
    \mdfsetup{frametitlealignment=\centering, needspace=40pt}
    \usepackage[cache=false, outputdir=build]{minted}
    \renewcommand{\theFancyVerbLine}{
        \textcolor[rgb]{0.65,0.65,0.65}
        {\small\arabic{FancyVerbLine}}}
    \newmintedfile[cppfile]{c++}{style=vs, linenos,  baselinestretch=0.9, fontsize=\small}
    \newcommand\includecpp[1]
        {
        \begin{mdframed}
        [everyline=true, frametitle={#1}, frametitlerule=true, repeatframetitle=true, frametitlefont=\ttfamily, linecolor=gray!80!, beforebreak={}]
        \cppfile{#1}
        \end{mdframed}
        }

Потом если надо файл включить, делаем

\includecpp{main.cpp}
roof ★★ ()
Ответ на: комментарий от anonymous

Есть несколько причин для этого, но я назову две: а) unicode уже готов для использования; б) удобство при наборе многоязычных текстов, а не только латинских или в лучшем случае двуязычных текстов.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от roof

А можно пример для использования minted с кодом MetaPost и LaTeX совместно с pdflatex? Минимальная шапка и последовательность действий при компиляции.

Мне правда интересно. Мне нужно обновить некий текст и хотелось бы уйти от listings.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 4)
Ответ на: комментарий от Evgueni

Получил ответ на свой вопрос, спасибо. Действительно, Pygments не подсвечивает синтаксис MetaPost. Тем не менее, список поддерживаемых языков там довольно велик и, возможно, достаточен для большинства применений.

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

Что же до подветки TeX:

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[cache=false, outputdir=build]{minted}
\newmintedfile[texfile]{tex}{style=default, linenos, baselinestretch=0.9, fontsize=\small}
\begin{document}
Listing sample using \LaTeX syntax highlight
\texfile{sample.tex}
\end{document}
pdflatex -shell-escape sample.tex

выдает вплоне сносный результат. С кириллицей, правда, у меня не завелось, ибо привычная мне polyglossia с pdflatex не работает, а с babel сейчас разбираться не хочу.

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

Действительно, Pygments не подсвечивает синтаксис MetaPost.

Это для меня к сожалению критично.

С кириллицей, правда, у меня не завелось

Это тоже

Похоже ситуация за последние пять лет не особо поменялась в этих направлениях.

Хотелось бы понять как оно работает с lualatex, так как в случае xelatex несколько напрягает отсутствие микротипографики, которая есть в pdflatex из коробки.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

С кириллицей завелось,

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[russian]{babel}
\usepackage[cache=false, outputdir=build]{minted}
\newmintedfile[texfile]{tex}{style=default, linenos, baselinestretch=0.9, fontsize=\small}
\begin{document}
Пример с подсветкой \LaTeX\ и кириллицей 
\texfile{sample.tex}
\end{document}

Оказалось достаточно

\usepackage[russian]{babel}

С подсветкой посмотрю что можно сделать на выходных.

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

Хм, преамбула скопипастилась из первой подвернувшейся под руку доки в рабочем каталоге. Возможно, там и был смысл. В текущей доке, точно нет. Компилируется в нормальный PDF и без x.

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

Попробовал собрать с помощью TeX Live 2015. Простой пример собрался и выглядит адекватно.

Замечены следующие проблемы (для информации):

а) требует запускать с ключом -shell-escape (сразу возникают жуткие мысли о всякого рода вирусах в документах, но да ладно — объяснимо)

б) Почему-то требует при сборки создать директорию build (автоматом не создаётся)

в) Почему-то генерятся метрики для mf-шрифтов, хотя установлен cm-super.

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

а) ну да, ему питон надо запускать для генерации.

б) это из-за outputdir=build, можно его убрать, будет генерить промежуточный мусор в текущем каталоге

в) тут ХЗ, надо разбираться, может пакет дополнительно настроить надо

roof ★★ ()
Последнее исправление: roof (всего исправлений: 1)