如何使用 listing 包突出显示 SPSS 语法代码?

如何使用 listing 包突出显示 SPSS 语法代码?

我目前正在写我的硕士论文,我想在附录中添加一些代码清单。代码是用 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}

相关内容