Přeskoč navigaci

Jednoduchá a profesionální sazba výpisu kódu v pdf

Momentálně se snažím převést množství odbornějších textů do PDF a narazil jsem na problém jak pěkně vysadit výpis programu.

A řešením je pro mne samozřejmě LaTeX, resp. jeho varianta pdfcslatex určená přímo pro naši mateřštinu a sazbu do PDF.

LaTeX jsem občas již používal, ale až nyní pro sazbu tak velkého textu (momentálně je pracovní verze na 250 stranách, ale něco se bude vypouštět). V mém případě bylo další významné plus, že texty jsem měl ve formátu podobném Wiki, takže jsem napsal konvertor do LaTeXu. Navíc pro mne bylo významné, že na začátku jen jednou nastavuji styl a pak jen vložím zdrojový kód a o zbytek se postará LaTeX.

O LaTexu je známo, jak vysoká je kvalita výsledné sazby (alias PDF). Na ukázku lze porovnat výstup z Wordu 2007 - klasický problém sazby jsou slitky

fi ve wordu

a LaTeX, kde slitek je automaticky generován místo např. kombinace fi, tak jak to má být:

slitel fi a LaTeX

Je perfektní, jak hodně věcí za něj LaTeX řeší, např. třeba automatické rozdělování textu tak, aby plynutí textu bylo oku příjemné.

Proto jsem byl zvědav, zda někdo udělal podporu pro sázení výpisů a nebyl jsem zklamán. Ve skutečnosti bych si na něco takového třeba ve Wordu ani netroufl, ale v LaTeXu je to tak primitivní, že to zvládne i cvičená opička. Je to za pomocí balíčku listing, který je součástí distribuce pro Windows http://miktex.org/miktex - mimochodem celkem příjemný kus SW, např. při chybějícím balíčku si ho sám stáhne a nainstaluje.

listing LaTeX

Zdrojový kód, na začátku deklarace a definice stylů a pak už se jde na to (od \begin{document}).

\batchmode
\documentclass[a4paper,12pt]{article}
\usepackage[cp1250]{inputenc}
\usepackage{czech}
\usepackage{courier}
\usepackage{color}
\usepackage{listings}
\usepackage{thumbpdf}
\usepackage{graphicx}
\usepackage[bookmarksopen,colorlinks,plainpages=false,urlcolor=blue]{hyperref}
\usepackage{url}
\definecolor{mygreen}{RGB}{0,100,0}
\lstset{tabsize=3,frame=lines,keywordstyle=\textbf,commentstyle=\color{mygreen}\textit,stringstyle=
\color{red},numbers=left,numberstyle=\tiny,numbersep=5pt,breaklines=true,
showstringspaces=false,basicstyle=\footnotesize,emph={label}}
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}

\begin{document}
Náš \texttt{záznam pro zamykání dat} jen tak na ukázku.

\begin{lstlisting}[language=Delphi,caption=Ukázka záznamu]
PPMonitorEx = ^PMonitorEx;
PMonitorEx = ^TMonitorEx;

TMonitorEx = record
strict private
  type
    PWaitingThread = ^TWaitingThread;
    TWaitingThread = record
      Next: PWaitingThread;
      Thread: Cardinal;
      WaitEvent: Pointer;
    end;
public
  // komentář
  class procedure Enter(AObject: TObject;
    const sDef:string = 'Lock'); overload; static; inline;
  class function Enter(AObject: TObject; Timeout: Cardinal): Boolean; overload; static;
  class procedure Exit(AObject: TObject); overload; static;
end;
\end{lstlisting}
\end{document}
Jaggni to|Linkuj

Komentáře k tomuto článku



Prosím o dodržovaní určitých pravidel (tj. žádné neslušné texty, reklamy a tak prostě podobně). Komentáře porušující tyto pravidla budou odstraněny.

Před vložením komentáře je nutno provést náhled, jedná se o ochranu proti spamu.

 

Vložení komentáře
  
 
 

 

© NetCode.cz, 2006-9 | Všechna práva vyhrazena
Provozováno na mém pikoCMS, vygenerováno: 26.9.2017 4:03:58

O mně

Informace o mé maličkosti a kontakt.

Lokální tagy

amd(1) amiga(1) apple(1) aspnet(2) audio(1) borland(5) C64(1) codegear(12) delphi(39) dotnet(9) dvd(1) electone(1) embarcadero(1) emulator(11) firebird(2) flash(1) freepascal(5) gamecube(3) gigabyte(2) google(3) hardware(48) holografie(1) homebrew(29) hry(12) ibm(14) iphone(7) jidlo(1) komponenty(1) konzole(15) latex(1) lenovo(17) migrace(1) modchip(3) moje(9) mplayer(3) mssql(1) multi-touch(3) native-api(1) navody(23) nintendo(53) Nintendo3DS(2) nintendo64(6) NintendoDS(15) onestation(2) opera(1) ot(1) palm(1) pascal(1) pdf(1) pic(2) pmd85(1) pocitace(1) print-server(2) programovani(21) programy(25) R400(1) recenze(6) retro(1) satelit(1) seamonkey(5) snes(3) svepomoci(1) technika(1) thinkpad(20) usb(1) video(3) vs(3) vykriky(12) web(7) webdesign(8) wii(83) wiimote(13) wiiware(1) wiki(2) windows(7) windows-mobile(1) wl500g(2) wtf(8) zivot(1) ZX-Spectrum(5)