Ukázka programu dokumentovaného DocBy.TeXem

Předpokládejme hypotetický program lup napsaný v jazyce C. Program má tři moduly: base.c, win.c a main.c, ze kterých vznikají objekty base.o, win.o a main.o, které linker spojí do výsledného programu lup. Ke každému modulu napíše autor dokumentace zvláštní TeXový soubor, tj. base.d, win.d a main.d a dále napíše hlavní soubor dokumentace lup.tex. Všechny zmíněné soubory vypadají kupříkladu takto


lup.tex
\def\projectversion{Pre-01a, zatím nefunguje}

\input docby.tex

\title   Program lup -- dokumentace ke zdrojovým textům

\author  Progr a Mátor

\dotoc      % tady bude obsah
\bookmarks  % vytvoříme také strukturovaný obsah

\sec Zdrojové texty

Zdrojové texty programu "lup" jsou rozděleny do tří modulů. 
V "base.c" jsou definovány pomocné funkce a v "base.h" jsou 
jejich prototypy. Podobně ve "win.c" jsou funkce pro okenní 
záležitosti a "win.h" obsahuje jejich prototypy. Konečně 
"main.c" obsahuje hlavní funkci programu.

\module base
\module win
\module main
\doindex  % v tomto místě bude sestaven rejstřík
\bye

base.d
Struktura \dg dvojice se používá jako návratová hodnota funkce
"uzasna_funkce" a sdružuje dvě hodnoty typu "float".
\ins c dvojice

Funkce \dg [struct dvojice] uzasna_funkce() si vezme jeden parametr 
"p" a vrátí ve struktuře "dvojice" dvojnásobek a trojnásobek 
tohoto parametru. 
\ins c uzasna_funkce

base.c
#include 

//: dvojice

struct dvojice {
  float x, y;
};

//: uzasna_funkce

struct dvojice uzasna_funkce (float p)
{
  struct dvojice navrat;
  navrat.x = 2*p; // tady nasobim p dvema
  navrat.y = 3*p; // tady nasobim p tremi
  return navrat;
} 

win.d
Hlavním obsahem tohoto modulu je implementace funkce 
\dg [win] uzasne_wokno(), 
která založí okno programu "lup". Návratová hodnota
této funkce obsahuje inicializovanou strukturu "win" tohoto okna.
\ins c uzasne_wokno

win.c
//: uzasne_wokno

win uzasne_wokno ()
{
  win navrat;
  ...
  return navrat;
}

main.d
Funkce \dg [int] main() našeho programu nejprve přečte 
parametry příkazové řádky, pak v rychlosti
spočítá výsledek, přičemž využije funkci "uzasna_funkce". Nakonec 
pomocí funkce "uzasne_wokno" zobrazí uživatelsky přívětivým způsobem 
výsledek.
\ins c main

main.c
#include 

//: main

int main (int argc, char** argv)
{
  int i;
  inicializuj();
  pocitej();
  for (i=0; i 


Dokumentaci zpracujeme příkazem pdfcsplain lup.tex. Z hlavního souboru lup.tex se prostřednictvím sekvence \module přečtou postupně soubory *.d a v nich jsou sekvence \ins, které říkají, jaké části zdrojového kódu se mají vložit do dokumantace.

Kvůli synchronizaci odkazů je nutné TeXovat vícekrát. Po třetím průchodu TeXem máme na terminálu hlášení: OK, all references are consistent.

Výsledek po zpracování vypadá takto.

Povšimneme si, že dokumentovaná slova (vyznačená pomocí \dg) jsou zvýrazněna červeně, všechny jejich další výskyty jsou modré aktivní odkazy na cíl, kde je slovo dokumentováno (to udělal encTeX automaticky), pod čarou máme dokumentovaná slova na dané stránce znovu včetně seznamu všech stránek, na kterých se vyskytují. Vznikl automaticky obsah a rejstřík.

Toto je jen velmi jednoduchá ukázka. DocBy.TeX toho umí daleko více (jmenné prostory, sofistikované vymezení vkládaných úseků zdrojového kódu, prolinkovaná dokumentace uživatelská a technická, křížové reference, ...). Viz jeho dokumentaci.

Zpět na stránku DocBy.TeXu.