[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