Schlagwort-Archive: ActionScript

LaTeX MXML Listings Preset

@englisch speaking visitors: skip the german parts and read just the code 🙂 the download link is at the bottom

Gestern war ich Stunden viel zu lange damit beschĂ€ftigt, zu versuchen meine MXML-Code-Beispiele, fĂŒr meine Bachelor Arbeit, in mein LaTeX-Projekt einzubinden. Da ich auch einen gewissen Ă€sthetischen Anspruch an meine Arbeit habe, sollte der Code auch mit Syntax-Highlighting dargestellt werden. Doch solche Aufgaben sind mit LaTeX irgendwie nicht wirklich einfach zu lösen … Aber ich habe es letztendlich doch (teilweise) geschafft 🙂
Da ich nichts dazu im Netz fand, will ich hier meine Lösung preisgeben.

Als erstes braucht man das listings-Packet und fĂŒr Farben das color-Paket

\usepackage{listings}
\usepackage{color}

dann muss man ein paar Farben definieren

% Colors used by Flex Builder 3.
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}
\definecolor{flexred}{rgb}{0.65, 0.01, 0.01}
\definecolor{flexgreen}{rgb}{0, 0.6, 0}
\definecolor{flexgray}{rgb}{0.25, 0.37, 0.75}
\definecolor{flexblue}{rgb}{0, 0.2, 1}
\definecolor{flexfunction}{rgb}{0.2, 0.6, 0.4}
\definecolor{flexvar}{rgb}{0.4, 0.6, 0.8}
\definecolor{black}{rgb}{0, 0, 0}

da das listings-Paket MXML nicht kennt, muss man eine neue Sprachdefinition anlegen

% Define new language for listings.
\lstdefinelanguage{MXML} {
   basicstyle=\ttfamily\scriptsize,
   sensitive=true,
   morecomment=[s][\color{flexred}\ttfamily]{<!--}{-->}, commentstyle=\color{flexred},
   morecomment=[s][\color{black}]{<?}{?>}, commentstyle=\color{black},
%  morecomment=[n][\color{black}]{\{}{\}}, commentstyle=\color{black},
   string=[b]", stringstyle=\color{flexred},
   morestring=[b]', stringstyle=\color{flexred},
   showstringspaces=false,
   numberstyle=\scriptsize,
   numberblanklines=true,
   showspaces=false,
   breaklines=true,
   showtabs=false,
   alsoletter={:},
   keywords = [1]
   {
      mx:WindowedApplication, mx:Application, mx:Button, mx:Text,
      mx:HBox, mx:VBox
   },
   keywordstyle={[1]\color{flexblue}},
%  otherkeywords={<,>,/>,</},
   keywords = [2]
   {
      mx:Script
   },
   keywordstyle={[2]\color{flexgreen}},
}

Da man in Verbindung mit MXML vielleicht auch ActionScript Code benutzt, braucht man auch dafĂŒr eine neue Sprachdefinition

% Define new language for listings.
\lstdefinelanguage{ActionScript} {
   basicstyle=\ttfamily\scriptsize,
   sensitive=true,
   %morecomment=[l][\color{flexgreen}\ttfamily]{//},
   %morecomment=[s][\color{flexgreen}\ttfamily]{/*}{*/},
   %morecomment=[s][\color{flexgray}\ttfamily]{/**}{*/},
   morestring=[b]",
   morestring=[d]/,
   morecomment=[l][\color{flexgreen}\ttfamily]{//},
   morecomment=[s][\color{flexgreen}\ttfamily]{/*}{*/},
   morecomment=[s][\color{flexgray}\ttfamily]{/**}{*/},
   morecomment=[n][\color{flexblue}\ttfamily]{<}{>},
   stringstyle=\color{flexred}\textbf,
   commentstyle=\color{flexgreen},
   showstringspaces=false,
   numberstyle=\scriptsize,
   numberblanklines=true,
   showspaces=false,
   breaklines=true,
   showtabs=false,
   emph =
   {[1]
      class, package, interface
   },
   emphstyle={[1]\color{purple}\textbf},
   emph =
   {[2]
      internal, public, protected, private,
      super, this, import, new, extends, implements,
      void, true, false, as
   },
   emphstyle={[2]\color{flexblue}\textbf},
   emph =
   {[3]
      function
   },
   emphstyle={[3]\color{flexfunction}\textbf},
   emph =
   {[4]
      var
   },
   emphstyle={[4]\color{flexvar}\textbf}
}

So, die Vorbereitungsarbeit wĂ€re erledigt. Jetzt nur noch den Code folgender Maßen einbinden

\lstset{language=MXML}
\begin{lstlisting}
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Button id="btn" x="30" y="25" width="100" label="Say hello!"
             click="{txt.text = 'Hello World!'}" />
	<mx:Text id="txt" x="30" y="55" width="100" text="" />
</mx:Application>
\end{lstlisting}

Das Ergebnis sieht dann so aus

MXML in LaTeX
Im Vergleich zu der Darstellung im FlexBuilder sind noch kleine Unterschiede zu erkennen, doch besser hab ich’s einfach nicht hinbekommen. Falls jemand VerbesserungsvorschlĂ€ge hat, bitte ich um ein Kommentar 🙂

 

 

 

Zum GlĂŒck fand ich Clovis‘ Blog, der den ActionScript-Teil schon gemacht hatte – sonst wĂŒrde ich mich wohl immer noch damit rumĂ€rgern 😉

English speakers: If you have suggestions to improve the MXML listings preset, feel free to comment (also if you’ve something else to say, comment! 😉 ). You can download everything in one file from the following link.

Download:

If you want to contribute, go to the priatepad at http://piratepad.net/latex-mxml-listings-preset
(after you’re done contributing, be so kind and drop a line here)