1 问题描述
我们利用 LATEX 写论文时往往会展现一些程序的关键代码,以清晰地表达自己的思想。虽然不建议大段大段的展现,这样有放水的嫌疑,但是在思想表达的关键点展现关键的代码是可以的,也是不可避免和无可非议的。通常情况下,一篇论文只展现一种语言也就够了。但是现代网络化的迅速发展,往往是多兵种联合作战,那种从头到尾一直使用一种语言的时代已经过去了。反映在论文的写作上,你就可能在同一篇论文中展现多种类型的代码,每种语言采用自己独有的格式配置,以清晰地把它们区分开来,方便读者阅读。
那么,怎样按照不同的格式配置来展现不同的语言呢?接下来我们详细地讲解。
2 方法
回想
LATEX
中大括号{xxx}
的语义,它指的是:所有在其中书写的配置命令的作用范围仅限于大括号中。这样,在不同类型语言展现的时候,将它们各自的配置命令写在各自的大括号中,并在各自的大括号中展现它们,即可满足我们的需求。实际上,采用的方法是:将展现次数比较多的那种语言的配置命令写在全局区域,而将展现次数较少的写在一对大括号中。亦即,特殊情况特殊处理。下面我们给出一个具体的例子,方便大家的理解。
假如出现次数比较多的语言为MyLaTeX1,我们就将它的配置方式写在全局区域,如下:
\lstset{
language=myLaTeX,
breaklines=true,
basicstyle=\tt\scriptsize,
keywordstyle=\color{blue}\bfseries,
identifierstyle=\color{magenta},
frame =single,
framerule=0.5pt,
numbers=left,
}
而另外一个出现次数较少的是C语言,我们将其配置放在大括号中,同时展现它;为了加以区别,我们接着在大括号外又展现了同样的代码,当然其采用的是语言MyLaTeX的设置,代码如下:
{
\lstset{language=C}
\begin{lstlisting}
#include <stdio.h> /* needed for printf */
int main()
{
printf(``Hello World\n'');
return 1;
}
\end{lstlisting}
}
\begin{lstlisting}
#include <stdio.h> /* needed for printf */
int main()
{
printf(``Hello World\n'');
return 1;
}
\end{lstlisting}
编译运行后,结果如下:
通过上图,我们可以很清晰地看出:已达到预期的效果。
3 总结
通过本文,我们学习了大括号{}
的用法,感受到了其特殊的威力。像这样的使用在一般的书籍中很难讲到,它们往往讲具体的语法含义,而没有讲如何巧妙的运用它们。这就像,我们学数学的时候,所有的概念都理解了,所有的知识点都已经记住了,可是一到解题中,就是不知道如何使用它们。我们要多思、多想!!
- 这是我利用包listings提供的定义展现语言的功能定义的。MyLaTeX的定义方式如下:%%%%%%%%%%% Define Language for listings
\lstdefinelanguage{myLaTeX}
{
% list of keywords
morekeywords={
RequirePackage,
theoremstyle,
newtheorem
},
sensitive=true, % keywords are case-sensitive
morecomment=[l]{\%}, % l is for line comment
morecomment=[s]{/}{/}, % s is for start and end delimiter
morestring=[b]” % defines that strings are enclosed in double quotes
} ↩