前言
使用LaTeX插入代码的时候我们可以使用\lstset
命令来进行代码样式的设置,但是这种设置是全局的,也就是说使用lstlisting
环境插入的代码都是公用一种样式。如果我们需要对不同的语言设置不同的样式,在使用的时候直接引用即可,那么能不能做到,答案是可以的。
实现
本文要介绍的命令是\lstdefinestyle
,它是用来定义一个代码样式,我们先来看代码:
% system=ubuntu
%soft=Tex Live2015
% complie=XeLaTeX
\documentclass[a4paper,UTF8]{article}
\usepackage{listings}
\usepackage{ctex}
\usepackage{color}
\definecolor{keywordcolor}{rgb}{0.8,0.1,0.5}
\definecolor{webgreen}{rgb}{0,.5,0}
\definecolor{bgcolor}{rgb}{0.92,0.92,0.92}
\lstdefinestyle{styleJ}{
language=[AspectJ]Java,
keywordstyle=\color{keywordcolor}\bfseries,
commentstyle=\color{blue} \textit,
showstringspaces=false,
numbers=left,
numberstyle=\small
}
\lstdefinestyle{styleP}{
language=Python,
numbers=right,
frame=single,
numberstyle=\small ,
}
\begin{document}
\begin{lstlisting}[style=styleJ]
public int sum(int n){
int sum = 0;
for(int i=0;i<n;i++){ //开始的
sum += i;
}
return sum;
}
\end{lstlisting}
\begin{lstlisting}[style=styleP]
def fun():
print('你好,世界') #我是注释
\end{lstlisting}
\end{document}
可以看到使用lstdefinestyle
定义了两个样式,styleJ和styleP,分别是java和python的样式,在使用lstlisting
环境的时候调设置了这两个样式。
如果不想把代码放在.tex文件里,也可以把代码放在单独的文件,然后使用下面的命令即可:
\lstinputlisting[style=styleJ]{code.java}