[Squeak-ev] Squeak-Code mit LaTeX dokumentieren

Markus Schlager m.slg at gmx.de
Don Sep 20 22:44:50 UTC 2007


Hallo Andre!

Ich arbeite mit schlichtem Copy und Paste aus Squeaks Browser in meinen
Texteditor (meist emacs). Das klappt vollkommen problemlos, um die
Steuerzeichen wie _ und ^ kümmern sich meine Listingsdefinitionen (werden
in den literate-Einträgen übersetzt):

----------8X--------------------------------------------------------
\usepackage{listings}

%%% Smalltalkdefinition f"ur das listings-Paket
\lstdefinelanguage{Smalltalk}{
  keywordsprefix=\#,
  morekeywords={true,false,self,super,nil,thisContext},
  
morekeywords={[2]ifTrue,ifFalse,whileTrue,whileFalse,and,or,xor,not,eqv,to,by,do,timesRepeat,caseOf,otherwise},
  sensitive=true,
  morecomment=[s]{"}{"},
  morestring=[b]',
  moredelim=**[is][\itshape]{/+}{+/}, % benutzt f"ur tempor"are Variablen
  style=SmalltalkStyle
}
\lstdefinestyle{SmalltalkStyle}{
  tabsize=4,
  frame=leftline,
%  frame=bl,
  framerule=2pt,
  rulecolor=\color{gray},
%  backgroundcolor=\color{white},
  backgroundcolor=\usebeamercolor[bg]{listing},
  basicstyle=\ttfamily\footnotesize,
  keywordstyle={[2]\color{gray!70!black}\bfseries},
%  stringstyle=\color{orange},
  stringstyle=\mdseries\slshape\color{gray!50!black},
%  commentstyle=\color{brown},
  commentstyle=\slshape\color{gray},
  emphstyle={\color{red}\bfseries},
  emphstyle={[2]\color{red}},
  emphstyle={[3]\color{blue}\bfseries},
  emphstyle={[4]\color{blue}},
  literate={\ _\ }{{$\gets$}}3{^}{{$\uparrow$}}1
%  literate={:=}{{$\gets$}}1{^}{{$\uparrow$}}1
%  literate={^}{{$\uparrow$}}1
} 
----------------------------------------X8--------------

Ein Quelltextbeispiel sieht dann beispielsweise so aus:

--------8X-----------------------------------------------
\begin{lstlisting}[language=Smalltalk, numbers=left,
  morekeywords={createLabels}, moreemph={romanNumerals}]   
WatchMorph>>createLabels
    | numeral font h r |
    self removeAllMorphs.
    font _ StrikeFont familyName: fontName size: (h _ self height min: 
self width)//8.
    r _ 1.0 - (1.4 * font height / h).
    1 to: 12 do:
        [:hour |
        numeral _ romanNumerals
            ifTrue: [hour printStringRoman]
            ifFalse: [hour asString].
        self addMorphBack: ((StringMorph contents: numeral font: font 
emphasis: 1)
            center: (self radius: r hourAngle: hour)) lock]
\end{lstlisting}}%
---------------------------------------------X8-------------

Das Beispiel ist aus einer Beamer-Präsentatino (daher auch die pgf-Syntax
der Farbdefinitionen). Für Overlays muß man das Listing noch in ein
\defverbatim packen.

Ich hoffe, das hilft Dir weiter

Markus
-----------------------------------------------
 Markus Schlager               m.slg(at)gmx.de