Vejledning til listings-pakken Morten Ovi latex@student.dtu.dk / 6. juli 2004 Indhold 1 Om listings-pakken 1 2 Indstilling af listings 2 3 listings-pakken i praksis 2 3.1 listings i teksten............................ 2 3.2 listings som miljø........................... 2 3.3 listings inkludering fra andre filer.................. 2 4 Eksempler på inkludering af kildekode 3 4.1 Java................................... 3 4.2 Matlab.................................. 3 4.3 HTML, del I.............................. 4 4.4 HTML, del II.............................. 4 A Flere kommandoer i listings-pakken a Listings 1 Java-kode................................ 3 2 Matlab-kode............................... 3 3 HTML-kode med markeringer, del 1................. 4 4 HTML-kode med markeringer, del 2................. 4 1 Om listings-pakken listings-pakken er en pakke, en udvidelse, til L A TEX som meget nemt gør en i stand til blandt andet at indsætte tekst, typisk kildekode, fra andre filer, og vise tekst med linjenumre. 1
Vejledning til listings-pakken 2 listings-pakken, og den tilhørende manual, kan hentes fra www.ctan.org. Pakken er et must for folk der skal inkludere kildekode i deres rapporter, men der er også andre fornuftige ting man kan bruge pakken til. listings-pakken er ikke en erstatning for verbatim-pakken, men et supplement til denne. Tekst der skal formateres med verbatim, som skal stå sammen med den normale tekst, skal stadig formateres med verbatim-pakken. 2 Indstilling af listings Alle indstillingerne for listings skrives komma-separeret i \ l s t s e t {<i n d s t i l l i n g e r >} Alternativt kan de skrives som options i de hårde paranteser i lstlisting-miljøet (med enkelte undtagelser, se manualen, eller brug trial n error-metoden): \begin{lstlisting}[firstline=2] Linje 1 Linje 2 \end{lstlisting} L i n j e 2 I teksten vil disse indstillinger være markeret med denne grønne skrifttype. listings-pakken kan indstilles på mange leder og kanter. En fuldstændig oversigt kan ses i manualen, men da der også er meget fyld i denne, er der i appendiks A på side a vist nogle ofte benyttede indstillinger. 3 listings-pakken i praksis listings kan bruges til formatering af tekst på tre forskellige måder, som det fremgår af de tre næste afsnit. 3.1 listings i teksten Brug eksempelvis \lstinline!var i: int;! til at skrive var i : int; med. Lidt ligesom med simpel matematik, $... $. 3.2 listings som miljø Med et lstlisting-miljø tages teksten direkte fra dokumentet, som det kendes fra verbatim-miljøet: \begin{lstlisting} Tekst... \LaTeX{} \end{lstlisting} Tekst... \LaTeX{} Teksten bliver bare inkluderet uden at den bliver kompileret af L A TEX. Dette er den nemme, hurtige, og lidt begrænsede måde at bruge listings-pakken på. 3.3 listings inkludering fra andre filer Med \lstinputlisting{<filnavn>} tages indholdet fra denne fil og sættes ind det pågældende sted i teksten.
Vejledning til listings-pakken 3 4 Eksempler på inkludering af kildekode Afhængig af hvilket sprog koden er skrevet i, bør man altid checke fra tabel 1 på side 12 i manualen, om ens sprog er understøttet, således at syntaksen bliver formatteret herefter. Det er også muligt at få kommentarer, strings mv. i teksten til at fremstå med specielle skrifttyper. I de følgende afsnit er vist små eksempler på hvordan man kan inkludere noget forskellig kode. 4.1 Java I listing 1 er vist noget Java-kode der er inkluderet med language=java parameteren. Rammerne laves med frame=single og \lstset{frameround=tttt} for at få de runde hjørner. Caption laves med caption={[java-kode]eksempel på Java-kode.}, og dermed fremkommer listen over listings (se side 1). Listing 1: Eksempel på Java-kode. 1 import p a r s e r ; 2 import java_cup. runtime. Symbol ; 3 import java. i o. ; 4 5 class Main { 6 7 s t a t i c boolean do_debug_p a r s e = f a l s e ; 8 s t a t i c public void main ( S t r i n g argv [ ] ) { 9 10 / S t a r t t h e p a r s e r / 11 try { 12 p a r s e r p = new p a r s e r (new Lexer (new FileReader ( argv [ 0 ] ) ) ) ; 13 Object r e s u l t = p. p a r s e ( ). value ; 14 } 15 catch ( Exception e ) { 16 / do cleanup here p o s s i b l y rethrow e / 17 } f i n a l l y { 18 / do c l o s e out here / 19 } 20 } 21 } 4.2 Matlab Herunder er vist noget Matlab-kode der er inkluderet med language=matlab parameteren. Listing 2: Eksempel på Matlab-kode 1 function v i s v e j 2 3 global parametre q v 4 global xy 5 global parametre 6 global axis_s t u f f 7 global v e j e n_handle 8 9 carparam ; 10 11 i f get ( v e j e n_handle, value )==2 % case 1 % 12 x = [ 0 xy ( 1, : ) eval ( parametre ( 3, : ) ) ] ; 13 y = [ 0 xy ( 2, : ) eval ( axis_s t u f f ( 3, : ) ) ] ; 14 x i = 0 :. 25 : eval ( parametre ( 3, : ) ) ;
Vejledning til listings-pakken 4 15 y i = pchip ( x, y, x i ) ; 16 plot ( x, y, o, xi, y i ) ; 17 else 18 x i = linspace ( 0, q, 1 0 0 0 ) ; 19 [ vej1, v e j 2 ] = v e j ( x i ) ; 20 plot ( v xi, vej1, g ) ; 21 axis ( [ 0 v q 1 1 ] ) ; 22 end 4.3 HTML, del I Herunder er vist noget HTML-kode der er inkluderet med language=html parameteren. Listing 3: Eksempel på HTML-kode. 1 <html> 2 <head> 3 <t i t l e>min f ø r s t e CSS s i d e</ t i t l e> 4 <style type=" t e x t / c s s "> 5 <! 6 h1 {font size : 30 pt ; font f a m i l y : a r i a l } 7 h2 {font size : 15 pt ; font f a m i l y : c o u r i e r } 8 p {font size : 8 pt ; font f a m i l y : times new roman} 9 > 10 </ style> 11 </head> 12 13 <body> 14 <h1>min f ø r s t e CSS s i d e</h1> 15 <h2>css e r en kende smart</h2> 16 <p>her kan man se, hvordan CSS v i r k e r.</p> 17 </body> 18 </html> 4.4 HTML, del II Det interessante ved dette eksempel er ændringen af farven af keywordet h1 fra rød til blå og til understregning af ordet (linje 6 og linje 14). Dette sættes med \lstset{emph={h1},emphstyle=\color{navyblue}\underbar} og med blandt andet følgende options: keywordstyle=\color{red}\bfseries. Listing 4: Eksempel på HTML-kode med ændring af keywordet h1. 1 <html> 2 <head> 3 <t i t l e>min f ø r s t e CSS s i d e</ t i t l e> 4 <style type=" t e x t / c s s "> 5 <! 6 h1 {font size : 30 pt ; font f a m i l y : a r i a l } 7 h2 {font s i z e : 15 pt ; font f a m i l y : c o u r i e r } 8 p {font s i z e : 8 pt ; font f a m i l y : times new roman} 9 > 10 </ style> 11 </head> 12 13 <body> 14 <h1>min f ø r s t e CSS s i d e</h1> 15 <h2>css e r en kende smart</h2> 16 <p>her kan man se, hvordan CSS v i r k e r.</p> 17 </body> 18 </html>
Vejledning til listings-pakken a A Flere kommandoer i listings-pakken I tabel 1 er vist en oversigt over nogle af de mest benyttede funktioner i listingspakken. Resten står i manualen. Der benyttes notationen key=value medmindre andet er nævnt. Består nogle af værdierne af flere ord, eksempelvis name={main og app-filerne}, skal de ekstra Tuborg-paranteser bruges. Tabel 1: Udvalgte kommandoer i listings-pakken. Kommando Forklaring extendedchars=true æøå kan benyttes. breaklines=true Linjer ombrydes hvis de er for lange. firstline=3 Starter indlæsning ved linje 3. lastline=6 Slutter indlæsning ved linje 6. firstnumber=10 Første linje får linjenummeret 10. numbers=left Linjenumre på venstre side. numberstyle= \tiny linjenumre. stepnumber=3 3 linjer for hvert linjenummer. numbersep=2pt 2pt mellemrum mellem linjenummer og tekst. Værdi kan være negativ. basicstyle=\small Skriftstørrelsen på teksten. keywordstyle Prædefinerede keywords (for det pågældende sprog) markeres således, eksempelvis \color{black}\bfseries\underbar giver sorte, fede, og understregede keywords. stringstyle Eksempelvis \ttfamily. Formaterer strings. showspaces=true Mellemrum vises med tegnet. showstringspaces=true Mellemrum vises med tegnet i strings. float Indholdet bliver til en float (ligesom figurer og tabeller). (Tager ingen value.) caption=<navn> Caption på listen. label=<navn> Som i normal L A TEX og man kan dermed referere til denne listing. tabsize=8 Standardværdien for tabs. name=<navn> Navngivning letter arbejdet hvis filen deles op i flere dele når den inkluderes. frame=single Vælg ml. none, leftline, topline, bottomline, lines, single, shadowbox. Eller bogstaverne t r b l (store bogstaver = dobbelt linje). Begge funktioner er brugt til Java og Matlab-eksemplerne. frameround=tttf Giver runde hjørner i frames, undtagen i øverste venstre hjørne, dog såfremt der er streger ind mod disse hjørner. Skal sættes i \lstset. Referencer til linjenumre er vist praktis i afsnit 4.4, og er gange snedigt. Det laves med ganske almindelige L A TEX kald, \ref{h1-1}, hvor der er en tilhørende label i filen: ( @\ l a b e l {h1 1}@ ) Der er foretaget indstillingen \lstinputlisting[escapeinside={(*@}{@*)}]. Slut.