如何正确对齐标题​​和代码列表

如何正确对齐标题​​和代码列表

我正在使用 listing 包显示我的源代码,如下所示:

\lstset{language=C++,basicstyle=\footnotesize\ttfamily,emptylines=1,breaklines=true,backgroundcolor=\color{light-gray},xleftmargin=-1.cm,frame=lr,framesep=8pt,framerule=0pt}
\lstset{numbers=left,tabsize=2}

通过使用xleftmargin=-1.cm,我可以将代码清单稍微推到左侧的空白处。最终的布局如下所示:

在此处输入图片描述

如您所见,标题与代码列表未正确对齐。我想以类似的方式将列表的标题推到左侧,以便代码列表和标题对齐并覆盖相同的页面长度。

编辑根据要求,以下是 MWE:

\documentclass[10pt,twoside]{book}      
\usepackage{listings}
\usepackage{color} \usepackage[font=small,format=plain,labelfont=bf,sl,textfont=normal,justification=justified,singlelinecheck=false]{caption}    
\usepackage{lipsum}

\begin{document}

\definecolor{javared}{rgb}{0.6,0,0} % for strings
\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments
\definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords
\definecolor{javadocblue}{rgb}{0.25,0.35,0.75} % javadoc

\lstset{
keywordstyle=\color{javapurple}\bfseries,
stringstyle=\color{javared},
commentstyle=\color{javagreen},
morecomment=[s][\color{javadocblue}]{/**}{*/}}

\definecolor{light-gray}{gray}{0.95}
\lstset{language=C++,basicstyle=\footnotesize\ttfamily,emptylines=1,breaklines=true,backgroundcolor=\color{light-gray},xleftmargin=-1.cm,frame=lr,framesep=8pt,framerule=0pt}
\lstset{numbers=left,tabsize=2}

\lipsum[1]
\begin{lstlisting}[caption=random02.cpp]
#include <iostream>
#include <random>
#include <time.h>
int main(){
time_t seed = time(nullptr);
std::mt19937 randomEngine(seed);
std::uniform_int_distribution<int> dist(1,6);
for(int i=0; i < 10; i++){
std::cout << dist(randomEngine) << std::endl;
}
}
\end{lstlisting}
\lipsum[2]

\end{document}

编辑2:只有代码列表才会受此格式影响。其他标题应使用文档中定义的默认样式显示

相关内容