Pieni johdatus L A TEXin Listings-pakettiin Jonne Itkonen 17. syyskuuta 2010
Luku 1 Modulit ja paketit (Joo, tää on esimerkkiteksti, lue sorsa seuraavasta kappaleesta, niin opit Listingsin käytön.) Pythonissa modulin muodostaa yksi tiedosto määrittelyineen. Tiedoston tarkentimena käytetään merkkijonoa.py. Python-tulkki kääntää tiedoston.pyc -loppuiseksi tiedostoksi, jota sitten ajetaan. Tiedoston alussa tulee ilmoittaa käytetty merkistökoodaus. Sen voi esittää emacs- tai vim-editorien tunnistamassa muodossa, tai Unicode-tunnisteella. Alla on esimerkki modulista fib, joka laskee Fibonaccin lukuja (tiedoston nimi on fibo.py ). 1 # coding: iso 8859 15 2 # Fibonaccin numerot 3 def fib(n): # tulostetaan Fibonaccin sarja n:ään asti 4 a, b = 0, 1 5 while b < n: 6 print b, 7 a, b = b, a+b 8 9 def fib2(n): # palautetaan Fibonaccin sarja n:ään asti 10 result = [] 11 a, b = 0, 1 12 while b < n: 13 result.append(b) 14 a, b = b, a+b 15 return result Modulia käytetään Pythonista tuomalla se sinne import-komennolla. Moduli voi samalla tavalla tuoda itseensä toisia moduleja. 1 >>> import fibo 2 >>> fibo.fib(1000) 3 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 4 >>> fibo.fib2(100) 5 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 6 >>> fibo. name 7 fibo 8 >>> 9 >>> fib = fibo.fib 10 >>> fib(500) 11 1 1 2 3 5 8 13 21 34 55 89 144 233 377 12 >>> from fibo import fib, fib2 13 >>> fib(500) 14 1 1 2 3 5 8 13 21 34 55 89 144 233 377 2
15 >>> from fibo import * 16 >>> fib(500) 17 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Komento import on selitetty aiemmin. Hakemistot, joissa moduleina toimivat tiedostot ovat, muodostavat paketit. Jokaisesta pakettina toimivasta tiedostosta tulee löytyä tiedosto nimeltä init.py, joka sisältää paketin alustuskoodin, joskin se voi olla tyhjä. Esimerkiksi tiedostopolun "./foo/bar/baz.py"takaa löytyvä baz voidaan ottaa käyttöön import-komennolla import foo.bar.baz. 3
Luku 2 Tämä tiedosto LATEX-tiedostona 4 1 % vim: textwidth=72 2 \documentclass[12pt,a4paper,english,finnish,twoside]{report} 3 4 \usepackage[t1]{fontenc} 5 \usepackage[latin1]{inputenc} 6 \usepackage[finnish,english]{babel} 7 8 \usepackage{verbatim} 9 \usepackage{fancyvrb} 10 \usepackage[final]{listings} 11 12 \usepackage{palatino} 13 \usepackage[final]{graphicx} 14 \usepackage{subfigure} 15 \usepackage{longtable} 16 \usepackage{eurosym} 17 \usepackage{url} 18 \usepackage{tabularx} 19 \usepackage{syntax} 20 \usepackage[left=2cm,right=1cm,top=2.5cm,bottom=2.5cm, 21 headsep=0.5cm,headheight=0.5cm]{geometry} 22 23 24 \usepackage{float} % figuret kelluviksi isolla H:lla 25 \usepackage[all]{xy} 26 \xyoption{dvips} 27 28 \usepackage{pdflscape} 29 \usepackage{multicol} 30 31 \newcommand{\sout}[1]{} 32 33 \newenvironment{xypic} 34 {\shorthandoff{"}\xy} 35 {\endxy \shorthandon{"}} 36 37 38 \lstset{numbers=left,numberstyle=\tiny, 39 extendedchars,inputencoding=latin1, 40 %showspaces=true,showtabs=true, 41 basicstyle=\footnotesize, 42 %keywordstyle=\sffamily, 43 stringstyle=\sffamily, 44 showstringspaces=false, 45 columns=fullflexible, %!!! Tärkeä, muuten tulee harvaa 46 frame=single, 47 language=python 48 } 49 % Aina tuo fullflexible ei toimi, silloin vaan dokumentaatiota lukemaan. 50 51 52 \newcommand{\todo}[1] 53 {\emph{\textsc{\medskip \center{todo: #1}\bigskip }}} 54 \newcommand{\english}[1]{{\foreignlanguage{english}{#1}}}
5 55 \newcommand{\code}[1]{\textit{#1}} 56 \newcommand{\class}[1]{\code{#1}} 57 \newcommand{\objct}[1]{\code{#1}} 58 \newcommand{\pkg}[1]{\code{#1}} 59 \newcommand{\mdl}[1]{\code{#1}} 60 \newcommand{\oper}[1]{\code{#1}} 61 \newcommand{\interface}[1]{\code{#1}} 62 \newcommand{\cmd}[1]{\code{#1}} 63 \newcommand{\cmdp}[2]{\code{#1 #2}} 64 \newcommand{\fnct}[1]{\code{#1()}} 65 \newcommand{\fnctp}[2]{\code{#1(#2)}} 66 \newcommand{\fld}[1]{\code{#1}} 67 \newcommand{\mthd}[1]{\code{#1()}} 68 \newcommand{\mthdp}[2]{\code{#1(#2)}} 69 \newcommand{\attr}[1]{\code{#1}} 70 \newcommand{\prmtr}[1]{\code{#1}} 71 \newcommand{\farg}[1]{\code{#1}} 72 \newcommand{\keyword}[1]{\code{#1}} 73 \newcommand{\clarg}[1]{\texttt{#1}} 74 \newcommand{\vrbl}[1]{\code{#1}} 75 \newcommand{\excpt}[1]{\code{#1}} 76 \newcommand{\tpe}[1]{\code{#1}} 77 78 79 \newtheorem{maaritelma}{määritelmä} 80 \selectlanguage{finnish} 81 \makeindex 82 83 \author{jonne Itkonen} 84 \title{pieni johdatus \LaTeX in Listings pakettiin} 85 86 \begin{document} 87 88 \maketitle 89 %\tableofcontents 90 91 \fvset{frame=single,numbers=left,fontsize=\small} 92 93 \chapter{modulit ja paketit} 94 95 (Joo, tää on esimerkkiteksti, lue sorsa seuraavasta kappaleesta, niin 96 opit Listingsin käytön.) 97 98 Pythonissa modulin muodostaa yksi tiedosto määrittelyineen. Tiedoston 99 tarkentimena käytetään merkkijonoa.py. Python" tulkki kääntää 100 tiedoston.pyc " loppuiseksi tiedostoksi, jota sitten ajetaan. Tiedoston 101 alussa tulee ilmoittaa käytetty merkistökoodaus. Sen voi esittää emacs tai 102 vim" editorien tunnistamassa muodossa, tai Unicode" tunnisteella. Alla on 103 esimerkki modulista fib, joka laskee Fibonaccin lukuja (tiedoston nimi 104 on fibo.py ). 105 106 \begin{lstlisting} 107 # coding: iso 8859 15 108 # Fibonaccin numerot 109 def fib(n): # tulostetaan Fibonaccin sarja n:ään asti 110 a, b = 0, 1 111 while b < n: 112 print b, 113 a, b = b, a+b 114 115 def fib2(n): # palautetaan Fibonaccin sarja n:ään asti 116 result = [] 117 a, b = 0, 1 118 while b < n: 119 result.append(b) 120 a, b = b, a+b 121 return result 122 \end{lstlisting} 123 124 Modulia käytetään Pythonista tuomalla se sinne 125 \cmd{import}" komennolla. Moduli voi samalla tavalla tuoda 126 itseensä toisia moduleja. 127 128 \begin{verbatim} 129 >>> import fibo 130 >>> fibo.fib(1000) 131 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 132 >>> fibo.fib2(100) 133 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 134 >>> fibo. name 135 fibo 136 >>> 137 >>> fib = fibo.fib 138 >>> fib(500)
139 1 1 2 3 5 8 13 21 34 55 89 144 233 377 140 >>> from fibo import fib, fib2 141 >>> fib(500) 142 1 1 2 3 5 8 13 21 34 55 89 144 233 377 143 >>> from fibo import 144 >>> fib(500) 145 1 1 2 3 5 8 13 21 34 55 89 144 233 377 146 \end{verbatim} 147 148 Komento \cmd{import} on selitetty aiemmin. 149 150 Hakemistot, joissa moduleina toimivat tiedostot ovat, muodostavat 151 paketit. Jokaisesta pakettina toimivasta tiedostosta tulee löytyä tiedosto 152 nimeltä \code{ init.py}, joka sisältää paketin alustuskoodin, joskin 153 se voi olla tyhjä. Esimerkiksi tiedostopolun "./foo/bar/baz.py" takaa löytyvä 154 \mdl{baz} voidaan ottaa käyttöön \cmd{import}" komennolla 155 \code{import foo.bar.baz}. 156 157 158 \begin{landscape} 159 \chapter{tämä tiedosto \LaTeX " tiedostona} 160 \begin{multicols}{2} 161 \lstinputlisting[language=tex,frame=none]{ohjdoc.tex} 162 \end{multicols} 163 \end{landscape} 164 165 \end{document} 6