Sazba zdrojových kód Jakub Kadl ík 20. 03. 2014 1
Obsah 1 Základní prost edí verbatim 3 2 Balí ek listings 3 3 Sazba kódu z externího souboru 5 4 Téma Solarized 5 4.1 Solarized light............................. 6 4.2 Solarized dark............................. 7 2
1 Základní prost edí verbatim Základní, LaTeXem nabízené, prost edí pro sazbu zdrojových kódu se nazývá verbatim. Nevyºaduje v bec ºádnou konguraci a lze ho okamºit pouºít. Kaºdá mince má ale dv strany a verbatim díky své jednoduchosti nepodporuje zvýraz ování syntaxe, ani p íli²né moºnosti kongurace. Hodí se spí²e pro ernobíle ti²t né texty. \ begin verbatim i n t main ( i n t argc, char ** argv ) p r i n t f (" Hello world " ) ; \end verbatim Listing 1: Ukázka zdrojového kódu: verbatim int main(int argc, char **argv) // Just print "Hello world" string to standard output printf("hello world"); Sázený zdrojový kód musí byt odsazován mezerami, nikoliv tabulátory. 2 Balí ek listings Balí ek listings naopak nabízí rozmanité moºnosti nastavení, zvýraz ování syntaxe mnoha r zných jazyk, výb r barev, vysázení kódu z externího souboru a dal²í zajímavé vlastnosti. Ve výchozím nastavení se p íli² neli²í od prost edí verbatim a jeho pouºití tedy není o moc sloºit j²í. Nejd íve je pot eba na íst balí ek listings, nastavit jej dle svých p edstav pomocí lstset a poté pouºít prost edí lstlistings podobn jako verbatim. Balí ek bohuºel ve výchozím nastavení nepodporuje kódování utf8, takºe pokud plánujeme sázet Non-ASCII znaky, musíme si je nejd íve denovat pomocí volby literate. Nastav íme s i barvi ky dle l i b o s t i \ usepackage c o l o r \ d e f i n e c o l o r mygreen rgb 0,0.6,0 \ d e f i n e c o l o r mygray rgb 0. 5, 0. 5, 0. 5 \ d e f i n e c o l o r mymauve rgb 0.58,0,0.82 Konfigurace prost ed í pro sazbu zdrojov ých kód \ usepackage l i s t i n g s \ l s t s e t Zá kladn í nastaven í 3
b a s i c s t y l e=\f o o t n o t e s i z e, Styl a typ p í sma captionpos=b, Pozice popisku showstringspaces=f a l s e, Kdyº true, odd l í slova podtr º í tky e. g. " Hello_world " t a b s i z e =4, Velikost tabul á toru ( po et mezer ) Barvi ky backgroundcolor=\c o l o r white, Pozad í commentstyle=\c o l o r mygreen, keywordstyle=\c o l o r blue, Komentá e Kl í ová slova jazyka s t r i n g s t y l e =\c o l o r mymauve, et zce Podpora esk ých znak l i t e r a t e= á \ ' a1 í \ ' i 1 é \ ' e 1 ý\ 'y1 ú\ 'u1 ó \ ' o1 \ve 1 ² \v s 1 \vc 1 \v r 1 º \vz 1 \vd1 \v t 1 \vn1 \ r u1 Á\ 'A1 Í \ ' I 1 É\ 'E1 Ý\ 'Y1 Ú\ 'U1 Ó\ 'O1 \ve1 \vs1 ƒ\vc1 \vr1 š\vz1 \vd1, \vt1 Œ\vN1 \ r U1 \ begin document \ begin l s t l i s t i n g [ language=c, gobble =8] i n t main ( i n t argc, char ** argv ) // Just print " Hello world " s t r i n g to standard output p r i n t f (" Hello world " ) ; \end l s t l i s t i n g \ end document Listing 2: Ukázka zdrojového kódu: lstlisting i n t main ( i n t argc, char ** argv ) // Just print " Hello world " s t r i n g to standard output p r i n t f ( " Hello world " ) ; Listing 3: Vysázení zdrojového kódu.2 Pokud máme zdrojový kód dokumentu odsazovaný pomocí tabulátor nebo mezer na za átku ádk, jakoºe asi máme, prost edí bude pon kud více posunuté sm rem doprava (práv o úrove odsazení v dokumentu). To lze vy e²it pomocí volby gobble. Ta ze za átku kaºdého ádku smaºe daný po et znak. 4
3 Sazba kódu z externího souboru Balí ek listings také podporuje vysázení zdrojového kódu z externího souboru. Z ejm si dovedete p edstavit, ºe to zejména v p ípad del²ích kód výrazn zlep²uje p ehlednost zdrojového souboru dokumentu. \ l s t i n p u t l i s t i n g [ language=c] sources / l s t i n p u t l i s t i n g. c Listing 4: Ukázka zdrojového kódu: lstinputlisting 4 Téma Solarized Solarized je oblíbené barevné téma pouºívané zejména v linuxových konzolích a textových editorech. Téma se skládá z dvou perfektn vylad ných palet pro sv tlý i tmavý podklad. Nyní si vytvo íme ob témata jako styly pro listings. Mezi takovýmito styly je moºné se libovoln p epínat a pouºívat je nap í mnoha dokumenty. D e f i n i c e S o l a r i z e d barev \ d e f i n e c o l o r solarized@base 03HTML002B36 \ d e f i n e c o l o r solarized@base 02HTML073642 \ d e f i n e c o l o r solarized@base 01HTML586 e 75 \ d e f i n e c o l o r solarized@base 00HTML657b83 \ d e f i n e c o l o r solarized@base 0HTML839496 \ d e f i n e c o l o r solarized@base 1HTML93a1a1 \ d e f i n e c o l o r solarized@base 2HTMLEEE8D5 \ d e f i n e c o l o r solarized@base 3HTMLFDF6E3 \ d e f i n e c o l o r solarized@yellow HTMLB58900 \ d e f i n e c o l o r solarized@orange HTMLCB4B16 \ d e f i n e c o l o r solarized@red HTMLDC322F \ d e f i n e c o l o r solarized@magenta HTMLD33682 \ d e f i n e c o l o r s o l a r i z e d @ v i o l e t HTML6C71C4 \ d e f i n e c o l o r solarized@blue HTML268BD2 \ d e f i n e c o l o r solarized@cyan HTML2AA198 \ d e f i n e c o l o r solarized@green HTML859900 Listing 5: Denice Solarized barev 5
4.1 Solarized light D e f i n i c e s t y l u \ l s t d e f i n e s t y l e s o l a r i z e d l i g h t b a s i c s t y l e=\f o o t n o t e s i z e \ t t f a m i l y \ c o l o r solarized@base 00, backgroundcolor=\c o l o r solarized@base 3, r u l e s e p c o l o r=\c o l o r solarized@base 3, numberstyle=\tiny \ c o l o r solarized@base 1, keywordstyle=\c o l o r solarized@green, s t r i n g s t y l e =\c o l o r solarized@cyan \ ttfamily, i d e n t i f i e r s t y l e =\c o l o r solarized@blue, commentstyle=\c o l o r solarized@base 1, emphstyle=\c o l o r solarized@red, Vysázen í kódu s pouº i t ím s t y l u s o l a r i z e d l i g h t \ l s t i n p u t l i s t i n g [ language=c, s t y l e=s o l a r i z e d l i g h t ] sources /main. c Listing 6: Téma Solarized light zdrojový kód int main ( int argc, char ** argv ) // Just print " Hello world " string to standard output printf (" Hello world " ); Listing 7: Téma Solarized light vysázené 6
4.2 Solarized dark D e f i n i c e s t y l u \ l s t d e f i n e s t y l e s o l a r i z e d dark b a s i c s t y l e=\f o o t n o t e s i z e \ t t f a m i l y \ c o l o r solarized@base 0, backgroundcolor=\c o l o r solarized@base 03, r u l e s e p c o l o r=\c o l o r solarized@base 03, numberstyle=\tiny \ c o l o r solarized@base 01, keywordstyle=\c o l o r solarized@green, s t r i n g s t y l e =\c o l o r solarized@cyan \ ttfamily, i d e n t i f i e r s t y l e =\c o l o r solarized@blue, commentstyle=\c o l o r solarized@base 01, emphstyle=\c o l o r solarized@red, Vysázen í kódu s pouº i t ím s t y l u s o l a r i z e d dark \ l s t i n p u t l i s t i n g [ language=c, s t y l e=s o l a r i z e d dark ] sources /main. c Listing 8: Téma Solarized dark zdrojový kód int main ( int argc, char ** argv ) // Just print " Hello world " string to standard output printf (" Hello world " ); Listing 9: Téma Solarized dark vysázené 7
Reference [1] C. Heinz, B. Moses, J. Homann: The Listings Package ftp://ftp.tex. ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf [2] http://en.wikibooks.org/wiki/latex/source_code_listings [3] http://tex.stackexchange.com/questions/30512/ how-to-insert-code-with-accents-with-listings/85947#85947 [4] http://ethanschoonover.com/solarized 8