当我尝试导入主程序在 latex 文件中,我总是得到一个额外的块位于列表下方。有人知道如何解决这个问题吗?
\documentclass[12pt]{article}
\usepackage{listings}
\usepackage{color}
%Defint the color
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{1,1,1}
\begin{document}
\lstdefinestyle{cppStyle}{ %
language=C++,
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
morekeywords={string,Node, Node*},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\tiny,
basicstyle=\ttfamily ,
numbers=left,
numberstyle=\ttfamily ,
stepnumber=5,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=false,
breakatwhitespace=false,
escapeinside={\%*}{*)}
}
\lstset{style=cppStyle}
\begin{minipage}{\linewidth}
\lstinputlisting[nolol=true]{main.cpp}
\begin{lstlisting}[caption={C++ Hello World}, label={lst:cpp_hello_world}]
\end{lstlisting}
\end{minipage}
\end{document}
答案1
您有两个列表,其中一个是空的。标题和标签应传递给命令\lstinputlisting
。
我借此机会提出一些改进建议。
- 这
minipage
是无用的(并且会产生危害,因为它会增加段落缩进) - 可以
style
作为选项传递 - 应该
style
在序言中定义
这是一个完整的例子,filecontents*
环境只是为了让它自包含(而不是破坏我的文件)。
\begin{filecontents*}{\jobname.cpp}
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World in C++"<<endl;
return 0;
}
\end{filecontents*}
\documentclass[12pt]{article}
\usepackage{listings}
\usepackage{color}
%Defint the color
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{1,1,1}
\lstdefinestyle{cppStyle}{
language=C++,
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
morekeywords={string,Node, Node*},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\tiny,
basicstyle=\ttfamily,
numbers=left,
numberstyle=\ttfamily,
stepnumber=5,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
frame=single,
tabsize=2,
captionpos=b,
breaklines=false,
breakatwhitespace=false,
escapeinside={\%*}{*)},
}
\begin{document}
\lstinputlisting[
style=cppStyle,
nolol=true,
caption={C++ Hello World},
label={lst:cpp_hello_world}
]{\jobname.cpp}
\end{document}