リストにプログラムコードを追加する

リストにプログラムコードを追加する

素敵な見出しを作りたいです。 見出しがはみ出さず、フレームにぴったり合うようにします。 灰色のヘッダーの幅と高さを設定するにはどうすればいいですか? これは自動的に行うことができますか?

そして、なぜ言葉は色違いで目立たないのか、結局パッケージの色を使うんだありがとう

  \documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[english,russian]{babel}
\usepackage{listings}
\lstset{inputencoding=utf8,extendedchars=false,keepspaces=true}
\renewcommand{\lstlistingname}{Листинг}

\usepackage{color} %% это для отображения цвета в коде

\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}} %% это сделает текст заголовка белым
%% код ниже нарисует серую рамочку вокруг заголовка кода.
\DeclareCaptionFormat{listing}{\colorbox[rgb]{0.25,0.25,0.25}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}


\begin{document}
    
 \lstset{
       language=C, 
       numbers=left,       
        numberstyle=\small, 
       numbersep=8pt,  
       frame = single,    
       framexleftmargin=25pt, 
       framexrightmargin=75pt,
       captionpos=t 
 }

\begin{lstlisting}[label=some-code,caption={Это крутой исходный код}]
int main(void) // главная программа
{
int i, j; // инициализация счётчиков

// Сей код множит матрицу величиною 3x3
for (i=0; i<3; ++i) {
for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]);
putchar('\n');
}

// Вызов басурманской библиотеки BLAS
cblas_dgemv(CblasRowMajor, CblasNoTrans,
3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);

// Подаём челобитную на экран
for (i=0; i<3; ++i) printf("%5.1f\n", y[i]);

return 0;
}
\end{lstlisting}

\end{document}

答え1

こういうことですか?

リスト例

ヘッダーキャプションの上下のスペースは、abovecaptionskip=パラメータとbelowcaptionskip=パラメータで制御されます。私は T2A フォントを持っていないので、xelatex で使用しNoto Seriffontspecコンパイルし、パラメータ値として使用しましたbelowcaptionskip=0.5emが、必要に応じて変更/調整できます。

色付けも(多くの)パラメータで行われます。例えば、キーワードの場合、keywordstyle=\color{blue}\bfseries,

その他のパラメータについてはマニュアルの 6 ページを参照してください (do texdoc listings)。

ムウェ

\documentclass[11pt]{article}
%\usepackage[utf8]{inputenc}
%\usepackage[T2A]{fontenc}

\usepackage{xcolor} %% это для отображения цвета в коде
\usepackage{fontspec}
\setmainfont{Noto Serif}
\usepackage[english,russian]{babel}
\usepackage{listings}
\lstset{inputencoding=utf8,extendedchars=false,keepspaces=true}
\renewcommand{\lstlistingname}{Листинг}

\usepackage{caption}
\DeclareCaptionFont{white}{\color{yellow}} %% это сделает текст заголовка белым
%% код ниже нарисует серую рамочку вокруг заголовка кода.
\DeclareCaptionFormat{listing}{\colorbox[rgb]{0.25,0.25,0.25}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}


\begin{document}
    
 \lstset{
       language=C, 
       numbers=left,       
        numberstyle=\small, 
       numbersep=8pt,  
       frame = single,    
       framexleftmargin=25pt, 
       framexrightmargin=75pt,
       captionpos=t,
    %       abovecaptionskip=0pt,
       belowcaptionskip=0.5em, 
        keywordstyle=\color{blue}\bfseries,
 }

\begin{lstlisting}[label=some-code,caption={Это крутой исходный код}]
int main(void) // главная программа
{
int i, j; // инициализация счётчиков

// Сей код множит матрицу величиною 3x3
for (i=0; i<3; ++i) {
for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]);
putchar('\n');
}

// Вызов басурманской библиотеки BLAS
cblas_dgemv(CblasRowMajor, CblasNoTrans,
3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);

// Подаём челобитную на экран
for (i=0; i<3; ++i) printf("%5.1f\n", y[i]);

return 0;
}
\end{lstlisting}

\end{document}

関連情報