我目前正在写我的硕士论文,我想在附录中添加一些代码清单。代码是用 SPSS Statistics 的编程语言“Syntax”编写的。
有没有办法在 SPSS 语法代码中启用语法高亮listings
?或者是否可以自己定义随后高亮的单词?我正在使用 Lyx,如果这很重要的话。
理想情况下,排版列表看起来应该是这样的:
以下是一些示例代码:
USE ALL.
*Filter für Gültige.
COMPUTE gueltig=0.
EXECUTE.
IF ((Ernsthaftigkeit1nurmalgucken5ernsthaftdabei > 2) AND (Alter < 75) AND (Aufmerksamkeit1abgelenkt5konzentriert > 2) AND (Musik1keine2Hobby3Profi > 0)) gueltig=1.
EXECUTE.
FILTER BY gueltig.
*Filter für deutsch erkannt (Audio und Verständnis korrekt).
USE ALL.
RECODE erkannteSprache ('d'=1) ('de'=1) ('Detsch'=1) ('deusch'=1) ('deustch'=1) ('Deutch'=1) ('deutsc'=1) ('deutscg'=1) ('deutsch'=1) ('Deutsch'=1) ('DEUTSCH'=1) ('Deutts'=1) ('german'=1) ('German'=1) ('German.'=1) ('Gernab'=1) (ELSE=0)
INTO deutscherkannt.
EXECUTE.
FILTER BY deutscherkannt.
*Filter für deutsche Sprache.
USE ALL.
RECODE ausgewählteSprache ("de"=1) (ELSE=0) INTO deutsch.
EXECUTE.
*Filter für auszuwählende Fälle.
USE ALL.
COMPUTE auswahl=0.
EXECUTE.
IF ((gueltig=1) AND (deutscherkannt=1)) auswahl=1.
EXECUTE.
FILTER BY auswahl.
答案1
该listings
包没有定义任何与 SPSS 相对应的语言,但定义一种语言很容易。
\documentclass{article}
\usepackage{xcolor}
\usepackage{textcomp}
\usepackage{listings}
\lstset{inputencoding=utf8/latin1}
\lstdefinelanguage{SPSS}
{
sensitive = true,
morekeywords = {ALL, AND, BY, EQ, GE, GT, LE, LT, NE, NOT, OR, TO, WITH},
morecomment = [s]*.,
morecomment = [s]{/*}{*/},
morestring = [s]'',
morestring = [s]"",
}
\lstdefinestyle{mySPSSstyle}
{
language = SPSS,
upquote = true,
basicstyle = \sffamily\scriptsize,
keywordstyle = \color[RGB]{165,42,42}\bfseries,
commentstyle = \color{blue},
stringstyle = \color[RGB]{255,0,255},
breaklines = true,
columns = fullflexible,
frame = single,
rulecolor = \color{black},
numbers = left,
numberstyle = \color{gray},
}
\usepackage{filecontents}
\begin{filecontents*}{sample.sps}
USE ALL.
*Filter für Gültige.
COMPUTE gueltig=0.
EXECUTE.
IF ((Ernsthaftigkeit1nurmalgucken5ernsthaftdabei > 2) AND (Alter < 75) AND (Aufmerksamkeit1abgelenkt5konzentriert > 2) AND (Musik1keine2Hobby3Profi > 0)) gueltig=1.
EXECUTE.
FILTER BY gueltig.
*Filter für deutsch erkannt (Audio und Verständnis korrekt).
USE ALL.
RECODE erkannteSprache ('d'=1) ('de'=1) ('Detsch'=1) ('deusch'=1) ('deustch'=1) ('Deutch'=1) ('deutsc'=1) ('deutscg'=1) ('deutsch'=1) ('Deutsch'=1) ('DEUTSCH'=1) ('Deutts'=1) ('german'=1) ('German'=1) ('German.'=1) ('Gernab'=1) (ELSE=0)
INTO deutscherkannt.
EXECUTE.
FILTER BY deutscherkannt.
*Filter für deutsche Sprache.
USE ALL.
RECODE ausgewählteSprache ("de"=1) (ELSE=0) INTO deutsch.
EXECUTE.
*Filter für auszuwählende Fälle.
USE ALL.
COMPUTE auswahl=0.
EXECUTE.
IF ((gueltig=1) AND (deutscherkannt=1)) auswahl=1.
EXECUTE.
FILTER BY auswahl.
\end{filecontents*}
\begin{document}
\lstinputlisting[style=mySPSSstyle]{sample.sps}
\end{document}