我正在尝试学习老师提供的 TeX 文件。我设法使用以下命令将 C++ 文件链接到列表:
\lstset{language=C++,
% numbers=left,
% stepnumber=1,
numberstyle=\ttfamily,
basicstyle=\ttfamily,
keywordstyle=\color{blue}\ttfamily,
stringstyle=\color{red}\ttfamily,
commentstyle=\color{gray}\ttfamily,
morecomment=[l][\color{magenta}]{\#}
}
\lstinputlisting[label={code},caption={\textit{Source code} program}, language={C}]{main.cpp}
我得到了:
我尝试使用lstlisting
单独解释代码。我使用:
\begin{lstlisting}[label={code},caption={isiArray Function}, language={C}]
void isiArray(int arr[],int *arrLength){
int i;
for(i=0;i<*arrLength;i++){
cin>>arr[i];
}
}
\end{lstlisting}
但我得到:
代码没有像上一个代码那样左对齐。为什么会出现这种情况?如何设置左对齐?
答案1
由于listings
几乎是逐字设置的,因此它也会考虑空格,因此环境中整个代码块的缩进lstlisting
将反映为输出的一部分。删除缩进或使用参数gobble
删除一组初始空格。
\documentclass{article}
\usepackage{listings,lipsum}
\begin{document}
\sloppy\lipsum[1]
\begin{lstlisting}[caption={isiArray Function 1}, language={C}, basicstyle=\ttfamily]
void isiArray(int arr[],int *arrLength){
int i;
for(i=0;i<*arrLength;i++){
cin>>arr[i];
}
}
\end{lstlisting}
\begin{lstlisting}[gobble=8, caption={isiArray Function 2}, language={C}, basicstyle=\ttfamily]
void isiArray(int arr[],int *arrLength){
int i;
for(i=0;i<*arrLength;i++){
cin>>arr[i];
}
}
\end{lstlisting}
\begin{lstlisting}[caption={isiArray Function 3}, language={C}, basicstyle=\ttfamily]
void isiArray(int arr[],int *arrLength){
int i;
for(i=0;i<*arrLength;i++){
cin>>arr[i];
}
}
\end{lstlisting}
\end{document}