Sazba zdrojových kódů (balíček listings) Aleš Haladej HAL191
Úvod balíček listings sazba nejen zdrojových kódů (zvýraznění syntaxe) sazba kompletních zdrojových souborů, úryvků kódu v prostředí podobném verbatim, či přímo do textu jako příkazem \verb mnoho parametrů pro kontrolu výstupu podpora mnoha programovacích jazyků, možnost dodefinovat další jazyky
Sazba kódu vložení balíčku: \usepackage{listings} příkazy: \lstset globální nastavení \lstinline úryvky kódu přímo v textu \lstinputlisting sazba souborů prostředí lstlisting sazba ůseků kódu parametry: seznam klí č=hodnota
Podporované jazyky ABAP, ACSL, Ada, Algol, Ant, Assembler, Awk, bash, Basic, C, C++, Caml, CIL, Clean, Cobol, Comal 80, command.com, Comsol, csh, Delphi, Eiffel, Elan, erlang, Euphoria, Fortran, GCL, Gnuplot, Haskell, HTML, IDL, inform, Java, JVMIS, ksh, Lingo, Lisp, Logo, make, Mathematica, Matlab, Mercury, MetaPost, Miranda, Mizar ML, Modula-2, MuPAD, NASTRAN, Oberon-2, OCL, Octave, Oz, Pascal, Perl, PHP, PL/I, Plasm, PostScript, POV, Prolog, Promela, PSTricks, Python, R, Reduce, Rexx, RSL, Ruby, S, SAS, Scilab, sh, SHELXL, Simula, SPARQL, SQL, tcl, TeX, VBScript, Verilog, VHDL, VRML, XML, XSLT pro některé jazyky je definováno více dialektů výběr parametrem language=<[dialekt]jazyk>
Ukázka použití \documentclass{article} \usepackage{listings} \begin{document} % globální nastavení \lstset{language=java,basicstyle=\small} % kód uvnit ř textu Text \lstinline private int index; text pokracuje % sazba zdrojové souboru \lstinputlisting[numbers=left]{helloworld.java} % segment kódu \begin{lstlisting}[language=pascal,title=deklarace] var i: integer; \end{lstlisting} \end{document}
Vybrané parametry I Umístění float=<tbph> umístění jako plovoucí objekt Rozsah tisku firstline=<n>, lastline=<n> první a poslední vypisovaný řádek linerange={f-l, } disjunktní rozsahy výpisu Vzhled basicstyle=<styl> základní styl keywordstyle=<styl> styl klíčových slov identifierstyle=<styl> styl neklíčových slov commentstyle=<styl> styl komentářů stringstyle=<styl> styl řetězců
Vybrané parametry II Bílé znaky showspaces=<true false> zobrazení mezer showstringspaces=<true false> mezery v řetězcích showtabs=<true false> zobrazení tabulátorů tab=<znač ka> značka zobrazující tabulátorů Čísla řádků numbers=<none left right> pozice číslování numberstyle=<styl> vzhled čísel řádků stepnumber=<n> krok mezi číslovanými řádky numbersep=<velikost> odsazení od číslování
Vybrané parametry III Rámování frame=<none leftline topline bottomline lines single shadowbox> vykreslení rámečku kolem výpisu frame=<trbltrbl> kresba jednotlivých čar Vkládání maker LaTeXu texcl=<true false> příkazy v komentářích mathescape=<true false> matematický mód Styly \lstdefinestyle{název}{parametry} definice stylu (= znovupouzitelny seznam parametrů) style=<styl> použití stylu
Vybrané parametry IV Titulky title=<titulek> nečíslovaný titulek caption=<[krátký]titulek> číslovaný titulek label=<název> odkaz (přes \ref) nolol nezařazen do seznamu výpisů captionpos=<tb> pozice titulku \lstlistingname makro názvu titulku Seznam výpisů kódů \lstlistoflistings vysází seznam výpisů \lstlistlistingname makro nadpisu seznamu
Definice vlastního jazyka \lstdefinelanguage[dialekt]{jazyk} {parametry} definice nového jazyka (v preambuli) keywords={seznam klíčových slov} directives={seznam direktiv} sensitive=<true false> závislost na velikosti znaků string=[b d bd]{oddělova č } typ řetězců comment=[l]<oddělova č > řádkový komentář comment=[s n]{odd 1 }{odd 2 } blokový komentář \lstalias[alias]{alias}[dialekt] {jazyk} alias (dialektu) jazyka
Příklad definice jazyka \lstdefinelanguage{pseudocode}{ } morekeywords={begin,end,for,each,to,while, do,return,break,if,then,else}, sensitive=false, morestring=[b]', morestring=[b]", morecomment=[l]\#, morecomment=[s]{\%-}{-\%}
Odkazy http://ftp.cstug.cz/pub/tex/ctan/macros/la tex/contrib/listings/listings.pdf uživatelská a referenční příručka http://ftp.cstug.cz/pub/tex/ctan/macros/la tex/contrib/listings.zip ke stažení http://en.wikibooks.org/wiki/latex/packag es/listings stručný nástin
Děkuji za pozornost