如何让 lstlisting 看起来和算法环境一模一样?

如何让 lstlisting 看起来和算法环境一模一样?

我正在使用algorithm和排版伪代码algorithmicx以获得如下结果(取自包文档): 算法 + algorithmicx

现在我想用这个listings包打印真正的 C++ 代码。有没有办法让它看起来lstlisting一模一样(显示类似清单 1代替算法 1, 当然)?

答案1

caption包可用于更改标题格式:以粗体字体排版标签,当居中标题适合一行时停用居中标题,隐藏默认标签分隔符并将其替换为空格,并在标题前添加规则。可以使用选项添加标题后的规则和标题末尾的规则;还可以使用该包frame=提供\lstset的功能控制编号和一些缩进listings

\documentclass{article}
\usepackage{listings}
\usepackage{caption}

\lstset{
language=C++,
basicstyle=\small\ttfamily,
numbers=left,
numbersep=5pt,
xleftmargin=20pt,
frame=tb,
framexleftmargin=20pt
}

\renewcommand*\thelstnumber{\arabic{lstnumber}:}

\DeclareCaptionFormat{mylst}{\hrule#1#2#3}
\captionsetup[lstlisting]{format=mylst,labelfont=bf,singlelinecheck=off,labelsep=space}

\begin{document}

\begin{lstlisting}[caption={test algorithm}]
#include <iostream>
using namespace std;

int main()
{
  cout << "Welcome to the wonderful world of C++!!!\n";
  return 0;
}
\end{lstlisting}

\end{document}

在此处输入图片描述

相关内容