Scala是一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。作为我们LaTeX用户,更关心如何排版其语言让其显示更为美观使我们很感到兴趣的。

listings包本身没有预定义Scala语言,所以我要先定义其语言如下,选自网络包lstlang0.sty的定义:


\usepackage{listings}
"define" Scala
\lstdefinelanguage{scala}{
morekeywords={abstract,case,catch,class,def,%
do,else,extends,false,final,finally,%
for,if,implicit,import,match,mixin,%
new,null,object,override,package,%
private,protected,requires,return,sealed,%
super,this,throw,trait,true,try,%
type,val,var,while,with,yield},
otherkeywords={=>,<-,<\%,<:,>:,\#,@},
sensitive=true,
morecomment=[l]{//},
morecomment=[n]{},
morestring=[b]",
morestring=[b]',
morestring=[b]"
""
}

下面我们定制其显示颜色

\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
% Default settings for code listings
\lstset{frame=tb,
language=scala,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
basicstyle={\small\ttfamily},
numbers=none,
numberstyle=\tiny\color{gray},
keywordstyle=\color{blue},
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
frame=single,
breaklines=true,
breakatwhitespace=true
tabsize=3
}

这样我们可以用下面的语句输入了

\begin{lstlisting}
val t = "hello" // a string
val x = 42 // an int
def While (p: => Boolean) (s: => Unit) {
if (p) { s ; While(p)(s) }
}
\end{lstlisting}

【演示效果】

选自:http://tihlde.org/~eivindw/latex-listings-for-scala/

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部