Sazba v LaTeXu jako programovací jazyk

LaTeX je systém pro sazbu dokumentů, který nahrazuje pojem Co-vidíš-je-co-získáš standardními myšlenkami z běžných programovacích jazyků. Mark Harman demonstruje sílu této dědičnosti.

Každý, kdo někdy používal editor, textový procesor nebo DTP balík typu What-You-See-Is-What-You-Get (WYSIWYG), se pravděpodobně setkal se dvěma frustracemi:-

WYSIWYG se vždy zdá být lží To, co vidíte, je spíše podobné tomu, co dostanete, nebo to, co vidíte, je téměř vždy to, co dostanete, nebo to, co vidíte, by bylo to, co dostanete, kdyby vaše tiskárna měla správné fonty, ale to, co vidíte, je málokdy přesně to, co dostanete.

WYSIWYG je omezující Předpokládejme, že nemůžete vidět to, co chcete? To, co vidíte, je to, co dostanete, má další a tichý důsledek, že to, co se vám nepodaří vidět, také nemůžete dostat. Jak často jste chtěli, aby něco vypadalo trochu jinak (nebo třeba úplně jinak), ale váš editor vám to neumožnil?

LaTeX (vyslovuje se Lateck) je systém pro sazbu, který se neřídí přístupem WYSIWYG. Místo toho je inspirován programovacími jazyky. Zdědil všechny výhody programovacích jazyků a některé jejich nevýhody. Místo sestavování dokumentu na obrazovce (přístup WYSIWYG) je dokument LaTeXu programem, který říká systému LaTeX, jak má dokument vytvořit. Program se zkompiluje pomocí kompilátoru LaTeXu a vytvoří dokument, který lze vytisknout nebo prohlížet.

Pro někoho, kdo zná přístup WYSIWYG, to může znít trochu zvláštně, ale každý, kdo má rád (nebo oceňuje) sílu a flexibilitu vysokoúrovňového programovacího jazyka, brzy zjistí, že LaTeX je prostě lepší způsob navrhování dokumentů.

V tomto článku vám vysvětlím něco málo z jazyka LaTeX, dost na to, abyste si mohli stáhnout bezplatný systém LaTeX a napsat několik běžných dokumentů. Nebude čas věnovat se všem vlastnostem LaTeXu (to by zabralo celou knihu), ale doufám, že vás zanechám se silným pocitem, jak by psaní dokumentu mohlo být s použitím LaTeXu podobnou činností jako psaní programu.

Jednoduchý zdrojový soubor LaTeXu

Obrázek 1 obsahuje jednoduchý zdrojový soubor LaTeXu. První řádek je předdefinovaný příkaz LaTeXu. Všechny příkazy začínají znakem zpětného lomítka. Příkaz v prvním řádku nastavuje globální vlastnosti dokumentu, který má být napsán. Styl dokumentu článek je styl používaný pro krátký článek. Mezi další styly patří book, report, thesis atd. Každý styl dokumentu mění globální parametry, které popisují vzhled dokumentu. Například v prostředí knihy se vytvářejí běžící záhlaví uvádějící název kapitoly a autora na střídavých stránkách.

Stejně jako všechny dobré programovací jazyky je to vše samozřejmě zcela konfigurovatelné. Jako u většiny programovacích jazyků však platí, že čím větší flexibilitu chcete, tím více potřebujete znát základní programovací jazyk. Naštěstí výchozí nastavení všech prostředí LaTeXu poskytují velmi příjemné výsledky, takže je možné se dostat daleko, aniž byste museli znát příliš mnoho z podkladového jazyka. To, co dostanete, bude pravděpodobně odpovídat vašim představám, a pokud ne, pak to alespoň budete moci změnit.

Samotný text dokumentu je obsažen v příkazech \begin{document} …. \end{document}, \begin{} a \end{} jsou příkazy, které otevírají a zavírají prostředí. Všechny dokumenty (a jejich části) jsou psány v prostředí. Prostředí můžeme také vnořovat, jak uvidíme později.

Znaky mezery nejsou pro LaTeX důležité; jedna mezera je stejně dobrá jako sto. Nové řádky lze také vkládat kamkoli, ale dva nebo více nových řádků se používají k označení bodu, ve kterém jeden odstavec končí a druhý začíná. Při tisku výsledného dokumentu LaTeX text zarovná doleva a doprava (vloží pomlčky, kde by čisté zarovnání vedlo k neatraktivnímu výstupu).

Objemný dokument se obvykle skládá z několika oddílů, které mohou obsahovat pododdíly. Nová sekce se do LaTeXu zavádí příkazem \section a nová podsekce příkazem \subsection. Zdrojový kód LaTeXu na obrázku 2 popisuje dokument se dvěma sekcemi, jejichž názvy budou úvod a odůvodnění. Všimněte si, že ve zdrojovém kódu nemusíme sekcím přidělovat čísla sekcí. LaTeX to udělá za nás při kompilaci dokumentu. Úvod tedy bude sekcí číslo 1 a zdůvodnění sekcí číslo 2. Pokud bychom prohodili pořadí, v němž se tyto dvě sekce vyskytují (vystřižením a vložením zdrojového kódu), pak se zdůvodnění stane sekcí 1, zatímco úvod se automaticky stane sekcí 2.

Nyní vyvstává důležitá otázka: Jak bych mohl odkazovat z jedné sekce do druhé? Předpokládejme například, že se chci v sekci odůvodnění odkázat na sekci úvod. Způsob, jakým toho dosáhneme, ilustruje první výhodu, kterou získáme díky způsobu práce v LaTeXu.

Symbolické odkazy

Protože zdrojový soubor LaTeXu je program, můžete k odkazování na části dokumentu používat symbolické názvy. Díky tomu je křížové odkazování příjemné, protože křížový odkaz je logická entita, která odkazuje na nějakou pojmenovanou část dokumentu. Pokud by se tato pojmenovaná část dokumentu měla přesunout, stačí ji překompilovat.

Pro zavedení symbolického odkazu použijeme příkaz \label{} a pro odkaz na něj použijeme příkaz \ref{}. To ilustruje obrázek 3. Příkaz \label{intro} zavádí symbolické jméno, label, jehož hodnota závisí na kontextu, ve kterém se příkaz \label objeví. V tomto případě, protože je příkaz \label použit v první části dokumentu, bude hodnota přiřazená příkazu intro 1. Příkaz \ref{} jednoduše vytvoří hodnotu štítku. Pokud nyní přesunu úvod na nové místo, například za oddíl odůvodnění, změní se hodnota příkazu intro na 2, a křížový odkaz v odůvodnění tak bude ukazovat na nové místo úvodu oddílu.

Tento styl zápisu nás nutí přemýšlet o dokumentu spíše na logické než na fyzické úrovni. Bylo by hloupé psát, jak jsme viděli dříve například v sekci \ref{intro}, protože můžeme přesunout označení intro na místo za odkazem. Místo toho, abychom o našem dokumentu uvažovali jako o monolitu textu vyskytujícího se v určitém pořadí, uvažujeme o něm na vyšší úrovni abstrakce, jako o souboru sekcí, které můžeme volně přesouvat. Sekce z jednoho dokumentu můžeme dokonce znovu použít v jiném dokumentu, a pokud jsou naše symbolické názvy jedinečné, zjistíme, že všechny křížové odkazy fungují správně.

Několik dalších prostředí

LaTeX má spoustu užitečných předdefinovaných prostředí. Předpokládejme, že chceme vytvořit posloupnost bodů pomocí odrážek. Můžeme to provést pomocí prostředí itemize, zdrojový kód na obrázku 4 vytvoří dokument, který obsahuje seznam tří hlavních stavů hmoty, jeden na řádek a před každým z nich je umístěna značka odrážky. V mnoha ohledech se způsob tvorby dokumentu v LaTeXu podobá způsobu tvorby v HTML. Například prostředí itemize se spíše podobá prostředí nesetříděného seznamu v HTML.

Někdy chceme položky zařadit do setříděného, očíslovaného seznamu. Toho dosáhneme pomocí prostředí enumerate. Na obrázku 5 je zobrazena vnořená posloupnost vyčíslených položek popisujících čtyři epochy geologického času a období v nich. LaTeX používá pro každou úroveň vnoření jiný systém číslování (arabské číslice pro první úroveň, abecední znaky pro druhou úroveň, římské číslice pro třetí úroveň). To lze, stejně jako vše ostatní, změnit, pokud si to přejeme.

Chceme-li část textu zdůraznit, uzavírá se do prostředí em (emphasise), takže jednoduše napíšeme \begin{em} help! \end{em} she cried. abychom zdůraznili slovo help (a vykřičník, který za ním následuje).

Procedury

V běžném programovacím jazyce dává možnost definovat procedury programátorovi značnou flexibilitu. Také v LaTeXu můžeme definovat procedury pro rozvržení textu. Nejjednodušší formou procedury je procedura bez parametrů. Umožňuje nám pojmenovat nějakou část zdrojového kódu a pak ji vyvolat. Předpokládejme, že píši dokument, ve kterém chci odkázat na nějaký kus ovoce, ale ještě jsem se nerozhodl, zda to má být jablko, pomeranč nebo hruška. Mohl bych zavést proceduru nazvanou fruit a do jejího těla vložit libovolný název ovoce. Až se konečně rozhodnu, na které ovoce chci odkazovat, budu muset změnit pouze tělo procedury; všechna místa, kde je procedura volána, pak automaticky zohlední změnu jejího těla.

V LaTeXu se procedura nazývá příkaz a nová procedura se vytváří příkazem \newcommand. Příkazy se často nazývají makra, protože LaTeX rozšiřuje jejich volání, když se s nimi setká v těle dokumentu. Obrázek 6 ilustruje použití jednoduchého bezparametrického makra. Po zkompilování vytvoří zdrojový kód LaTeXu na tomto obrázku text První jablko, které se objeví, bude první jablko, které sním.

Abychom byli zcela spravedliví, tohoto by se dalo dosáhnout, možná jednodušeji, pomocí WYSIWYG textového procesoru, prostým provedením vyhledávání a nahrazování. (Samozřejmě by to nefungovalo, kdyby věta byla První ovoce, které se objeví, je jablko mého oka!) Toto je však pouze jednoduchý příklad toho, co můžeme s makry LaTeXu dělat. Skutečně se uplatní, když jim poskytneme parametry.

Parametry

Předpokládejme, že píšu dokument o práci s poli. Možná budu chtít popsat algoritmus pro nalezení největšího prvku pole. Aby byl dokument obecnější a abych nemusel přepisovat jeho velké části, mohl bych vytvořit dvě verze, každou specifickou pro určitý programovací jazyk, například Basic a C. Pomocí příkazů se mohu vyhnout použití specifické syntaxe polí, nebo alespoň mohu zachytit syntaktické rozdíly v jediném příkazu, což mnohem usnadní přizpůsobení mého dokumentu různým programovacím jazykům.

Obrázek 7 to ilustruje. V definici příkazu \lookup říká překladači LaTeXu, že příkaz přijímá dva parametry, přičemž první je označován jako #1 a druhý jako #2. Při volání příkazu se parametry zadávají jeden za druhým v kudrnatých závorkách. Takže volání \lookup{S}{2}, vytvoří text S(2). Toto je základní verze příkazu \lookup. Pokud jej nahradíme verzí na obrázku 8, získáme stejný dokument, ale s odkazy na pole v hranatých závorkách. Toto je verze dokumentu v jazyce C. Všimněte si, že rozdíl mezi oběma zdrojovými dokumenty LaTeXu jsou přesně dva znaky, konkrétně dva znaky, které tvoří rozdíl mezi odkazy na pole v jazycích Basic a C.

Stejně jako u procedur programovacích jazyků je možné volat jednu proceduru z těla jiné a použít výsledek volání procedury jako vlastní parametr jiné. Tak například můžeme napsat \lookup{A}{\lookup{B}{1}}, čímž vznikne buď text A(B(1)), nebo A], podle toho, zda používáme Basic nebo C verzi příkazu \lookup.

Proměnné

LaTeX má vlastní proměnné, nad kterými můžeme provádět jednoduchou aritmetiku (jsou možné i pokročilejší formy aritmetiky, ale pro sazbu obvykle stačí sčítání). Podívám se na dva jednoduché příklady způsobu, jakým můžeme proměnné používat, přičemž obě budou programátorům dobře známé: proměnná čítač a proměnná příznak.

Předpokládejme, že chceme do dokumentu zařadit posloupnost očíslovaných bodů. Pro číslování jednotlivých bodů můžeme použít proměnnou čítač a napsat několik jednoduchých příkazů pro řízení číslování. To ilustruje obrázek 9. Čítač je deklarován pomocí příkazu \newcounter. Na konkrétní hodnotu se nastaví příkazem \setcounter. Příkaz \point slouží k vypsání aktuálního čísla bodu a ke krokování čítače (přičtení jedničky k jeho hodnotě). Příkaz \the<name> pro nějaký čítač <name> způsobí vypsání hodnoty proměnné. Tento příkaz lze použít s libovolnou proměnnou, nejen s tou, kterou zavedl uživatel, takže například \thesection vypíše aktuální hodnotu proměnné section. Na obrázku 9 použijeme příkaz \point k vypsání tří bodů. Příjemnou vlastností tohoto přístupu je, že můžeme měnit pořadí, v jakém se body vyskytují, a číslování se podle toho změní.

Nyní se podíváme, jak můžeme proměnné použít jako příznaky pro výběr toho, jaký text se v dokumentu vytvoří. Jak uvidíme, kombinace příznaků a maker nám umožňuje psát velmi obecné dokumenty, které lze instancovat pouhou volbou vhodné hodnoty příznaku. Uvažujme znovu problém psaní dokumentu o polích, kde jsme chtěli dva tvary příkazu \lookup, jeden pro Basic a druhý pro C. Bylo by lepší, kdybychom mohli v našem zdrojovém kódu LaTeXu použít příznak, který by určil, zda má být jazyk C nebo Basic. Jediné, co bychom pak museli udělat, je dát příznaku správnou hodnotu před kompilací dokumentu. To ilustruje obrázek 10.

Nejprve je třeba do deklarace documentstyle zahrnout volbu ifthen. To nám umožní později použít příkaz \ifthenelse. Dále deklarujeme čítačovou proměnnou language, která je nastavena na 1, pokud má být jazykem Basic, a na 0, pokud má být jazykem C. Symbol % používá LaTeX pro komentáře; jakýkoli text, který se objeví za symbolem % (a před koncem řádku), kompilátor LaTeXu ignoruje. Dále nastavíme čítač na 1 pomocí příkazu \setcounter{jazyk}{1}, takže text, který budeme vytvářet, bude v tomto případě specializovaný pro Basic. Této specializace dosáhneme pomocí upravené verze příkazu \lookup. Nová verze \lookup používá k testování hodnoty proměnné jazyk vestavěný příkaz \ifthenesle. Formát příkazu \ifthenelse je \ifthenelse{<test>}{<ten_odkaz>}{<další_odkaz>}. Chová se stejně jako příkaz if v běžném programovacím jazyce. Pokud se <test> vyhodnotí jako true, vytvoří se text v textu v <then_branch>, pokud false, vytvoří se text v <else_branch>.

Pomocí tohoto příznaku můžeme napsat spoustu příkazů, z nichž každý vytvoří text pro určitý druh příkazu, přičemž jazyk závisí na hodnotě proměnné čítače příznaku. Tímto způsobem bychom mohli napsat obecný dokument o programování a jednoduše vhodně nastavit příznak, aby vznikla požadovaná specializovaná verze dokumentu.

Obrázek 10 ukazuje, jak bychom to mohli udělat. Definujeme příkazy, které vytvoří syntaxi jazyka Basic nebo C pro vyhledávání v poli (pomocí makra \lookup, jak je popsáno výše), aktualizaci pole a ještě složitěji příkaz, který vytvoří příslušnou syntaxi pro smyčku for. Poslední z nich vyžaduje další vysvětlení.

Rozdíl mezi smyčkou for v jazyce C a Basic je z velké části syntaktický a my můžeme využít flexibility LaTeXu, abychom se vyhnuli těmto syntaktickým detailům. Příkaz \forloop použil jazyk čítače příznaků k rozhodnutí, zda se čtyři prvky smyčky rozloží ve stylu Basicu nebo C. To nám umožňuje napsat nějaký text o inicializaci pole a smyčkách, aniž bychom se museli rozhodovat, na který jazyk se bude cílový dokument odkazovat.

Všimněte si, že v C verzi syntaxe smyčky for jsou kudrnaté závorky, které uzavírají příkazy těla smyčky, zapsány jako \{ …. \}, a ne jako { … }. Je to proto, že symboly kudrnatých závorek již mají pro LaTeX nějaký význam, takže abychom jej přiměli k vypisování kudrnatých závorek, předřadíme jim zpětné lomítko.

Na obrázku 10 jsme nastavili jazyk počítadla na 1, takže vytvořený výstup bude pro Basic. Ze zdrojového kódu na obrázku 10 vytvoří LaTeX výstup na obrázku 11. Pokud chceme vytvořit dokument, který říká totéž o polích jazyka C, musíme jednoduše změnit řádek \setcounter{jazyk}{1} na \setcounter{jazyk}{0}. Je to tak snadné.

Matematika

LaTeX je často (a právem) chválen za způsob, jakým umožňuje sazbu složité matematiky. Mnoho moderních matematických, počítačových a jiných přírodovědných a technických textů je sazeno pomocí LaTeXu.

Matematický text může být buď sazený v řádku, v takovém případě se zobrazuje ve větě, v níž je napsán, nebo v režimu zobrazení, v takovém případě se zobrazuje jakoby vystředěný na vlastním zobrazeném řádku. Pro použití příkazů jsou k dispozici všechny standardní matematické symboly a formy textu. Vzhledem k tomu, že LaTeX existuje již tak dlouho a byl používán, vyvíjen a vylepšován mnoha matematiky po celém světě, je velmi nepravděpodobné, že by existovala nějaká forma matematického výstupu, kterou by někdo neřešil. Při rychlém procházení vaší knihovničky pravděpodobně objevíte poděkování LaTeXu v několika učebnicích informatiky a matematiky, protože se často používá k přípravě technických knih, což umožňuje autorovi (autorům) poskytnout vydavateli kopii připravenou pro fotoaparát.

Existuje také prosperující komunita uživatelů LaTeXu, která zajišťuje, že všechny tyto cenné informace jsou shromažďovány, udržovány a aktualizovány. Veškerý vývoj LaTeXu je zcela zpětně kompatibilní, takže se nemusíte obávat, že by vaše dokumenty nějak zastaraly.

Použití

Odhaduji, že začít produktivně používat LaTeX trvá dva dny až týden. Mnoho čtenářů to může považovat za nepřijatelné ve srovnání s dobou náběhu u WYSIWYG editorů. Jistě, pokud musíte připravovat pouze dokumenty, jako jsou dopisy a poznámky, pak LaTeX pravděpodobně nestojí za úvahu. Pokud se však zabýváte tvorbou velkého množství textu a jste připraveni investovat do systému, který vám v konečném důsledku může ušetřit měsíce práce, pak může být LaTeX řešením.

Jedna z nehmotných, ale nejpřitažlivějších výhod, kterou uživatelé LaTeXu pociťují, vychází ze způsobu, jakým LaTeX, podobně jako dobrý programovací jazyk, podporuje opakované použití. Velmi rychle zjistíte, že jste si vytvořili sadu vlastních maker, která vám umožní přizpůsobit si dokumenty podle vlastního vkusu. Opakovaného použití částí dokumentu v jiném dokumentu lze dosáhnout bez námahy a bez problémů. Tato bezproblémovost vyplývá ze dvou aspektů přístupu LaTeXu. Symbolické pojmenování částí dokumentu umožňuje automatickou aktualizaci křížových odkazů při úpravách dokumentu. Koncept prostředí znamená, že stejný kus zdrojového textu může vypadat jinak, je-li zařazen do různých kontextů. To je samozřejmě v přímém rozporu s principem WYSIWYG, ale právě v tom je zásadní síla LaTeXu. Mnoho počítačových časopisů , konferencí a vydavatelů poskytuje své vlastní stylové soubory LaTeXu, které po začlenění do zdrojového souboru LaTeXu automaticky rozvrhnou dokument do podoby požadované pro publikování.

Kam dál

Pokud máte zájem vyzkoušet si LaTeX na vlastní kůži, verzi pro MS-Windows můžete získat (zdarma) na adrese http://www.eece.ksu.edu/~khc/tex.html. LaTeX je standardně dodáván na většině platforem UNIX a s většinou distribucí Linuxu, takže pokud používáte některou z nich, zkuste napsat man latex. Na adrese ftp.tex.ac.uk existuje stránka FTP obsahující mnoho užitečných nástrojů LaTeXu, maker a souvisejících dokumentů.

O psaní dokumentů v LaTeXu existují dvě nepostradatelné knihy. Obě jsou velmi čtivé a poučné. LaTeX A Document Preparation System od Leslieho Lamporta (ISBN 0-201-15790-X), popisuje základní systém a je velmi dobrou knihou pro začátek. Obsahuje dostatek informací k okamžitému psaní většiny běžných dokumentů. The LaTeX Companion od Mika Goossense, Franka Mittelbacha a Alexandra Samarina (ISBN 0-201-54199-8), je podrobnější a zahrnuje všechny nové funkce přidané do LaTeXu projektem LaTeX2e. Tato kniha je užitečná, pokud chcete pomocí LaTeXu napsat velké množství dokumentů a přizpůsobit si jazyk podle vlastního vkusu. Vysvětluje, jak dosáhnout nejrůznějších exotických efektů, jako je například rozložení textu do tvaru srdce (možná užitečné pro některé dokumenty napsané těsně před 14. únorem). Obě tyto knihy vydalo nakladatelství Addison-Wesley.

Logické je lepší

Systém přípravy dokumentů LaTeX se v průběhu let vyvíjel a zdokonaloval. Je mimořádně robustní a poskytuje funkce pro psaní dokumentů podle publikačních standardů obsahujících text a matematiku. Dokument LaTeXu je popsán pomocí programovacího jazyka, který dává uživateli LaTeXu veškerou sílu a flexibilitu běžného programovacího jazyka. Styl zápisu nutí uživatele vnímat dokumenty spíše na úrovni jejich logického uspořádání než jejich fyzického vzhledu. To je zpočátku trochu frustrující, ale v konečném důsledku to má mnoho výhod, jako je podpora opakovaného použití a vytváření obecných dokumentů, které mohou mít několik fyzických instancí.

Mark Harman je ředitelem výzkumu a zastupujícím vedoucím na School of Informatics and Multimedia Technology na University of North London (http://www.unl.ac.uk/~mark/welcome.html). Můžete ho kontaktovat e-mailem na adrese [email protected] nebo poštou na adrese Mark Harman, Project Project, School of Informatics and Multimedia Technology, University of North London, Holloway Road, London N7 8DB.


Obrázek 1 Jednoduchý dokument LaTeX.

\documentstyle{článek}

\begin{document}

zdravý svět

\end{document}


Obrázek 2 Sekce

\documentstyle{článek}

\begin{document}

\sekce{Úvod}

Tento dokument je poměrně krátký a toto je jeho úvod.

\section{Odůvodnění}

Dokument je tak krátký, protože je to prostě a jednoduše příklad.

\konec{dokumentu}


Obrázek 3 Symbolické odkazy

\dokumentstyle{článek}

\begin{dokument}

\section{Úvod}

\label{intro}

Tento dokument je poměrně krátký a toto je jeho úvod.

\section{Odůvodnění}

Krátký úvod k tomuto dokumentu najdete v části \ref{intro}.

\end{dokument}


Obrázek 4 Prostředí Itemize.

\begin{itemize}

\item Solid

\item Liquid

\item Gas

\end{itemize}


Obrázek 5 Prostředí enumerate.

\begin{vyčíslit}

\item Cenozoikum

\begin{vyčíslit}

\item Kvartér

\item Terciér

\end{vyčíslit}

\item Druhohory

\begin{enumerate}

\item Křída

\item Jura

\item Trias

\item Konec{enumerate}

\item Paleozoikum

\begin{enumerate}

\item perm

\item karbon

\item devon

\item silur

\item ordovik

\item Kambrium

\konec{výčet}

\item Prekambrium

\konec{výčet}


Obrázek 6 Příkazy bez parametrů.

\documentstyle{článek}

\newcommand{\ovoce} { jablko }

\begin{document}

První \ovoce, které se objeví, bude první \ovoce, které sním.

\end{document}


Obrázek 7 Parametry: Základní verze.

\documentstyle{článek}

\newcommand{vyhledávání} { #1(#2) }

\begin{document}

Chcete-li najít největší prvek pole A, uložte první prvek, \lookup{A}{0}, do proměnné b. Poté zadejte smyčku řízenou proměnnou i, která začíná 1 a pokračuje až na konec pole. V každém bodě smyčky porovnejte prvek i, \lookup{A}{i}, s hodnotou v b. Pokud je \lookup{A}{i} větší než b, přiřaďte \lookup{A}{i} do b.

\end{document}


Obrázek 8 Parametry: C verze.

\documentstyle{článek}

\newcommand{vyhledávání} { #1 }

\begin{dokument}

Chcete-li najít největší prvek pole A, uložte první prvek, \lookup{A}{0}, do proměnné b. Poté zadejte smyčku řízenou proměnnou i, která začíná 1 a pokračuje až na konec pole. V každém bodě smyčky porovnejte prvek i, \lookup{A}{i}, s hodnotou v b. Je-li \lookup{A}{i} větší než b, přiřaďte \lookup{A}{i} do b.

\konec{dokumentu}


Obrázek 9 Proměnné čítače.

\newcounter{číslo bodu}

\setcounter{číslo bodu}{1}

\newcommand{\bod} {Bod \číslo bodu \číslo kroku{číslo bodu} }

\bod

Nějaký text spojený s jedním z bodů

\bod

Nějaký text spojený s jiným bodem

\bod

Jiný bod


Obrázek 10 Příznakové proměnné.

\documentstyle{article}

\newcounter{language} % nastaveno na 1 pro Basic a 0 pro C

\setcounter{jazyk}{1}

\newcommand{\lookup}

{

\ifthenelse{\hodnota{jazyk} = 1} {#1(#2)} {#1}

}

\newcommand{\update}

{

\ifthenelse{\value{language} = 1} {LET #1(#2) = #3} {#1 = #3}

}

% Příkaz forloop přebírá čtyři parametry

% 1. Příkaz forloop má čtyři parametry. Dolní mez smyčky – celočíselný nebo integrální výraz.

% 2. Spodní mez smyčky – celočíselný nebo integrální výraz. Horní hranice smyčky – celočíselný nebo integrální výraz.

% 3. Horní hranice smyčky – celočíselný nebo integrální výraz. Řídicí proměnná smyčky – integrální proměnná.

% 4. Řídicí proměnná smyčky – integrální výraz. Tělo smyčky – posloupnost příkazů.

% Příznak čítač jazyka, slouží k určení jazyka, ve kterém

% je zapsána syntaxe smyčky.

\newcommand{\forloop}

{

\ifthenelse{\value{language} = 1}

{

FOR #3 = #1 TO #2

NEXT #3

}

{

for(#3=#1;#3 != #2;#3++)

\{

\}

}

\begin{document}

Pro uložení hodnoty 10 do prvku číslo 3 v poli A napíšeme \update{A}{3}{10}.

Chceme-li inicializovat prvky 0 až 10 v poli A počáteční hodnotou 0, můžeme použít smyčku for, která začíná od 0 a pokračuje až k 10. To by se zapsalo takto

\forloop{0}{10}{i}{\update{A}{i}{0}}

\end{document}


Obrázek 11 Výsledek kompilace zdrojového kódu LaTeXu na obrázku 10.

Chceme-li do prvku číslo 3 v poli A uložit hodnotu 10, zapíšeme LET A(3) = 10.

Chceme-li inicializovat prvky 0 až 10 v poli A počáteční hodnotou 0, můžeme použít smyčku for, která začíná od 0 a pokračuje až k 10. To by se zapsalo takto

pro i = 0 až 10

LET A(i) = 0

NEXT i

(P)1997, Centaur Communications Ltd. EXE Magazine je publikací společnosti Centaur Communications Ltd. Žádná část tohoto díla nesmí být publikována, ať už vcelku nebo po částech, jakýmikoliv prostředky včetně elektronických, bez výslovného souhlasu Centaur Communications a držitele autorských práv, pokud je jím jiná osoba.

EXE Magazine, St Giles House, 50 Poland Street, London W1V 4AX, e-mail [email protected]

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.