LINUX.ORG.RU

lstlisting русские буквы съезжают

 ,


0

1

Сабж. Использую tectonic и listing. Есть вот такой код для octave:

n = 5; %Кол-во измерений
x = [2 : 6];
y = [17.2, 45.5, 96.5, 175.8, 288.9];

s(1,1) = n;
s(2, 1) = sum(x);
s(1, 2) = s(2, 1);
s(2, 2) = sum(x.^2)
b = [sum(y); sum(y*x')]

a = s\b
y2 = a(1) + a(2)*x
hold on; grid on;
plot(x, y, 'linestyle', 'none', 'marker', 's', 'color', 'r', 'markerfacecolor', 'r');
plot(x, y2, 'color', 'g');
legend('Тест', 'Апроксимирующая прямая')

Русский текст съезжает и получается так. Настройки для listing

\lstset {
  backgroundcolor = \color{backcolor},
  frame = single
}

Судя по этому топику (LaTeX: Русский в Listings) это проблема именно listing. Попробовал добавить

\usepackage[utf8x]{inputenc}
\lstset {
  backgroundcolor = \color{backcolor},
  frame = single,
  inputencoding=utf8x,
  extendedchars=\true
}

Но это не помогло.

listings не умеет работать нелатиницей. Это у него родовая болячка и без полного переписывания не лечится. Там в частности предполагается, что на символ выделяется ровно один байт. В качестве костыля можно вставлять кириллицу в окружении escapechar (как-то так).

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

Ну можно и так попробовать. В любом случае с кириллицей возможны проблемы, поэтому если она нужна для комментариев, то её можно заключить в escapechar, то есть в lstset сказать что-то вроде

escapechar=|
а затем по месту
latin |кириллический текст| latin

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

Нашёл свою заметку:

\lstset{
    keepspaces=true,
    extendedchars=\true,
    inputencoding=utf8,
    escapechar={|}
}
Первые две строки нужны для кириллических комментариев. escapchar всё равно использовать придётся из-за проблем в строках если не указан language

Evgueni ★★★★★
()

Я вместо listings использую minted. Он, правда, требует установленного pygments, и запускать латех приходится с опцией -shell-escape.

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

Потому что я использую юникод, чтобы использовать 🙂

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

В том, что может потребоваться набрать символ, который в koi8-r отсутствует. Это вопрос удобства. utf8 вполне готов для использования.

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

И какой же такой символ нельзя набрать средствами латеха?

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

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

Я в курсе, что всё можно обойти средствами LaTeX или текстового редактора, но этот путь просто менее удобен. В самом unicode нет ничего страшного при условии, что имеются все нужные символы в используемых шрифтах.

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