When I use listings
, to display code with Russian comments, in a literate
block, I obtain invalid line-breaking, on whitespace characters.
Please refer to the below MWE, for an example, which compiles to the document provided at the end of this question.
How might I be able to resolve this issue?
\documentclass[varwidth=true, border={6pt -5pt 6pt 2pt}]{standalone}
%\documentclass{extarticle}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{cmap}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage[T2A]{fontenc}
\usepackage[babel=true,tracking=true]{microtype}
%------------------------------------------------
\usepackage{PTSans}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{filecontents}
\begin{filecontents*}{dbstart.txt}
-- Cоздаем таблицу Группа
create table sgroup (
id integer not null,
group_name varchar(40),
primary key (id)); -- уникальный ключ id
-- Cоздаем таблицу Студент
create table student (
id integer not null,
id_group integer not null, -- поле для связи с таблицей Группа
student_name varchar(40),
last_name varchar(40),
middle_name varchar(40),
sex char(1),
age smallint,
primary key (id), -- уникальный ключ id
foreign key (id_group) references sgroup (id)); -- определение связи с таблицей Группа
-- Cоздаем таблицу Хобби
create table hobby (
id integer not null, -- уникальный ключ
hobby_name varchar(100),
primary key (id)); -- уникальный ключ id
-- Cоздаем таблицу Студент-Хобби
create table student_hobby (
id_student integer not null, -- поле для связи с таблицей Студент
id_hobby integer not null, -- поле для связи с таблицей Хобби
primary key (id_student, id_hobby), -- уникальный ключ составной id_student, id_hobby
foreign key (id_hobby) references hobby (id), -- определение связи с таблицей Хобби
foreign key (id_student) references student (id)); -- определение связи с таблицей Студент
\end{filecontents*}
\definecolor{gray}{rgb}{0.4,0.4,0.4}
\definecolor{darkblue}{rgb}{0.0,0.0,0.6}
\definecolor{cyan}{rgb}{0.0,0.6,0.6}
\usepackage{listings}
\lstset{
inputencoding=utf8,
extendedchars=false,
keepspaces=true,
breaklines=true,
breakatwhitespace=true,
breakindent=0pt,
literate={а}{{\selectfont\char224}}1
{б}{{\selectfont\char225}}1
{в}{{\selectfont\char226}}1
{г}{{\selectfont\char227}}1
{д}{{\selectfont\char228}}1
{е}{{\selectfont\char229}}1
{ё}{{\"e}}1
{ж}{{\selectfont\char230}}1
{з}{{\selectfont\char231}}1
{и}{{\selectfont\char232}}1
{й}{{\selectfont\char233}}1
{к}{{\selectfont\char234}}1
{л}{{\selectfont\char235}}1
{м}{{\selectfont\char236}}1
{н}{{\selectfont\char237}}1
{о}{{\selectfont\char238}}1
{п}{{\selectfont\char239}}1
{р}{{\selectfont\char240}}1
{с}{{\selectfont\char241}}1
{т}{{\selectfont\char242}}1
{у}{{\selectfont\char243}}1
{ф}{{\selectfont\char244}}1
{х}{{\selectfont\char245}}1
{ц}{{\selectfont\char246}}1
{ч}{{\selectfont\char247}}1
{ш}{{\selectfont\char248}}1
{щ}{{\selectfont\char249}}1
{ъ}{{\selectfont\char250}}1
{ы}{{\selectfont\char251}}1
{ь}{{\selectfont\char252}}1
{э}{{\selectfont\char253}}1
{ю}{{\selectfont\char254}}1
{я}{{\selectfont\char255}}1
{А}{{\selectfont\char192}}1
{Б}{{\selectfont\char193}}1
{В}{{\selectfont\char194}}1
{Г}{{\selectfont\char195}}1
{Д}{{\selectfont\char196}}1
{Е}{{\selectfont\char197}}1
{Ё}{{\"E}}1
{Ж}{{\selectfont\char198}}1
{З}{{\selectfont\char199}}1
{И}{{\selectfont\char200}}1
{Й}{{\selectfont\char201}}1
{К}{{\selectfont\char202}}1
{Л}{{\selectfont\char203}}1
{М}{{\selectfont\char204}}1
{Н}{{\selectfont\char205}}1
{О}{{\selectfont\char206}}1
{П}{{\selectfont\char207}}1
{Р}{{\selectfont\char208}}1
{С}{{\selectfont\char209}}1
{Т}{{\selectfont\char210}}1
{У}{{\selectfont\char211}}1
{Ф}{{\selectfont\char212}}1
{Х}{{\selectfont\char213}}1
{Ц}{{\selectfont\char214}}1
{Ч}{{\selectfont\char215}}1
{Ш}{{\selectfont\char216}}1
{Щ}{{\selectfont\char217}}1
{Ъ}{{\selectfont\char218}}1
{Ы}{{\selectfont\char219}}1
{Ь}{{\selectfont\char220}}1
{Э}{{\selectfont\char221}}1
{Ю}{{\selectfont\char222}}1
{Я}{{\selectfont\char223}}1
}
\lstloadlanguages{XML, SQL, C}%Загружаемые языки
\lstdefinelanguage{SQL}
{
keywords={create, table, primary, foreign, references, key, not, null, select,
insert, update, where, from, as, into, values, set, delete, order, by, and,
distinct, max, min, group, having, count, left, right, full, join, on, union, plan, collate, all, returns, procedure, begin, end, suspend, generator, to, active, trigger, for, before, after, is, if, then, new, old, gen_id, position, inactive, grant, revoke, with, option, public, domain, collation, character, translation, usage, cascade, restrict, sequence, increment, minvalue, maxvalue, start},
keywordstyle=\color{darkblue},
ndkeywords={varchar, integer, smallint, char},
ndkeywordstyle=\color{cyan},
sensitive=false,
morecomment=[l]--,
morecomment=[s][\color{orange}]{/*}{*/},
morestring=[d]',
morestring=[d]",
stringstyle=\color{purple}
}
\lstdefinestyle{listSQL}{
language=SQL,
belowcaptionskip=5pt,
xleftmargin=0.5cm,
numbers=left,
numberstyle=\scriptsize\usefont{T2A}{PTMono-TLF}{m}{n},%шрифт нумерации
frame=single,
emph={},
emphstyle=\color{red},
basicstyle=\small\usefont{T2A}{PTMono-TLF}{m}{n},
columns=fullflexible,
showstringspaces=false,
commentstyle=\color{gray}\upshape}
\begin{document}
\lstinputlisting[label=dbstart, style=listSQL]{dbstart.txt}
\end{document}