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=
– umístění jako plovoucí objekt
Rozsah tisku firstline=,
lastline= – první a poslední
vypisovaný řádek linerange={f-l,…} – disjunktní rozsahy výpisu
Vzhled – 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ů basicstyle=<styl>
Vybrané parametry II
Bílé znaky – zobrazení mezer showstringspaces=<true|false> – mezery v řetězcích showtabs=<true|false> – zobrazení tabulátorů tab= – značka zobrazující tabulátorů showspaces=<true|false>
Čísla řádků – pozice číslování numberstyle=<styl> – vzhled čísel řádků stepnumber= – krok mezi číslovanými řádky numbersep= – odsazení od číslování numbers=<none|left|right>
Vybrané parametry III
Rámování frame=<none|leftline|topline|
bottomline|lines|single|shadowbox> – vykreslení rámečku kolem výpisu frame= – kresba jednotlivých čar
Vkládání maker LaTeXu – příkazy v komentářích mathescape=<true|false> – matematický mód texcl=<true|false>
Styly – definice stylu (= znovupouzitelny seznam parametrů) style=<styl> – použití stylu \lstdefinestyle{název}{parametry}
Vybrané parametry IV
Titulky – nečíslovaný titulek caption=<[krátký]titulek> – číslovaný titulek label= – odkaz (přes \ref) nolol – nezařazen do seznamu výpisů captionpos= – pozice titulku \lstlistingname – makro názvu titulku title=
Seznam výpisů kódů – vysází seznam výpisů \lstlistlistingname – makro nadpisu seznamu \lstlistoflistings
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] – řádkový komentář comment=[s|n]{odd1}{odd2} – 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