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
\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
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
#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; }
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
//: uzasne_wokno win uzasne_wokno () { win navrat; ... return navrat; }
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
#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.