2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Оформление исходного кода программ в Latex
Сообщение26.11.2011, 08:14 
camphene в сообщении #508220 писал(а):
texMSP в сообщении #508218 писал(а):
К сожалению, в настоящее время нет способа оформить код с комментариями на русском языке.

Так всё же, в чём проблема и в каких случаях она проявляется?
В TexLive под Debian в кодировке utf-8 все русские буквы видны нормально (используется
inputencoding=utf8x,
extendedchars=false,).

Правда, по умолчанию listings ел в комментариях пробелы, но это решилось опцией keepspaces = true.

Очень рад, что у Вас получилось печатать комментарии в листингах на русском.
Наверное я что-то делаю не так.
Большая просьба привести полный точный код решения этой проблемы.

Наверное, я поторопился со своей оценкой возможностей LaTeX по работе с листингами.

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение26.11.2011, 09:29 
К сожалению, я не знаю, какой именно код направлен на решение загадочной проблемы...

В начале преамбулы я использую
Код:
\usepackage{cmap}

\usepackage[utf8x]{inputenc}
\usepackage[TS1,T2A]{fontenc}

\usepackage[english,russian]{babel}


При подключении пакета
Код:
\usepackage{listings}

\lstset{inputencoding=utf8x,
   extendedchars=false,
   %         stringstyle=\usefont{T2A}{fcr}{b}{n},
   language=Pascal, %Язык по умолчанию Code langugage
   belowcaptionskip=5pt,
   basicstyle=\usefont{T2A}{fcr}{m}{n},                   % Code font, Examples: \footnotesize, \ttfamily
   % keywordstyle=\color{OliveGreen},        % Keywords font ('*' = uppercase)
   commentstyle=\color{gray},              % Comments font
   keywordstyle=\usefont{T2A}{fcr}{b}{n},        % Keywords font ('*' = uppercase)
   % commentstyle=\usefont{T2A}{fcr}{m}{sl},              % Comments font
   numbers=left,                           % Line nums position
   numberstyle=\tiny,                      % Line-numbers fonts
   stepnumber=1,                           % Step between two line-numbers
   numbersep=5pt,                          % How far are line-numbers from code
   % backgroundcolor=\color{lightlightgray}, % Choose background color
   frame=none,                             % A frame around the code
   tabsize=2,                              % Default tab size
   captionpos=b,                           % Caption-position = bottom
   breaklines=true,                        % Automatic line breaking?
   breakatwhitespace=true,                % Automatic breaks only at whitespace?
   showspaces=false,                       % Dont make spaces visible
   showtabs=false,                         % Dont make tabls visible
   columns=flexible,                       % Column format
   morekeywords={__global__, __device__},  % CUDA specific keywords
   keepspaces = true   %!!!! пробелы в комментариях
}

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

Соответственно, исходные коды и документа LaTeX, и листингов — в кодировке utf-8.

Шрифт fcr — из Debian`овского пакета scalable-cyrfonts-tex (очень похож на Courier, но по умолчанию великоват, поэтому непосредственно перед \lstinputlisting в этом случае пишу
Код:
\scriptsize
\linespread{1}
\setlength{\parskip}{0ex}
).
Если не требуют обязательно Courier, можно поставить в basicstyle и стандартный \tt — русские буквы тоже есть.

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

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение29.11.2011, 11:45 
nestoklon в сообщении #508226 писал(а):
texMSP в сообщении #508218 писал(а):
Это, пока, не решенная проблема.
Я же привёл ссылку на решение. Даже на два
Более того, внезапно оказывается, что Evgueni был не прав и проблемы-то никакой и нет. Listings на самом деле прекрасно работает с utf8 (я тоже проверил) если ему указать соответствующие опции. Которые можно найти в документации.


К моему огорчению, ничего не получается!

Нельзя ли попросить опубликовать здесь код на LaTeX, с помощью которого можно печать листинги, в которых есть русские комментарии.
Пожалуйста!
Буду очень признателен!

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение29.11.2011, 11:56 
А не могли бы Вы привести минимальный пример, в котором русские комментарии не печатаются?
В моём предыдущем сообщении описаны все мои настройки, которые имеют хоть какое-то отношение к кодировке и листингам.
Если этот код не работает у Вас, то, может быть, дело в дистрибутиве или версии пакета?

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение29.11.2011, 13:22 
Аватара пользователя
texMSP в сообщении #509540 писал(а):
Нельзя ли попросить опубликовать здесь код на LaTeX, с помощью которого можно печать листинги, в которых есть русские комментарии.
Пожалуйста!
Буду очень признателен!

Можно вставлять внешние сегменты кода с помощью хака listingsutf8 из пакета oberdiek. Я же комментарии на кириллице оборачиваю в escapechar (обычно |) ручками. Про сам listings есть немного тут

Можно глянуть в сторону молодого аналога minted. Я на него перейти не смог, так как там нет раскраски для кода LaTeX и MetaPost, которые мне в тот момент были нужны.

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение29.11.2011, 13:56 
texMSP, посылаю Вам текст минимального русского примера (файлы приложить не получилось):
Код:
\documentclass[a4paper,12pt]{article}
\usepackage[T2A]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{listings}
\lstset{inputencoding=utf8x, extendedchars=false, keepspaces = true,
   language=c}
\renewcommand{\lstlistingname}{Листинг}

\begin{document}
\begin{lstlisting}[caption=Окружение lstlisting]
#include <stdio.h>
int main()
{
    printf("Здравствуй, мир!\n");   // Вывод приветствия
    return 0;
}
\end{lstlisting}

В~строке \lstinline?printf("Здравствуй, мир!\n"); // Вывод приветствия? есть русские буквы.

\lstinputlisting[caption=Команда lstinputlisting]{hello.cpp}
\end{document}
В файле hello.cpp тот же самый текст, что и в окружении lstlisting, кодировка utf8.

 
 
 
 Re: Оформление исходного кода программ в Latex
Сообщение05.05.2015, 09:46 
Вот такое нашлось:

Подсветка синтаксиса в Latex с кириллицей
http://blog.harrix.org/?p=6417

После подключения extendedchars=true и описанного там длиннющего literate русские буквы в комментариях у меня покрасились в цвет комментария; может быть, решаются и ещё какие-то проблемы, с которыми мне не приходилось сталкиваться.

 
 
 [ Сообщений: 22 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group