[ADD] подсветка синтаксиса C и C++ в листингах

This commit is contained in:
Arseny
2026-09-02 13:05:05 +03:00
parent 7f20bd9831
commit a3d41af022
3 changed files with 41 additions and 6 deletions
+30 -1
View File
@@ -29,15 +29,44 @@ PREAMBLE = r"""\documentclass[a4paper, 14pt]{extarticle}
\captionsetup[figure]{labelsep=emdash,font=onehalfspacing,position=bottom,name=Рисунок}
\captionsetup[table]{labelsep=emdash,font=onehalfspacing,position=top,name=Таблица,singlelinecheck=false,justification=raggedright}
\usepackage{listings}
\usepackage{xcolor}
% Палитра подсветки. Тона различаются не только цветом, но и светлотой,
% поэтому листинг остаётся читаемым и на чёрно-белой печати.
\definecolor{lstkeyword}{RGB}{0,0,139}
\definecolor{lstcomment}{RGB}{110,110,110}
\definecolor{lststring}{RGB}{139,0,0}
\definecolor{lstnumber}{RGB}{0,100,0}
\definecolor{lstlineno}{RGB}{130,130,130}
% Встроенный диалект C++ в listings старше стандарта: auto, nullptr, override
% и прочее он не знает. Расширяем его, а не подменяем, чтобы сохранить разбор
% строк, комментариев и препроцессора.
\lstdefinelanguage[modern]{C++}[ISO]{C++}{%
morekeywords={%
auto,nullptr,constexpr,consteval,constinit,noexcept,override,final,%
decltype,static_assert,thread_local,alignas,alignof,concept,requires,%
co_await,co_yield,co_return,import,module,%
Q_OBJECT,Q_SLOTS,Q_SIGNALS,Q_PROPERTY,signals,slots,emit%
}%
}
\lstset{
basicstyle=\ttfamily\small\setstretch{1.0},
keywordstyle=\bfseries\color{lstkeyword},
% Начертание прямое: курсива кириллицы в моноширинном шрифте нет, и
% комментарий распадался бы на прямые русские и курсивные латинские слова.
commentstyle=\color{lstcomment},
stringstyle=\color{lststring},
numberstyle=\tiny\color{lstlineno},
directivestyle=\color{lstnumber},
identifierstyle=,
breakatwhitespace=false,
breaklines=true,
captionpos=t,
inputencoding=utf8,
frame=single,
keepspaces=true,
keywordstyle=\bf,
numbers=left,
numbersep=5pt,
xleftmargin=25pt,