summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html')
-rw-r--r--Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html1869
1 files changed, 1869 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html b/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html
new file mode 100644
index 00000000000..e5faf6eb948
--- /dev/null
+++ b/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectR.html
@@ -0,0 +1,1869 @@
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-2">
+<TITLE>Proč to dělá tohle?</TITLE>
+<STYLE TYPE="text/css">
+<!--
+ ol.section li { font-size:large;font-weight:bold;margin-top:1em; }
+ ul.question li { font-size:medium;font-weight:normal;margin-top:.2em; }
+-->
+</STYLE>
+</HEAD>
+<BODY BACKGROUND="images/back_narrow.gif"
+BGCOLOR="#ffffff"
+TEXT="#000000"
+LINK="#900000"
+ALINK="#C14242"
+VLINK="#D30000">
+<TABLE BORDER=0>
+<TR><TD width=30>&nbsp;&nbsp;&nbsp;</TD>
+<TD><TABLE width="100%" BORDER=0>
+<TR><TD valign="middle" align="center"><FONT SIZE="+2"><B>Proč to dělá tohle?</FONT></TD><TD align="right">
+<a href="http://www.cstug.cz/"><IMG BORDER=0 SRC="images/logo.gif" ALT="CSTUG" HEIGHT=51 WIDTH=165 ALIGN="right"></a><BR>
+</TD></TR></TABLE></TD></TR>
+<TR><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD><HR></TD></TR>
+ <TR><TD></TD><TD>
+ <P>
+
+<P>
+Původní verze LaTeXu poskytovala příkaz <CODE>\include</CODE>, který pouze řešil
+problém dlouhých dokumentů: na relativně pomalých počítačích se
+používal příkaz <CODE>\includeonly</CODE>. S&nbsp;obrovským
+nárůstem rychlosti počítačů příkaz <CODE>\includeonly</CODE> ztratil na ceně (i&nbsp;když
+stále má svůj význam ve velmi rozsáhlých projektech). Proto je tento
+zjednodušený příkaz zahrnut i&nbsp;v&nbsp;současných verzích LaTeXu a&nbsp;plete
+lidi, kteří toto nepochopili.
+
+<P>
+V&nbsp;případě, že použijete
+<CODE>\includeonly</CODE>, tak <CODE>\include</CODE> vytváří zvláštní <CODE>.aux</CODE> soubory pro
+každý vložený soubor a&nbsp;vytváří checkpointy na důležité parametry (jako
+číslo stránky, obrázku, tabulky nebo poznámky pod čarou). Jako přímý
+důsledek musí vymazat stránku před i&nbsp;po příkazu <CODE>\include</CODE>. Tento
+mechanismus nepracuje, pokud se příkaz <CODE>\include</CODE> objeví v&nbsp;souboru,
+který byl sám vložen do jiného. Toto LaTeX ohlásí jako chybu. Nyní
+tedy můžeme odpovědět na dvě nejzákladnější otázky:
+<UL>
+ <LI> Proč LaTeX vsouvá na začátek a&nbsp;konec stránky příkaz <CODE>\include</CODE>?
+<BR>Odpověď: Protože musí. Pokud se vám to nelíbí, nahraďte příkaz
+<CODE>\include</CODE> příkazem <CODE>\input</CODE>&nbsp;&ndash;&nbsp;nebudete moct víckrát použít příkaz
+<CODE>\includeonly</CODE>, ale pravděpodobně to stejně nebudete potřebovat, takže
+žádné obavy.
+ <LI> Proč nemůžu vnořovat vložené soubory? Ve verzi LaTeXu 2.09 to vždy
+fungovalo. <BR>
+Odpověď: Ve skutečnosti to nefungovalo (ani ve verzi 2.09), chyba však nebyla
+diagnostikována. Když jste ale byl v&nbsp;té době spokojený s&nbsp;chováním pod
+LaTeXem verze 2.09, nahraďte příkaz <CODE>\include</CODE> příkazem <CODE>\input</CODE>
+(s&nbsp;přidaným příkazem <CODE>\clearpage</CODE>).
+</UL>
+
+<P>
+
+<P>
+<P><A NAME="Q-parparams"><HR><H3>Proč jsou ignorovány parametry odstavce</H3></A>
+
+<P>
+TeX při uspořádávání textu nepracuje tak, že by bral slovo za
+slovem, či řádku za řádkou. Nejmenší jednotkou, kterou TeX formátuje,
+jsou celé odstavce.
+Odstavec je načten celý do paměti a&nbsp;není
+dále zpracováván, dokud není načtena značka konce odstavce.
+Právě v&nbsp;ten okamžik se uplatní parametry odstavce.
+Chyby použití parametrů formátování odstavce často vznikají právě proto,
+že se zapomíná na to, v&nbsp;jaké posloupnosti se odstavec zpracovává.
+
+<P>
+Předpokládejme následující větu v&nbsp;LaTeXu:
+
+<P>
+<PRE>
+ {\raggedright % zarovnávání textu vlevo
+ Tento text by měl být na výstupu zarovnán
+ pouze vlevo. Chceme, aby se tak stalo
+ pouze v~tomto odstavci, a~ proto zde
+ ukončíme skupinu.}
+
+<P>
+ Další text je zpracován normálně...
+</PRE>
+
+<P>
+TeX otevře skupinu a&nbsp;nastaví parametry formátování odstavce tak,
+aby byl text uvnitř této skupiny zarovnáván pouze vlevo, poté uloží
+dvě věty textu, uzavře skupinu a&nbsp;nastaví původní parametry
+odstavce.
+Poté načte prázdný řádek, který je zpracován stejně jako
+příkaz <CODE>\par</CODE>; vysází dvě věty textu.
+Jelikož však skupina byla ukončena před načtením konce odstavce, nastavení
+parametrů uvnitř skupiny ztratilo význam a&nbsp;odstavec bude vysázen
+s&nbsp;běžnými parametry.
+
+<P>
+Aby nastavené parametry zůstaly v&nbsp;platnosti po celou dobu
+zpracovávání odstavce, je třeba ukončit odstavec uvnitř skupiny.
+Nahradíme-li poslední tři řádky v&nbsp;předchozím příkladě za:
+<PRE>
+ ukončíme skupinu.\par}
+ Další text je zpracován normálně...
+</PRE>
+ukončí se odstavec ve chvíli, kdy jsou
+parametry odstavce nastavené v&nbsp;uzavřené skupině stále v&nbsp;platnosti.
+
+<P>
+Další alternativa spočívá v tom, že si můžete definovat nové prostředí,
+které udělá příslušnou práci za vás. Pro příklad, který byl zmiňován
+výše, je již v LaTeXu definováno takovéto prostředí:
+<PRE>
+\begin{flushleft}
+ Tento text by měl být...
+\end{flushleft}
+</PRE>
+
+<P>
+<P><A NAME="Q-protect"><HR><H3>Proč se v LaTeXu užívá ochran (protection)</H3></A>
+
+<P>
+LaTeX si ukládá některá data, jež bude zpracovávat až později.
+Těmito daty jsou zejména argumenty některých příkazů, takzvané
+pohyblivé argumenty. Pohyblivé, protože se s&nbsp;daty nějakým
+způsobem manipuluje. Jedná se o argumenty těch příkazů, které zapisují
+do obsahu, seznamu tabulek atd., tj.&nbsp;data, která jsou
+zapisována do pomocného souboru, z&nbsp;něhož jsou později opět čtena.
+Jinými daty jsou ta, která se mohou objevit v&nbsp;záhlavích.
+Nejvýznamnějšími příkazy tohoto typu jsou popisy obrázků a
+tabulek (captions) a&nbsp;veškeré nadpisy. Úplný seznam
+lze najít v&nbsp;Lamportově manuálu
+(viz <A HREF="sectC.html#Q-books">Knihy o TeXu a příbuzná literatura</A>).
+
+<P>
+Co se za tím vším skutečně skrývá? Příkazy, jež se použijí
+v&nbsp;pohyblivých argumentech, jsou v&nbsp;průběhu ukládání
+plně expandovány.
+Někdy je výsledkem takového rozvoje špatný
+TeXovský kód, což se projeví až při jeho následném čtení.
+Příkazem <CODE>\protect</CODE><CODE>\cmd</CODE> je LaTeXu řečeno, aby uložil
+<CODE>\cmd</CODE> bez expanze, jako <CODE>\cmd</CODE>.
+
+<P>
+Co je to &bdquo;křehký příkaz&ldquo; (fragile command)?
+To je příkaz, který je během ukládání rozvinut do chybného
+TeXovského kódu.
+
+<P>
+Co je to &bdquo;robustní příkaz&ldquo; (robust command)?
+To je příkaz, který je během ukládání rozvinut do správného
+TeXovského kódu.
+
+<P>
+Nikdo se (samozřejmě) z&nbsp;takto nepřehledné situace neraduje.
+Skupina projektu LaTeX3 při práci na LaTeXu&nbsp;2e odstranila potřebu
+některých ochran, avšak techniky, které jsou jim dostupné
+v&nbsp;současném LaTeXu, činí věc poměrně složitou.
+Dlouhodobým cílem této
+skupiny zůstává odstranění všech ochran.
+
+<P>
+
+<P>
+<P><A NAME="Q-verb"><HR><H3>Proč <CODE>\verb</CODE> nefunguje uvnitř&nbsp;...</H3></A>
+
+<P>
+Funkce příkazu LaTeXu pro sazbu textu v&nbsp;tom tvaru, v&nbsp;němž je uveden ve
+zdrojovém souboru (<CODE>verbatim</CODE>), je založena na využití změny
+kategorie (category codes) jednotlivých znaků. Knuth v&nbsp;této
+souvislosti říká:
+&bdquo;Je potřeba věnovat jistou péči tomu, aby vše
+proběhlo ve správném sledu...&ldquo;.
+Kategorie znaku se od okamžiku, kdy je mu přiřazena, nemění.
+Proto <CODE>\verb</CODE> předpokládá, že je prvním příkazem, který
+se dívá na svůj textový parametr. Není-li tomu tak, TeX již přiřadil
+kategorie jednotlivým znakům a&nbsp;<CODE>\verb</CODE> již nemá šanci
+kategorii měnit. Například:
+<PRE>
+ \verb+\error+
+</PRE>
+bude fungovat (vysází se &bdquo;<CODE>\error</CODE>&ldquo;), ale
+<PRE>
+ \newcommand{\unbrace}[1]{#1}
+ \unbrace{\verb+\error+}
+</PRE>
+fungovat nebude (pokusí se spustit příkaz <CODE>\error</CODE>). Další chyby, se
+kterými se můžete setkat jsou &bdquo;<CODE>\verb</CODE> ended by end of line&ldquo; nebo
+&bdquo;<CODE>\verb</CODE> illegal in command argument&ldquo;.
+
+<P>
+Proto se také v&nbsp;manuálu LaTeXu tolik naléhá na to, aby se
+příkaz verbatim neobjevil v&nbsp;argumentu žádného jiného příkazu.
+Tyto příkazy jsou nejen křehké (fragile), ale dokonce zcela nepoužitelné
+jako parametr jiných příkazů, bez ohledu na ochranu pomocí
+ <A HREF="sectR.html#Q-protect">Proč se v LaTeXu užívá ochran (protection)</A>.
+
+<P>
+Jako první by jste si měli položit otázku, jestli je
+csx{verb} skutečně nezbytné.
+<UL>
+ <LI> Když <CODE>\texttt{\emph{váš text}}</CODE> produkuje stejné výsledky jako
+ csx{verb}<CODE>+<EM>váš text</EM>+</CODE>, pak csx{verb} není zapotřebí.
+ <LI> Když používáte csx{verb} k&nbsp;vysázení URL, emailové adresy nebo
+ něčeho podobného, pomůže příkaz csx{url} z&nbsp;balíku <CODE>url</CODE>
+ (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/url.sty">url</A>): netrpí problémy csx{verb}.
+ <LI> Když vkládáte csx{verb} do parametru boxovacího příkazu
+ (jako je csx{fbox}), zvažte použití prostředí <CODE>lrbox</CODE>:
+<P>
+<PRE>
+\newsavebox{\mybox}
+...
+\begin{lrbox}{\mybox}
+ \verb!VerbatimStuff!
+\end{lrbox}
+\fbox{\usebox{\mybox}}
+</PRE>
+</P>
+</UL>
+
+<P>
+Jinak jsou zde tři částečná řešení tohoto problému:
+<UL>
+ <LI> Balík <EM>fancyvrb</EM> (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fancyvrb">fancyvrb</A>)
+ definuje příkaz <CODE>\VerbatimFootnotes</CODE>, který předefinovává
+ příkaz <CODE>\footnotetext</CODE> (a odtud i <CODE>\footnote</CODE>) tak, že můžete
+ vkládat příkaz <CODE>\verb</CODE> jako jeho argument. Tento přístup by mohl být
+ v&nbsp;podstatě rozšířen i&nbsp;na argumenty ostatních příkazů, ale, bohužel, může
+ kolidovat s jinými balíky: například <CODE>\VerbatimFotenotes</CODE> ovlivňuje
+ volbu <CODE>para</CODE> z&nbsp;balíku <CODE>footmisc</CODE>.
+ <LI> Balík <CODE>fancyvrb</CODE> definuje příkaz <CODE>\SaveVerb</CODE> s odpovídajícím
+ příkazem <CODE>\UseVerb</CODE>, který vám umožňuje uložit a pak znovu použít
+ obsah jeho argumentů. Detaily týkající se použití tohoto
+ extrémně silného násroje hledejte v dokumentaci k tomuto balíku.
+
+<P>
+ Poněkud jednodušší je balík <CODE>verbdef</CODE>
+ (<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/verbdef.sty">verbdef</A>), který definuje
+ robustní příkaz, který expanduje do zadaného argumentu.
+ <LI> Pokud vám dělá problémy jediný znak (v&nbsp;jeho nepřítomnosti by jste klidně
+ mohly použít csx{texttt}), zvažte použití csx{string}.
+ <CODE>\texttt{my\string_name}</CODE> vysází to samé jako <CODE>\verb+my_name+</CODE> a&nbsp;bude
+ fungovat v&nbsp;parametru příkazu. Nebude ale fungovat v&nbsp;posuvném
+ parametru, žádná
+ dávka ochran (csx{protect}&nbsp;&mdash; viz <A HREF="sectR.html#Q-protect">Proč se v LaTeXu užívá ochran (protection)</A>) jej k&nbsp;tomu v&nbsp;tomhle
+ případě nedonutí.
+</UL>
+
+<P>
+<P><A NAME="Q-noline"><HR><H3>Žiaden riadok na ukončenie</H3></A>
+
+<P>
+Chyba
+<P>
+<PRE>
+! LaTeX Error: There's no line here to end.
+
+<P>
+See the LaTeX manual or LaTeX Companion
+... for explanation.
+</PRE>
+</P>
+je reakciou LaTeXu na príkaz <CODE>\</CODE>{}<CODE>\</CODE> tam, kde to nečaká. Najčastejším
+prípadom je, keď chcete mať návestie položky zoznamu na samostatnom riadku:
+<P>
+<PRE>
+\begin{description}
+\item[Veľmi dlhý popisok] \\
+ Text...
+\end{description}
+</PRE>
+</P>
+<CODE>\</CODE>{}<CODE>\</CODE> je vlastne v&nbsp;tomto prípade dosť zlý príkaz (aj keby fungoval), pretože
+by donútil odstavec tvorený textom položky, aby ukončíl riadok, na ktorom
+nie je nič okrem návestia. Toto by viedlo k&nbsp;varovnej hláške
+&bdquo;<CODE>Underfull&nbsp;\hbox</CODE>&ldquo; (obvykle s&nbsp;&bdquo;nekonečnou&ldquo; nevhodnosťou hodnoty 10000);
+táto správa síce okrem spomalenia behu LaTeXu neškodí, ale každá správa,
+ktorá neprináša žiadnu informáciu, zbytočne odvracia pozornosť uzívateľa.
+
+<P>
+Správnym riešením je napísanie nového druhu prostredia <CODE>description</CODE>, ktoré
+robí to, čo chcete. (The <EM>LaTeX Companion</EM>&nbsp;&mdash; viď
+Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a příbuzná literatura</A>&nbsp;&mdash; poskytuje poskytuje v&nbsp;týchto veciach celkom široký
+výber.)
+
+<P>
+Jednoduchým a&nbsp;rýchlym riešením, ktoré sa vyhne varovaniam, je napísať:
+<P>
+<PRE>
+\begin{description}
+\item[Veľmi dlhý popisok] \hspace*{\fill} \\
+ Text...
+\end{description}
+</PRE>
+</P>
+čo vyplní podtečený (under-full) riadok predtým, než si vynúti jeho uzavretie.
+Balík <CODE>expdlist</CODE> poskytuje rovnakú funkčnosť svojím príkazom
+csx{breaklabel}, <CODE>mdwlist</CODE> ju poskytuje príkazom csx{desclabelstyle}.
+
+<P>
+Ďalším častým prípadom správy je používanie prostredia <CODE>center</CODE> (alebo
+<CODE>flushleft</CODE>, prípadne <CODE>flushright</CODE>) a&nbsp;rozhodnutie, že potrebujete zvlášť
+oddeliť riadky prostredia:
+<P>
+<PRE>
+\begin{center}
+ Prvý riadok (nadpisu)\\
+ \\
+ telo centrovaného textu...
+\end{center}
+</PRE>
+</P>
+Riešenie je prosté: použite príkaz <CODE>\</CODE>{}<CODE>\</CODE> spôsobom, akým sa používať má, aby
+poskytol viac priestoru než jeden riadkový zlom. <CODE>\</CODE>{}<CODE>\</CODE> akceptuje voliteľný
+parameter špecifikujúci, koľko priestoru naviac pridať; požadovaný efekt
+v&nbsp;hore uvedenom príklade docielite takto:
+<P>
+<PRE>
+\begin{center}
+ Prvý riadok (nadpis)\\[\baselineskip]
+ telo centrovaného textu...
+\end{center}
+</PRE>
+</P>
+<CODE>expdlist.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/expdlist">expdlist</A><BR>
+<CODE>mdwlist.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mdwtools">mdwtools</A>
+
+<P>
+<P><A NAME="Q-lettercase"><HR><H3>Chyby související se změnou velikosti písmen</H3></A>
+
+<P>
+TeX poskytuje dva primitivní příkazy umožňující konverzi
+textu do malých písmen, <CODE>\lowercase</CODE>, a&nbsp;velkých písmen,
+<CODE>\uppercase</CODE>. Tyto příkazy se nepoužívají příliš často, ale
+dokáží nadělat v&nbsp;dokumentu zmatek.
+
+<P>
+Oba příkazy nerozvíjejí text, který je jejich parametrem&nbsp;&mdash;
+výsledkem příkazu <CODE>\uppercase{abc}</CODE> je &bdquo;<CODE>ABC</CODE>&ldquo;, avšak výsledek
+příkazu <CODE>\uppercase{\abc}</CODE> je <CODE>\abc</CODE> ať už
+ <CODE>\abc</CODE> znamená cokoli. Příkazy jednoduše interpretují tabulku
+ekvivalentů mezi velkými a&nbsp;malými formami znaků.
+Nemají například smysl pro matematiku, a&nbsp;tak
+<PRE>
+ \uppercase{About $y=f(x)$}
+</PRE>
+dává
+<PRE>
+ ABOUT $Y=F(X)$
+</PRE>
+což zřejmě není to, co jsme původně zamýšleli.
+
+<P>
+csx{uppercase} a&nbsp;csx{lowercase} navíc špatně pracují s&nbsp;neamerickými znaky,
+např. csx{uppercase{csx{ae}}} je to samé jako csx{ae}.
+
+<P>
+LaTeX poskytuje příkazy csx{MakeUppercase} a&nbsp;csx{MakeLowercase},
+které opravují posledně zmíněný problém. Tyto příkazy jsou používány
+ve&nbsp;standardních třídach k&nbsp;vytvoření verzálkových hlaviček kapitol a&nbsp;sekcí.
+
+<P>
+csx{MakeUppercase} a&nbsp;csx{MakeLowercase} bohužel neřeší další problémy
+csx{uppercase}, takže například titulek sekce obsahující <CODE>\begin{tabular}</CODE>
+... <CODE>\end{tabular}</CODE> vytvoří hlavičku obsahující <CODE>\begin{TABULAR}</CODE>,
+což je však prostředí, které vůbec neexistuje. Nejjednodušším řešením je
+použití uživatelem definovaného, např.:
+<P>
+<PRE>
+\newcommand{\mytable}{\begin{tabular}...
+ \end{tabular}}
+\section{Titulek sekce \protect\mytable{}
+ s~tabulkou}
+</PRE>
+</P>
+Všimněte si, že csx{mytable} musí být chráněno, jinak bude expandováno
+a&nbsp;přepsáno do verzálek; stejný výsledek dosáhnete deklarováním
+s&nbsp;csx{DeclareRobustCommand} (csx{protect} již nebude potřeba).
+
+<P>
+Balík <CODE>textcase</CODE> Davida Carlisla adresuje množství z&nbsp;těchto problémů
+transparentním spůsobem. Definuje příkazy csx{MakeTextUppercase}
+a&nbsp;csx{MakeTextLowercase}, které mění velikost písmen, se&nbsp;skvělými vlastnostmi
+standardních LaTeXovských csx{Make*} příkazů, ale bez uvedených problémů.
+Balík nahrajete pomocí <CODE>\usepackage[overload]{textcase}</CODE> a&nbsp;on redefinuje
+LaTeXovské příkazy (<EM>ne</EM> TeXovské primitívní příkazy! csx{uppercase}
+a&nbsp;csx{lowercase}) tak, aby nadpisy sekcí a&nbsp;podobné věci neprodukovaly
+špatné nadpisy stránek.<BR>
+<CODE>textcase.sty</CODE>: distribuováno jako součást <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle">carlisle</A>
+
+<P>
+<P><A NAME="Q-hashsymbol"><HR><H3>Proč je znak <CODE>#</CODE> v makrech uveden dvakrát</H3></A>
+
+<P>
+Při psaní makra je třeba mít na paměti, že
+<CODE>##</CODE> zastupuje <CODE>#</CODE> obdobně jako
+<CODE>#1</CODE> zastupuje cokoli, co je prvním argumentem makra.
+
+<P>
+Definujeme-li a&nbsp;poté použijeme makro:
+<PRE>
+ \def\a#1{+++#1+++#1+++#1+++} \a{b}
+</PRE>
+makro po expanzi dává &bdquo;+++b+++b+++b+++&ldquo;,
+což jsme očekávali. Avšak změníme-li nyní část makra:
+<PRE>
+ \def\a#1{+++#1+++\def\x #1{xxx#1}}
+</PRE>
+<CODE>\a{b}</CODE> se rozvine na &bdquo;+++b+++<CODE>\def\x&nbsp;b{xxxb}</CODE>&ldquo;.
+Definuje se zde makro <CODE>\x</CODE>, které je <EM>ohraničené</EM> znakem
+<CODE>b</CODE> a&nbsp;které nemá žádný argument. Může se to zdát divné,
+ačkoli jde jen o&nbsp;zvláštní případ předchozího příkladu.
+Chceme-li, aby v&nbsp;<CODE>\a</CODE>
+bylo definováno makro <CODE>\x</CODE> s&nbsp;jedním argumentem, musíme
+upravit předchozí makro takto:
+<PRE>
+ \def\a#1{+++#1+++\def\x ##1{xxx##1}}
+</PRE>
+<CODE>\a{b}</CODE> se nyní rozvine do tvaru
+&bdquo;+++b+++<CODE>\def\x&nbsp;#1{xxx#1}</CODE>&ldquo;, neboť <CODE>#1</CODE> bude nahrazeno
+znakem `b' a&nbsp;<CODE>##</CODE> bude nahrazeno <CODE>#</CODE>.
+
+<P>
+Pro definici vnořenou uvnitř definice se
+použije <CODE>####1</CODE>, jelikož v&nbsp;každé úrovni je <CODE>##</CODE> nahrazeno <CODE>#</CODE>.
+V&nbsp;další úrovni je nutné použít osm&nbsp;<CODE>#</CODE>, atd.
+
+<P>
+<P><A NAME="Q-spinmacro"><HR><H3>Medzery v&nbsp;makrách</H3></A>
+
+<P>
+Je jednoduché napísať makrá produkujúce medzeru v&nbsp;sádzanom výstupe tam, kde to
+nie je želané ani očakávané. Medzery vytvorené makrami sú zradné, pretože sa
+nezdružujú s&nbsp;medzerami okolo makra (na&nbsp;rozdiel od následných medzier, ktoré
+píšete), takže váš výstup môže mať jednu nafúknutú medzeru zloženú z&nbsp;jednej
+alebo viacerých medzier, ktoré neboli združené. Výstup môže mať medzeru aj tam,
+kde ju vôbec nikto nečaká.
+
+<P>
+Medzery vznikajú (vo&nbsp;vnútri makra ako aj inde), znakmi medzery, tabulátoru
+alebo konca riadku. Pri písaní makier by ste si mali pamätať dve jednoduché
+pravidlá: pravidlá ignorovania prázdneho miesta (medzier) pri písaní makier
+sú rovnaké ako pri písaní obyčajného textu a&nbsp;pravidlá ignorovania medzier
+<EM>neplatia</EM> na medzery vzniknuté počas expanzie makra.
+
+<P>
+Medzery sú ignorované vo&nbsp;vertikálnom móde (medzi odstavcami), na&nbsp;začiatku
+riadku a&nbsp;po názve príkazu. Kedže postupnosti medzier splývajú do jednej
+medzery, vyzerá to, že medzery sú ignorované aj vtedy, ak nasledujú inú
+medzeru. Medzery môžu mať po niektorých druhoch nezátvorkovaných parametrov
+(napr. priradenie premenným <EM>count</EM> a&nbsp;<EM>dimen</EM> v&nbsp;Plain TeXu) a&nbsp;po
+určitých kontrolných slovách (napr. v&nbsp;csx{hbox} <CODE>to</CODE>) syntaktický význam,
+takže znova máme prípady, kde to &bdquo;vyzerá&ldquo;, ako by medzery boli ignorované
+keď pracujú potichu samy pre seba.
+
+<P>
+Všimnite si nasledujúce makro celkom verne adaptované z&nbsp;makra, ktoré sa
+objavilo na <A HREF="news://comp.text.tex/"><CODE>comp.text.tex</CODE></A>:
+<P>
+<PRE>
+\newcommand{\stline}[1]
+ { \bigskip \makebox[2cm]{ \textbf{#1} } }
+</PRE>
+</P>
+(originál bol na jeden riadok).
+
+<P>
+Definícia makra obsahuje päť medzier:
+<UL>
+ <LI> po symbole <CODE>{</CODE> otvárajúcom telo makra; táto medzera bude ignorovaná
+ nie z&nbsp;dôvodu, že sa makro objavuje na začiatku riadku, ale pretože makro bolo
+ navrhnuté na operovanie medzi odstavcami
+ <LI> za csx{bigskip}; táto medzera bude ignorovaná (počas definície makra),
+ pretože nasleduje názov príkazu
+ <LI> za symbolom <CODE>{</CODE> povinného parametru csx{makebox}; hoci sa táto medzera
+ nevyhnutne objaví na začaitku výstupného riadku, <EM>nebude</EM> ignorovaná
+ <LI> za symbolom <CODE>}</CODE> uzatvárajúcim parameter csx{textbf}; táto medzera nebude
+ ignorovaná, ale môže byť prehliadnutá, ak je parameter do povolených <CODE>2cm</CODE>
+ <LI> za symbolom <CODE>}</CODE> uzatvárajúcim povinný parameter csx{makebox}; táto
+ medzera nebude ignorovaná
+</UL>
+Pôvodný autor makra sa obával, že začiatky riadkov s&nbsp;týmto makrom nebudú
+pri ľavom okraji a&nbsp;text za makrom nebude vždy správne zarovnaný. Tieto
+problémy vznikli z&nbsp;medzery na začaitku povinného parametru csx{makebox}
+a&nbsp;medzery bezprostredne za tým istým parametrom. Autor napísal svoje makro
+týmto spôsobom, na zdôraznenie významu rozličných častí. Význam sa bohužiaľ
+srtatil v&nbsp;problémoch spôsobených makrom.
+
+<P>
+Hlavná technika potlačenia medzier je použitie znakov <CODE>%</CODE>:
+všetko za <CODE>%</CODE> je ignorované, dokonca aj samotný koniec riadku
+(takže ani koniec riadku neprispeje nechcenou medzerou). Druhou technikou
+je zabezpečenie toho, že koncu riadku predchádza názov príkazu (kedže sa
+koniec riadku správa ako medzra, bude po názve príkazu ignorovaný). Hore
+uvedený príkaz by sme teda napísali (ako skúsený programátor s&nbsp;rovnakým dôrazom
+na štruktúru):
+<P>
+<PRE>
+\newcommand{\stline}[1]{%
+ \bigskip
+ \makebox[2cm]{%
+ \textbf{#1}\relax
+ }%
+}
+</PRE>
+</P>
+Uistili sme sa, že každá medzera v&nbsp;upravenej definícii je ignorovaná, takže sa
+žiadna neobjaví vo&nbsp;výstupe. Upravená definícia sa explicitne vysporiada
+s&nbsp;každým koncom riadku (hoci, ako sme uviedli vyššie, medzera na konci prvého
+riadku makra by bola pri použití makra ignorovaná). Toto je v&nbsp;skutočnosti
+najlepšia technika&nbsp;&mdash; je jednoduchšie slepo potlačiť medzery, než v&nbsp;každom
+bode analyzovať, či to vlastne potrebujete. Na potlačenie medzier boli použité
+tri techniky:
+<UL>
+ <LI> umiestnenie znaku <CODE>%</CODE> na koniec riadku (na riadkoch
+ 1, 3 a&nbsp;5),
+ <LI> &bdquo;prirodzené&ldquo; ukončenie riadku riadiacou sekvenciou (riadok 2) a
+ <LI> ukončenie riadku &bdquo;umelou&ldquo; riadiacou sekvenciou (riadok 4); riadiaca
+ sekvencia v&nbsp;tomto prípade (csx{relax}) nemá za mnohých okolností žiadny
+ účinok (aku tu), ale toto použitie je zastaralé&nbsp;&mdash; znak
+ <CODE>%</CODE> by bol lepší.
+</UL>
+Dávajte si pozor na (obvyklé) pokušenie umiestniť medzeru <EM>pred</EM>
+znak <CODE>%</CODE>: ak to spravíte, môžete úplne vynechať aj
+<CODE>%</CODE>.
+
+<P>
+V&nbsp;&bdquo;skutočnom živote&ldquo; sú medzery objavujúce sa v&nbsp;makrách samozrejme
+záhadnejšie ako v&nbsp;našom príklade. najbežnejšie medzery vznikajú z&nbsp;nechránených
+koncov riadkov a&nbsp;toto je chyba, ktorá sa občas vyskytne aj v&nbsp;makrách písaných
+skúsenými programátormi.
+
+<P>
+<P><A NAME="Q-activechars"><HR><H3>Definícia aktívnych znakov</H3></A>
+
+<P>
+Jednotlivé znaky sa môžu správať ako makrá (definované príkazy) a&nbsp;Plain&nbsp;TeX
+aj LaTeX definujú znak &bdquo;<CODE>textasciitilde</CODE>&ldquo; ako nezlomiteľnú
+medzeru. Znak sa spraví definovateľným, alebo &bdquo;aktívnym&ldquo;, nastavením jeho
+<EM>kódu kategórie</EM> (catcode) na csx{active} (13):
+<CODE>\catcode`_=\active</CODE>.
+
+<P>
+Ľubovolný znak v&nbsp;princípe môže byť týmto spôsobom aktivovaný a&nbsp;definovaný ako makro
+(<CODE>\def_{</CODE>csx{_}<CODE>}</CODE>&nbsp;&ndash; odpoveď na Otázku <A HREF="sectO.html#Q-underscore">Ako používať znak podčiarknutia</A>),
+ale musíte sa mať na pozore: kým ľudia čakajú aktívnu vlnku, iné aktívne znaky
+môžu byť nečakané a&nbsp;môžu zle interagovať s&nbsp;inými makrami. Definovaním
+aktívneho znaku naviac znemožníte použitie znaku na iné účely a&nbsp;existuje iba
+málo voľných znakov, ktoré by mohli byť týmto spôsobom zmenené.
+
+<P>
+Pre definovanie znaku `<CODE>z</CODE>' ako príkazu je potrebné napísať niečo ako:
+<P>
+<PRE>
+\catcode`\z=\active
+\def z{Ahoj}%
+</PRE>
+</P>
+a&nbsp;každé následné &bdquo;<CODE>z</CODE>&ldquo; v&nbsp;texte sa stane pozdravom. Toto by bolo pre väčšinu
+dokumentov zlým nápadom, ale mohlo by to mať špeciálne využitia. (V <CODE>\def&nbsp;z</CODE>,
+už &bdquo;<CODE>z</CODE>&ldquo; nie je interpretované ako písmeno; medzera teda nie je potrebná&nbsp;&mdash;
+<CODE>\defz</CODE> postačuje; rozhodli sme sa ponechať medzeru aspoň pre malé
+zprehľadnenie.) Niektoré balíky LaTeX obsahujú takéto definície. Napríklad
+balík <CODE>shortvrb</CODE> a&nbsp;jeho príkaz csx{MakeShortVerb}.
+
+<P>
+TeX Používa kódy kategórií na interpretáciu znakov pri tom, ako sú čítané
+zo&nbsp;vstupu.
+<EM>Zmena hodnoty catcode neovplyvní znaky, čo boli už prečítané</EM>.
+Z&nbsp;tochto dôvodu je vhodné, ak majú znaky pevný kód kategórie v&nbsp;celom dokumente.
+Ak je hodnota catcode zmenená za určitým účelom (toto robí príkaz csx{verb}),
+potom upravené znaky nebudú pri výskyte v&nbsp;parametri iného príkazu správne
+interpretované (ako napríklad v&nbsp;Otázke <A HREF="sectR.html#Q-verb">Proč <CODE>\verb</CODE> nefunguje uvnitř&nbsp;...</A>). Exemplárny prípad
+je balík <CODE>doc</CODE>, ktorý spracúva .dtx súbory používajúc balík
+<CODE>shortvrb</CODE> pre definíciu <CODE>textbar...textbar</CODE> ako skratky
+pre csx{verb}<CODE>textbar...textbar</CODE>. <CODE>textbar</CODE> je ale
+používané tiež v&nbsp;preambuliach tabuľkových prostredí, takže tabuľky v&nbsp;<CODE>.dtx</CODE>
+súboroch môžu mať vertikálne oddelenie riadkov medzi stĺpcami iba pomocou
+určitých špeciálnych opatrení.
+
+<P>
+Ďalším dôsledkom je, že priradenia catcode uskutočnené v&nbsp;makrách často
+nefungujú, ako by sa čakalo (viď Otázku <A HREF="sectR.html#Q-actinarg">Aktívne znaky v&nbsp;parametroch príkazov</A>).
+Napríklad definícia
+<P>
+<PRE>
+\def\mistake{%
+\catcode`_=\active
+\def_{\textunderscore\-}%
+}
+</PRE>
+</P>
+nefunguje, pretože sa pokúša definovať bežný znak <CODE>_</CODE>:
+Keď je makro použité, zmena kategórie neplatí pre znak podčiarknutia
+v&nbsp;definícii makra. Namiesto toho môžete použiť:
+<P>
+<PRE>
+\begingroup
+\catcode`_=\active
+\gdef\works{% všimnite si globálne \gdef
+ \catcode`_=\active
+ \def_{\textunderscore\-}%
+}
+\endgroup
+</PRE>
+</P>
+Alternatívny spôsob vytvorenia takejto izolovanej definície záleží na
+zvláštnych vlastnostiach csx{lowercase}, ktorý zmení znaky bez zmeny ich
+hodnoty catcode. Kedže vždy existuje <EM>jeden</EM> aktívny znak
+(&bdquo;<CODE>textasciitilde</CODE>&ldquo;), môžeme oklamať csx{lowercase}, aby zaplátalo
+definíciu bez toho, aby sme explicitne zmenili catcode:
+<P>
+<PRE>
+\begingroup
+ \lccode`\~=`\_
+ \lowercase{\endgroup
+ \def~{\textunderscore\-}%
+ }%
+</PRE>
+</P>
+Tieto dve definície majú rovnaký celkový efekt (znak je definovaný ako príkaz,
+ale znak nezostáva aktívny) až na to, že prvá definuje príkaz csx{global}.
+
+<P>
+Pre použitie aktívnych znakov v&nbsp;matematickom móde je lepšie nechať znaku bežný
+catcode a&nbsp;prideliť mu špeciálny aktívny <EM>matematický kód</EM>:
+<P>
+<PRE>
+\begingroup
+ \lccode`~=`x
+ \lowercase{\endgroup
+ \def~{\times}%
+ }%
+\mathcode`x="8000
+</PRE>
+</P>
+Špeciálny znak nemusí byť predefinovaný kedykoľvek sa stane aktívnym&nbsp;&mdash;
+definícia príkazu pretrvá aj po návratu catcode na pôvodnú hodnotu; definícia
+sa stane znova dostupnou, keď sa znak opäť stane aktívnym.<BR>
+<CODE>doc.sty</CODE>: distribuované ako súčasť zdrojových súborov <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/base">latex</A><BR>
+<CODE>shortvrb.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>
+
+<P>
+
+<P>
+<P><A NAME="Q-actinarg"><HR><H3>Aktívne znaky v&nbsp;parametroch príkazov</H3></A>
+
+<P>
+Občas je celkom príjemné spraviť jeden alebo dva znaky aktívnymi v&nbsp;parametri
+príkazu, aby sme uľahčili autorom písanie parametrov.
+
+<P>
+Aktívne znaky <EM>môžu</EM> byť v&nbsp;takýchto situáciach bezpečne použité, je však
+treba opatrnosti.
+
+<P>
+Pri zvažovaní tejto odpovede vyvstal príklad: ašpirujúci programátor makier
+na <A HREF="news://comp.text.tex/"><CODE>comp.text.tex</CODE></A> žiadal o&nbsp;pomoc pri snahe donútiť <CODE>#</CODE> a&nbsp;<CODE>b</CODE>
+produkovať hudobné symboly krížiku a béčka
+v&nbsp;makre pre špecifikáciu akordov.
+
+<P>
+Prvým problémom je, že <CODE>#</CODE> aj <CODE>b</CODE> majú dôležité využitie na inom mieste
+v&nbsp;TeXu (mierne povedané!), takže znaky sa môžu stať aktívnymi iba počas
+vykonávania príkazu.
+
+<P>
+Použitím techník diskutovaných v&nbsp;Otázke <A HREF="sectR.html#Q-activechars">Definícia aktívnych znakov</A> môžeme
+definovať:
+<P>
+<PRE>
+\begingroup
+ \catcode`\#=\active
+ \gdef#{$\sharp$}
+\endgroup
+</PRE>
+</P>
+a:
+<P>
+<PRE>
+\begingroup
+ \lccode`\~=`\b
+ \lowercase{\endgroup
+ \def~{$\flat$}%
+ }
+</PRE>
+</P>
+Druhým problémom je časovanie: príkaz musí spraviť každý zo&nbsp;znakov aktívnym
+<EM>predtým</EM>, než sú načítané jeho parametre. Toto znamená, že príkaz
+samotný nemôže mať parametre, ale musí byť rozdelený na dve časti.
+Píšeme teda:
+<P>
+<PRE>
+\def\chord{%
+ \begingroup
+ \catcode`\#=\active
+ \catcode`\b=\active
+ \Xchord
+}
+\def\Xchord#1{%
+ \chordfont#1%
+ \endgroup
+}
+</PRE>
+</P>
+a&nbsp;príkaz môžeme použiť ako <CODE>\chord{F\#}</CODE> alebo <CODE>\chord{Bb minor}</CODE>.
+
+<P>
+Dôležité sú dve vlastnosti:
+<UL>
+ <LI> csx{begingroup} v&nbsp;csx{chord} otvára skupinu, ktorá je uzavretá pomocou
+ csx{endgroup} v&nbsp;csx{Xchord}; táto skupina obmedzuje zmenu kódov kategórie,
+ čo je dôvodom existencie celého cvičenia.
+ <LI> Hoci <CODE>#</CODE> je aktívny počas vykonávania csx{Xchord}, <EM>nie je</EM>
+ aktívny, keď je práve definovaný, takže použitie <CODE>#1</CODE> nepotrebuje špeciálnu
+ pozornosť.
+</UL>
+
+<P>
+Zapamätajte si, že technika použitá v&nbsp;makrách ako csx{chord} je analogická
+technike použitej v&nbsp;príkazoch ako csx{verb}; a&nbsp;rovnako ako csx{verb} (viď
+Otázku <A HREF="sectR.html#Q-verb">Proč <CODE>\verb</CODE> nefunguje uvnitř&nbsp;...</A>), csx{chord} nebude fungovať vo&nbsp;vnútri parametru iného
+príkazu (chybové správy, ak sa vôbec objavia, budú pravdepodobne dosť
+zvláštne).
+
+<P>
+
+<P>
+<P><A NAME="Q-csname"><HR><H3>Definícia makra z&nbsp;parametru</H3></A>
+
+<P>
+Je bežné chcieť príkaz na vytvorenie iného príkazu, často je požadované, aby
+bol názov nového príkazu odvodený z&nbsp;parametru. LaTeX to robí celý čas,
+napríklad csx{newenvironment} vytvára start- a&nbsp;end-environment príkazy,
+ktorých názvy sú odvodené z&nbsp;názvu environment príkazu.
+
+<P>
+Zjavný prístup:
+<P>
+<PRE>
+\def\relay#1#2{\def\#1{#2}}
+</PRE>
+</P>
+nefunguje (TeX ho interpretuje ako divnú redefiníciu <CODE>\#</CODE>). Trik spočíva
+v&nbsp;použití csx{csname}, čo je TeXovské primitívum na generovanie názvov
+príkazov z&nbsp;náhodného textu, spolu s&nbsp;csx{expandafter}. Uvedená definícia by
+mala vyzerať:
+<P>
+<PRE>
+\def\relay#1#2{%
+ \expandafter\def\csname #1\endcsname{#2}%
+}
+</PRE>
+</P>
+S&nbsp;touto definíciou je <CODE>\relay{blah}{bleah}</CODE> ekvivalentné
+csx{def}<CODE>\blah{bleah}</CODE>.
+
+<P>
+Všimnite si, že definícia csx{relay} vynecháva zátvorky okolo názvu príkazu
+v&nbsp;spúšťanom csx{newcommand}. Toto je z&nbsp;dôvodu, že nie sú potrebné (to sú
+v&nbsp;skutočnosti zriedvo) a&nbsp;za týchto okolností robia kód makra mirne nudnejším.
+
+<P>
+Vytvorený názov nemusí byť (samozrejme) <EM>iba</EM> parameter:
+<P>
+<PRE>
+\def\newrace#1#2#3{\expandafter\def
+ \csname start#1\endcsname{%
+ #2%
+ }%
+ \expandafter\def
+ \csname finish#1\endcsname{%
+ #3%
+ }%
+}
+</PRE>
+</P>
+S&nbsp;príkazmi
+<P>
+<PRE>
+\def\start#1{\csname start#1\endcsname}
+\def\finish#1{\csname finish#1\endcsname}
+</PRE>
+</P>
+by sa tieto mohli správať trochu ako LaTeXovské prostredia (environments).
+
+<P>
+<P><A NAME="Q-empty"><HR><H3>Zistenie, že je niečo prázdne</H3></A>
+
+<P>
+Predpokladajme, že potrebujete vediet, či je parameter vášho príkazu prázdny,
+teda rozoznať medzi <CODE>\cmd{}</CODE> a&nbsp;<CODE>\cmd{blah}</CODE>. Toto je celkom jednoduché:
+<P>
+<PRE>
+\def\cmd#1{%
+ \def\tempa{}%
+ \def\tempb{#1}%
+ \ifx\tempa\tempb
+ <prázdny>
+ \else
+ <neprázdny>
+ \fi
+}
+</PRE>
+</P>
+Prípad, keď chcete ignorovať parameter pozostávajúci iba z&nbsp;medzier (nemusí byť
+teda úplne prázdny), je komplikovanejší. Tento prípad je vyriešený vo&nbsp;fragmente
+kódu <CODE>ifmtarg</CODE> definujúcom príkazy csx{@ifmtarg} a&nbsp;csx{@ifnotmtarg},
+ktoré rozoznajú (v&nbsp;opačných smeroch) medzi druhým a&nbsp;tretím parametrom. Kód
+balíku sa objavuje aj v&nbsp;LaTeXovskej triede <CODE>memoir</CODE>.
+
+<P>
+<CODE>Ifmtarg</CODE> tvorí vyzývavé čítanie, existuje aj diskusia tochto problému
+v&nbsp;čísle dva série článkov &bdquo;Around the bend&ldquo; Mika Downesa.<BR>
+<CODE>Around&nbsp;the&nbsp;bend</CODE>: séria článkov&nbsp;&mdash; <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/info/aro-bend">aro-bend</A><BR>
+<CODE>ifmtarg.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/ifmtarg.sty">ifmtarg</A><BR>
+<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A>
+
+<P>
+<P><A NAME="Q-running-nos"><HR><H3>Číslovanie rovníc, obrázkov a&nbsp;tabuliek</H3></A>
+
+<P>
+Mnoho LaTeXovských tried (vrátane štandardnej triedy <CODE>book</CODE>) čísluje veci
+po kapitolách, takže obrázky v&nbsp;kapitole&nbsp;1 sú číslované 1.1, 1.2 a tak ďalej.
+Toto niekedy nie je pre požiadavky používateľa vhodné.
+
+<P>
+Namiesto prepísanie celej triedy je možné použiť balíky <CODE>removefr</CODE>
+a&nbsp;<CODE>remreset</CODE>. Oba definujú príkaz csx{@removefromreset}, po vložení
+balíku teda môžete napísať niečo ako:
+<PRE>
+ \makeatletter
+ \@removefromreset{figure}{chapter}
+</PRE>
+a&nbsp;automatické prečíslovávanie sa zastaví. Potom musíte znovu definovať spôsob,
+akým sú čísla obrázkov (v&nbsp;tomto prípade) tlačené:
+<PRE>
+ \renewcommand{\thefigure}{\@arabic\c@figure}
+ \makeatother
+</PRE>
+(nezabudnite pre každé počítadlo, s&nbsp;ktorým chcete manipulovať, uskutočniť
+všetky kroky uvedené v&nbsp;csx{makeatletter} ...@ csx{makeatother}).
+
+<P>
+Technika môže byť použitá aj na zmenu pri resetovaní počítadla
+vo&nbsp;viacúrovňovej štruktúre. Predpokladajme, že vaša trieda čísluje stránky ako
+<I><kapitola>.<sekcia>.<obrázok></I> a&nbsp;vy ich chcete číslovať po kapitolách.
+Skúste:
+<P>
+<PRE>
+\@removefromreset{figure}{section}
+\@addtoreset{figure}{chapter}
+\renewcommand{\thefigure}%
+ {\thechapter.\@arabic\c@figure}
+</PRE>
+</P>
+(príkaz csx{@addtoreset} je súčasť LaTeXu samotného).
+
+<P>
+Balík <CODE>chngcntr</CODE> poskytuje jednoduché prostriedky sprístupnenia dvoch
+diskutovaných druhov zmien definujúc príkazy csx{counterwithin}
+a&nbsp;csx{counterwithout}. Trieda <CODE>memoir</CODE> tieto funkcie poskytuje tiež.<BR>
+<CODE>chngcntr.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/chngcntr.sty">chngcntr</A><BR>
+<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A><BR>
+<CODE>removefr.tex</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fragments/removefr.tex">removefr</A> (toto je konštruované ako &bdquo;fragment&ldquo;
+ pre použitie v&nbsp;iných balíkoch: nahrajte pomocou <CODE>\input{removefr}</CODE>)<BR>
+<CODE>remreset.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/carlisle">carlisle</A>
+
+<P>
+
+<P>
+<P><A NAME="Q-edef"><HR><H3>csx{edef} nefunguje s&nbsp;csx{protect}</H3></A>
+
+<P>
+Robustné príkazy LaTeXu sú buď &bdquo;prirodzene robustné&ldquo;&nbsp;&mdash; nikdy
+nepotrebujú csx{protect}, alebo &bdquo;self-protected&ldquo; (chránia sa samy)&nbsp;&mdash;
+majú csx{protect} nejakým spôsobom zabudované do svojej definície.
+&bdquo;Self-protected&ldquo; príkazy sú robustné iba v&nbsp;kontexte, kde je mechanizmus
+csx{protect} správne spracovaný. Kedže csx{edef} je TeXovské primitívum
+a&nbsp;nie príkaz LaTeXu, telo definície csx{edef} nespracúva csx{protect}
+správne.
+
+<P>
+Tento problém je riešený interným príkazom LaTeXu csx{protected@edef},
+ktorý robí prácu csx{edef}, zatiaľ čo udržuje mechanizmus csx{protect}
+funkčný. Existuje zodpovedajúci príkaz csx{protected@xdef}, ktorý robí to,
+čo csx{xdef}.
+
+<P>
+Kedže sú tieto príkazy interné, musia byť samozrejme pozorne sledované (viď
+Otázku <A HREF="sectQ.html#Q-atsigns"><CODE>\@</CODE> a <CODE>@</CODE> ve jménech maker</A>).
+
+<P>
+<P><A NAME="Q-oarglikesect"><HR><H3>Voliteľné parametre ako csx{section}</H3></A>
+
+<P>
+Voliteľné parametre v&nbsp;makrách definovaných pomocou csx{newcommand} nepracujú
+úplne rovnakým spôsobom ako voliteľný parameter csx{section}. Štandardná
+hodnota voliteľného parametru csx{section} je hodnota povinného parametru,
+ale csx{newcommand} vyžaduje, aby ste štandardné hodnoty vedeli dopredu.
+
+<P>
+Potrebný trik je použitie makra v&nbsp;štandardnom parametri:
+<PRE>
+\newcommand\thing[2][\DefaultOpt]{%
+ \def\DefaultOpt{#2}%
+ ...%
+}
+</PRE>
+
+<P>
+<P><A NAME="Q-labelctr"><HR><H3>Tvorenie návestí z&nbsp;počítadiel</H3></A>
+
+<P>
+Predpokladajme, že máme LaTeXovské počítadlo, ktoré sme definovali pomocou
+<CODE>\newcounter{foo}</CODE>. Hodnotu počítadla môžeme zvýšiť pomocou
+<CODE>\addtocounter{foo}{1}</CODE>, ale je to ťažkopádne na operáciu, ktorá nastáva tak
+často, takže existuje príkaz <CODE>\stepcounter{foo}</CODE>, ktorý vykonáva tento
+špeciálny prípad zväčšenia o&nbsp;jednotku.
+
+<P>
+Existuje interná premenná LaTeXu &bdquo;aktuálne návestie&ldquo;, ktorá si pamätá
+poslednú vec s&nbsp;možnosťou návestia, ktorú LaTeX spracoval. Mohli by ste
+(ak by ste na tom trvali) tú hodnotu nastaviť relevantným príkazom TeXu
+(zabezpečiac potrebné opatrenia, aby interný príkaz fungoval)&nbsp;&mdash; ale nie je
+to potrebné. Ak namiesto hore uvedených metód použijete
+<CODE>\refstepcounter{foo}</CODE>, interná premenná bude nastavená na novú hodnotu
+a&nbsp;(kým nepríde niečo iné) csx{label} bude odkazovať na počítadlo.
+
+<P>
+<P><A NAME="Q-oddpage"><HR><H3>Zistenie, či ste na párnej alebo nepárnej strane</H3></A>
+
+<P>
+Otázka <A HREF="sectR.html#Q-marginright">Jak dostat <CODE>\marginpar</CODE> na správnou stranu?</A> diskutuje problém, ako donútiť
+príkazy csx{marginpar}, aby svoj výstup umiestnili na správny okraj
+dvojstranových dokumentov. Toto je obecný problém znalosti, kde leží určitý
+kus textu: výstupná rutina je asynchrónna a&nbsp;TeX/LaTeX obvykle spracuje
+dobrý kus ďalšej strany, než sa vôbec rozhodne akúkoľvek stranu vyprodukovať.
+Dôsledkom je, že počítadlo <CODE>page</CODE> (interne známe v&nbsp;LaTeXu ako csx{c@page})
+je obvykle spoľahlivé, iba ak ste vo&nbsp;výstupnej rutine.
+
+<P>
+Riešením je použitie nejakej verzie csx{label} mechanizmu na zistenie, na
+ktorom konci stránky ste. Hodnota počítadla strán objavujúca sa v&nbsp;príkaze
+csx{pageref} bola vložená do behu výstupnej rutiny a&nbsp;je teda bezpečná.
+
+<P>
+csx{pageref} samotný však bezpečný nie je: môžete dúfať, že
+<PRE>
+\ifthenelse{\isodd{\pageref{foo}}}{odd}{even}
+</PRE>
+spraví potrebné, ale o&nbsp;balíkoch <CODE>babel</CODE> aj <CODE>hyperref</CODE> sa vie,
+že zasahujú do výstupu csx{pageref}; buďte opatrní!
+
+<P>
+Balík <CODE>chngpage</CODE> musí túto funkcionalitu poskytovať pre vlastné
+využitie, a&nbsp;preto poskytuje príkaz csx{checkoddpage}. Tento nastavuje
+návestie na privátne použitie a&nbsp;časť návestia s&nbsp;odkazom na stranu je potom
+preskúmaná (<CODE>hyperref</CODE> bezpečným spôsobom) na nastavenie platnosti
+csx{ifcpoddpage}, ak bol príkaz zavolaný na nepárnej strane. Trieda <CODE>memoir</CODE>
+obsahuje rovnaký príkaz nastavujúci platnosť csx{ifoddpage}. csx{label}
+samozrejme prispieva k&nbsp;LaTeXovským chybovým hláškam
+&bdquo;Rerun to get cross-references right&ldquo; ...<BR>
+<CODE>chngpage.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/chngpage.sty">chngpage</A><BR>
+<CODE>memoir.cls</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/memoir">memoir</A>
+
+<P>
+<P><A NAME="Q-labelformat"><HR><H3>Ako zmeniť formát návestí</H3></A>
+
+<P>
+Štandardne pri vytvorení návestia toto preberie vzhľad označeného počítadla:
+konkrétne je nastavené na csx{the}<CODE><counter></CODE>&nbsp;&mdash; čo by bolo použité,
+ak by ste chceli vysádzať počítadlo do vášho textu. Toto nie je vždy to, čo
+potrebujete: ak napríklad máte vnorené číslované zoznamy s&nbsp;vonkajškom
+číslovaným a&nbsp;vnútrom označeným písmenami, očakávalo by sa, že sa chcete
+na položky vnútorného zoznamu odkazovať ako &bdquo;2(c)&ldquo;. (Zapamätajte si, že
+môžete zmeniť štruktúru položiek zoznamov&nbsp;&mdash; viď Otázku <A HREF="sectO.html#Q-enumerate">Pekne číslované zoznamy</A>.)
+Zmena je samozrejme možná explicitným označením rodiča a&nbsp;použitím tohto
+návestia na skonštruovanie vysádzaného výsledku&nbsp;&mdash; niečo ako
+<P>
+<PRE>
+\ref{parent-item}(\ref{child-item})
+</PRE>
+</P>
+by bolo nudné a&nbsp;náchylné k&nbsp;chybám. Bolo by naviac nevhodné, kedže by ste
+konštruovali vizuálnu reprezentáciu, ktorá je neflexibilná (nemohli by ste
+vôbec zmeniť všetky odkazy na prvky zoznamu jedným ťahom).
+
+<P>
+LaTeX má v&nbsp;skutočnosti príkaz formátujúci návestia zabudovaný do každej
+definície návestia; štandardne je neplatný, ale je užívateľovi dostupný na
+programovanie. Pre ľubovolné návestie <I><counter></I> existuje interný
+príkaz LaTeXu csx{p@}<I><CODE><counter></I></CODE>; napríklad definícia
+návestia na vnútornej položke zoznamu je pravdepodobne uskutočnená príkazom
+<CODE>\p@enumii{\csx{theenumii}}</CODE>. Interné fungovanie tu bohužiaľ nie je úplne
+správne, musíte teda upraviť príkaz csx{refstepcounter}:
+<P>
+<PRE>
+\renewcommand*\refstepcounter[1]{%
+ \stepcounter{#1}%
+ \protected@edef\@currentlabel{%
+ \csname p@#1\expandafter\endcsname
+ \csname the#1\endcsname
+ }%
+}
+</PRE>
+</P>
+So zmenou na správnom mieste teraz môžete napríklad zmeniť návestia
+na všetkých vnútorných zoznamoch pridaním nasledujúceho kódu do preambuly:
+<P>
+<PRE>
+\makeatletter
+\renewcommand{\p@enumii}[1]{\theenumi(#1)}
+\makeatother
+</PRE>
+</P>
+Toto zabezpečí, že návestia číslovaných zoznamov druhej úrovne vyzerajú ako
+&bdquo;1(a)&ldquo; (a&nbsp;tak ďalej). Analogická zmena funguje pre ľubovolné počítadlo
+používané v&nbsp;príkaze csx{label}.
+
+<P>
+Balík <CODE>fncylab</CODE> v&nbsp;skutočnosti spraví všetko uvedené (vrátane úpravy
+LaTeXu samotného). S&nbsp;týmto balíkom je uvedený kód (celkom efektívne)
+vykonaný príkazom:
+<P>
+<PRE>
+\labelformat{enumii}{\theenumii(#1)}
+</PRE>
+</P>
+Uvedený príklad, ktorý môžeme uskutočniť viacerými rozličnými spôsobmi,
+bol označený zastaralým objavením sa balíku <CODE>enumitem</CODE>, ktorý je
+diskutovaný v&nbsp;odpovedi o&nbsp;dekorovaní číslovaných zoznamov
+(Otázka <A HREF="sectO.html#Q-enumerate">Pekne číslované zoznamy</A>).<BR>
+<CODE>enumitem.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/bezos">bezos</A><BR>
+<CODE>fncylab.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/fncylab.sty">fncylab</A>
+
+<P>
+<P><A NAME="Q-moren9"><HR><H3>Ako prekročiť limit 9 parametrov</H3></A>
+
+<P>
+Ak sa nad tým zamyslíte, zistíte, že Knuthova syntax definície príkazov:
+<P>
+<PRE>
+\def\blah#1#2 ... #9{<macro body>}
+</PRE>
+</P>
+je limitovaná na 9 parametrov. Neexistuje priamy spôsob ako toto obísť.
+Ako by ste vyjadrili desiaty parameter a zaistili, že syntax nepohltí iné
+správne použitie?
+
+<P>
+Ak skutočne potrebujete viac než 9 parametrov, správny postup je:
+<P>
+<PRE>
+\def\blah#1#2 ... #9{%
+ \def\ArgI{{#1}}%
+ \def\ArgII{{#2}}%
+ ...
+ \def\ArgIX{{#9}}%
+ \BlahRelay
+}
+\def\BlahRelay#1#2#3{%
+ % parametre 1-9 sú teraz
+ % \ArgI-\ArgIX
+ % parametre 10-12 sú
+ % #1-#3
+ <macro body>%
+}
+</PRE>
+</P>
+Táto technika je ľahko rozšíriteľná TeXovskými virtuózmi, ale zle sa odporúča.
+
+<P>
+Používatelia LaTeXu sa majú o&nbsp;niečo lepšie, kedže im stačí iba zadať počet
+parametrov v&nbsp;príkaze csx{newcommand}, ktorý definuje každú časť prevodného
+mechanizmu: Knuthove reštrikcie platia pre csx{newcommand} ako aj pre
+csx{def}. Používatelia LaTeXu však tiež majú cestu von z&nbsp;takejto
+barbarskej syntaxe príkazov&nbsp;&ndash; balík <CODE>keyval</CODE>. S <CODE>keyval</CODE>
+a&nbsp;trochou programovania môžete písať celkom sofistikované príkazy, ktorých
+vyvolanie môže vyzerať takto:
+<P>
+<PRE>
+\flowerinstance{species=Primula veris,
+ family=Primulaceae,
+ location=Coldham's Common,
+ locationtype=Common grazing land,
+ date=1995/04/24,
+ numplants=50,
+ soiltype=alkaline
+}
+</PRE>
+</P>
+Výhoda takejto &bdquo;ukecanosti&ldquo; je automatická zrozumiteľnosť. Sádzač si nemusí
+pamätať, že parameter 12 je <CODE>soiltype</CODE> atď. Príkazy môžu byť kopírované
+z&nbsp;poznámok k&nbsp;políčkam rýchlo a&nbsp;presne.<BR>
+<CODE>keyval.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/graphics">graphics</A>
+
+<P>
+<P><A NAME="Q-twooptarg"><HR><H3>Príkaz s&nbsp;dvomi voliteľnými parametrami</H3></A>
+
+<P>
+Ak ste si už prečítali Otázku <A HREF="sectR.html#Q-moren9">Ako prekročiť limit 9 parametrov</A>, môžete zrejme riešenie
+problému uhádnuť: predávanie príkazov.
+
+<P>
+LaTeX povoľuje príkazy s&nbsp;jediným voliteľným parametrom takto:
+<PRE>
+ \newcommand{\blah}[1][Default]{...}
+</PRE>
+
+<P>
+Správne môžete buď s&nbsp;prítomným voliteľným parametrom (<CODE>\blah[nonDefault]</CODE>)
+alebo bez neho (csx{blah}). V&nbsp;druhom prípade bude mať csx{blah} parameter
+<CODE>Default</CODE>.
+
+<P>
+Pre definovanie príkazu s&nbsp;dvoma voliteľnými parametrami použijeme techniku
+predávania nasledovne:
+<PRE>
+ \newcommand{\blah}[1][Default1]{%
+ \def\ArgI{{#1}}%
+ \BlahRelay
+ }
+ \newcommand\BlahRelay[1][Default2]{%
+ % prvý voliteľný parameter je teraz
+ % v \ArgI
+ % druhý je v #1
+ ...%
+ }
+</PRE>
+csx{BlahRelay} môže mať samozrejme toľko povinných parametrov, koľko je
+povolených po zabratí jedného &bdquo;miesta&ldquo; vlastným voliteľným parametrom,
+teda 8.
+
+<P>
+Varianty csx{newcommand} (a&nbsp;priateľov) s&nbsp;názvami ako csx{newcommandtwoopt}
+sú dostupné v&nbsp;balíku <CODE>twoopt</CODE>.
+Je však pravdepodobne lepšie, ak sa môžete písať príkazy sami, aby ste videli,
+prečo nie sú z&nbsp;programátorského hľadiska dobrým nápadom.
+
+<P>
+Príkaz s&nbsp;dvomi voliteľnými parametrami sa približuje hranici toho, čo je
+ešte rozumné: techniku môžete zjavne rozšíriť tak, aby poskytovala toľko
+volteľných parametrov, koľko si viete predstaviť. Pozrite si však poznámky
+k&nbsp;použitiu balíku <CODE>keyval</CODE> (znova v&nbsp;Otázke <A HREF="sectR.html#Q-moren9">Ako prekročiť limit 9 parametrov</A>), ktoré
+poskytujú alternatívny spôsob postupu.
+
+<P>
+Alternatívnym prístupom je poskytovaný programom <EM>newcommand</EM> od
+Scotta Pakina, ktorý vezme názov príkazu a&nbsp;definíciu množiny parametrov
+príkazu (v&nbsp;celkom zrozumiteľnom jazyku) a&nbsp;ako výstup poskytne
+TeXovské/LaTeXovské makrá umožňujúce definíciu príkazu. Príkaz vyžaduje,
+aby bol na vašom systéme nainštalovaný <EM>python</EM>.
+
+<P>
+Distribúcia <CODE>twoopt</CODE> obsahuje dokumentačný súbor <CODE>twoopt.pdf</CODE>.
+Podobne distribúcia <EM>newcommand</EM> obsahuje súbor
+<CODE>newcommand.pdf</CODE>.<BR>
+<CODE>newcommand.pdf</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/support/newcommand">newcommand</A><BR>
+<CODE>twoopt.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/oberdiek">oberdiek</A>
+
+<P>
+<P><A NAME="Q-seccntfmt"><HR><H3>Úprava prezentácie čísel sekcií</H3></A>
+
+<P>
+Obecné problémy úpravy vzhľadu nadpisov sekcií sú dosť komplexné a&nbsp;sú pokryté
+odpoveďou na Otázku <A HREF="sectO.html#Q-titles">Vzhled nadpisů</A>.
+
+<P>
+Ľudia však často chcú zmeniť iba vzhľad čísla sekcie v&nbsp;nadpise a&nbsp;niektorým
+z&nbsp;nich nevadí písanie pár makier. Táto odpoveď je pre nich.
+
+<P>
+Spôsob sadzby čísla sekcie určuje príkaz csx{@seccntformat}, ktorý dostane
+&bdquo;názov&ldquo; (section, subsection, ...) nadpisu ako parameter. Obvykle
+dá na výstup iba číslo sekcie, a&nbsp;potom csx{quad} medzeru. Predpokladajme, že
+chcete dať za každé číslo sekcie (subsekcie, subsubsekcie, ...) bodku.
+Triviálna zmena môže byť implementovanáa jednoduchou modifikáciou príkazu:
+<P>
+<PRE>
+\renewcommand*{\@seccntformat}[1]{%
+ \csname the#1\endcsname.\quad
+}
+</PRE>
+</P>
+
+<P>
+Veľa ľudí (z&nbsp;určitého dôvodu) chce bodku iba za číslo sekcie. Pre dosiahnutie
+tochto cielu musíme zmeniť chovanie csx{@seccntformat} podľa jeho parametru.
+Nasledujúca technika je tak trochu plýtvaním, ale stále je dostačujúco
+efektívna:
+<P>
+<PRE>
+\let\@@seccntformat\@seccntformat
+\renewcommand*{\@seccntformat}[1]{%
+ \expandafter\let\expandafter\@tempa
+ \csname @seccntformat@#1\endcsname
+ \ifx\@tempa\relax
+ \expandafter\@@seccntformat
+ \else
+ \expandafter\@tempa
+ \fi
+ {#1}%
+}
+</PRE>
+</P>
+Kód sa pozrie či bol definovaný príkaz druhej úrovne. Ak áno, použije ho, inak
+použije pôvodný. Príkaz druhej úrovne na zavedenie bodiek (iba) za čísla
+sekcií má rovnakú definíciu ako pôvodná verzia &bdquo;všetky úrovne zhodne&ldquo;:
+<P>
+<PRE>
+\newcommand*{\@seccntformat@section}[1]{%
+ \csname the#1\endcsname.\quad
+}
+</PRE>
+</P>
+Všimnite si, že všetky definície príkazov v&nbsp;tejto odpovedi sa týkajú interných
+príkazov LaTeXu (viď Otázku <A HREF="sectQ.html#Q-atsigns"><CODE>\@</CODE> a <CODE>@</CODE> ve jménech maker</A>), takže uvedený kód by mal
+byť radšej v&nbsp;súbore balíku.
+
+<P>
+Triedy <CODE>koma-script</CODE> majú na zmenu prezentácie čísel sekcií odlišné príkazy:
+csx{partformat}, csx{chapterformat} a&nbsp;csx{othersectionlevelsformat},
+ale inak sú ich možnosti podobné čistému LaTeXu.<BR>
+<CODE>sada&nbsp;KOMA&nbsp;script</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/koma-script">koma-script</A>
+
+<P>
+<P><A NAME="Q-spaftend"><HR><H3>Za moje prostredie je pridaná medzera</H3></A>
+
+<P>
+Napísali ste si vlastné prostredie <CODE>env</CODE>, ktoré aj funguje, až na to, že
+na začiatku prvého riadku textu za <CODE>\end{env}</CODE> je vysádzaná medzera. Toto sa
+s&nbsp;podobnými prostrediami dodávanými LaTeXom nestáva.
+
+<P>
+Mohli by ste vydať obmedzenie, že vaši užívatelia musia vždy umiestniť znak
+&bdquo;<CODE>%</CODE>&ldquo; za prostredie, prostredia LaTeXu to nepotrebujú.
+
+<P>
+Tajomstvom prostredí LaTeXu je interný príznak spôsobujúci ignorovanie
+nechcených medzier. Našťastie internú formu používať nemusíte: od roku 1996
+obsahuje LaTeX používateľský príkaz csx{ignorespacesafterend}, ktorý
+interný príznak nastavuje.
+
+<P>
+<P><A NAME="Q-ltxcmds"><HR><H3>Definície LaTeXovských príkazov</H3></A>
+
+<P>
+Existuje viacero dôvodov, prečo by ste mohli chcieť vedieť definície príkazov
+LaTeXu: od najjednoduchšej obyčajnej zvedavosti, až po potrebu opraviť
+niečo, aby to fungovalo tak, ako chcete vy. Nič z&nbsp;uvedeného nie je
+<EM>čistým</EM> motívom, ale vedomosť a&nbsp;skúsenosť zriedkakedy prichádzajú
+prostredníctvom najčistejších motívov.
+
+<P>
+Najjednoduchšou odpoveďou je skúsiť csx{show} v&nbsp;LaTeXovskom behu berúcom
+príkazy z&nbsp;terminálu:
+<P>
+<PRE>
+*\show\protected@edef
+> \protected@edef=macro:
+->\let \@@protect \protect
+ \let \protect \@unexpandable@protect
+ \afterassignment \restore@protect \edef .
+</PRE>
+</P>
+(Výstup je preusporiadaný z&nbsp;dosť mätúcej verzie, ktorú TeX produkuje.)
+Teraz sa môžeme zamyslieť nad csx{@unexpandable@protect}:
+<P>
+<PRE>
+*\show\@unexpandable@protect
+> \@unexpandable@protect=macro:
+->\noexpand \protect \noexpand .
+</PRE>
+</P>
+a&nbsp;začíname pozorovať, ako funguje jedna časť mechanizmu csx{protect} (môžeme
+asi celkom bezpečne uhádnuť, čo robí csx{restore@protect}).
+
+<P>
+Mnoho príkazov jadra je deklarovaných robustne:
+<P>
+<PRE>
+*\show\texttt
+> \texttt=macro:
+->\protect \texttt .
+</PRE>
+</P>
+takže csx{show} veľmi nepomôže. Definujte príkaz csx{pshow} podľa
+nasledujúcej ukážky a&nbsp;použite ten:
+<P>
+<PRE>
+*\def\pshow#1{{\let\protect\show #1}}
+*\pshow\texttt
+> \texttt =\long macro:
+#1->\ifmmode \nfss@text {\ttfamily #1}%
+ \else \hmode@bgroup \text@command {#1}%
+ \ttfamily \check@icl #1\check@icr
+ \expandafter \egroup \fi .
+</PRE>
+</P>
+Všimnite si, že názov chráneného príkazu je &bdquo;základný&ldquo; príkaz s&nbsp;pripojenou
+medzerou. Toto je trochu obtiažne viditeľné na pár miestach vyššie. (Výstup
+bol znova upravený.)
+
+<P>
+Ak máte flexibilný textový editor, rovnaké zistenie môžete komfortnejšie
+uskutočniť prezrením súboru <CODE>latex.ltx</CODE> (ktorý sa dá zvyčajne v&nbsp;TDS
+systéme nájsť v&nbsp;adresári <CODE>tex/latex/base</CODE>).
+
+<P>
+Súbor <CODE>latex.ltx</CODE> je vlastne výstupom <EM>docstrip</EM> procesu
+na veľkom množstve <CODE>.dtx</CODE> súborov (viď Otázku <A HREF="sectD.html#Q-dtx">Dokumentované LaTeXovské zdroje (<CODE>.dtx</CODE> soubory)</A>), môžete sa teda
+odkazovať na ne. Distribúcia LaTeXu obsahuje súbor <CODE>source2e.tex</CODE>,
+väčšina systémov ju zachováva v&nbsp;<CODE>tex/latex/base</CODE>. <CODE>Source2e.tex</CODE>
+môže byť spracovaný, aby poskytol kompletný výpis jadra LaTeXu (proces
+nie je úplne priamočiary, ale súbor produkuje správy radiace, čo treba
+spraviť). Výsledkom je obrovský dokument s&nbsp;indexom čísiel riadkov riadiacich
+sekvencií celého jadra a&nbsp;oddelený index zmien zaznamenaných v&nbsp;každom súbore
+odvtedy, čo ho prevzal LaTeX tím.
+
+<P>
+Vytlačené jadro je dobrá vec, ale ťažko sa s&nbsp;ním manipuluje a&nbsp;často iba sedí na
+polici zriedkavo využívaný. Jedným problémom je rozdielna dokumentácia:
+obsiahnuté sú moduly od&nbsp;veľmi dobre zdokumentovaných, cez moduly obsahujúce
+iba automatickú dokumentáciu, až po moduly bez akejkoľvek užitočnej
+dokumentácie.
+
+<P>
+Každý <CODE>.dtx</CODE> súbor jaderného modulu bude v&nbsp;LaTeXu spracovaný oddelene, takže
+nemusíte pracovať s&nbsp;celým súborom <CODE>source2e</CODE>. Ľahko môžete zistiť, ktorý
+modul definuje makro, ktoré vás zaujíma: použite svoj
+&bdquo;flexibilný textový editor&ldquo; aby ste zistili definíciu v&nbsp;<CODE>latex.ltx</CODE>,
+potom z&nbsp;toho bodu hľadajte spätne riadok začínajúci <CODE>%%%&nbsp;From&nbsp;File:</CODE>&nbsp;&mdash; tento
+riadok vám povie, ktorý <CODE>.dtx</CODE> súbor obsahuje definíciu, ktorá vás zaujíma.
+Pre csx{protected@edef} týmto postupom nájdeme:
+<PRE>
+%%% From File: ltdefns.dtx
+</PRE>
+Ak sa na súbor pozrieme, <CODE>ltdefns.dtx</CODE> obsahuje obsiahlu rozpravu
+o&nbsp;metódach spracovania ochrán (csx{protect}) a&nbsp;obsahuje tiež určitú
+automaticky skonvertovanú LaTeX&nbsp;2.09 dokumentáciu.
+
+<P>
+Jadro samozrejme nie je celý LaTeX: váš príkaz môže byť definovaný v&nbsp;jednom
+zo súborov LaTeXovských tried alebo balíkov. Definíciu
+csx{thebibliography} napríklad nájdeme v&nbsp;triede <CODE>article</CODE>, ale súbor
+<CODE>article.dtx</CODE> neexistuje. Niektoré takéto súbory sú generované z&nbsp;častí
+jadra, niektoré z&nbsp;iných súborov distribúcie. Zdroj zistíte pri pohľade na
+začiatok súboru: v&nbsp;<CODE>article.cls</CODE> nájdeme:
+<PRE>
+%% This is file `article.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% classes.dtx (with options: `article')
+</PRE>
+takže potrebujeme formátovať súbor <CODE>classes.dtx</CODE>, aby sme videli definíciu
+v&nbsp;kontexte.
+
+<P>
+Všetky tieto .dtx súbory sú na CTANe ako súčasť hlavnej distribúcie
+LaTeXu.<BR>
+<CODE>\LaTeX{}&nbsp;distribúcia</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/base">latex</A>
+
+<P>
+
+<P>
+<P><A NAME="Q-addtoreset"><HR><H3>&bdquo;Master&ldquo; a&nbsp;&bdquo;slave&ldquo; počítadlá</H3></A>
+
+<P>
+Je bežné mať veci číslované po kapitolách (napríklad v&nbsp;štandardných triedach
+<CODE>book</CODE> a&nbsp;<CODE>report</CODE> sú takto číslované obrázky, tabuľky a&nbsp;poznámky pod čiarou).
+Resetovanie sa uskutočňuje automaticky, keď sa zvýši hlavné (&bdquo;master&ldquo;)
+počítadlo (keď je vykonaný príkaz csx{chapter} začínajúci kapitolu
+<I><n></I>, počítadlo <CODE>chapter</CODE> sa zvýši a&nbsp;všetky závislé počítadlá sú
+nastavené na nulu).
+
+<P>
+Ako by ste to spravili sami? Môžete chcieť číslovať napríklad algoritmy po
+sekciách. Ak tieto veci definujete ručne, vzťah deklarujete pri definícii
+počítadla:
+<P>
+<PRE>
+\newcounter{new-name}[master]
+</PRE>
+</P>
+Uvedený kód nám hovorí, že pri každom zvýšení počítadle <I><master></I> bude
+resetované počítadlo <I><new-name></I>.
+
+<P>
+Čo ale v&nbsp;prípade, že máte nespolupracujúci balík definujúci veci za vás, ale
+tento neposkytuje programátorovi rozhranie na prinútenie počítadiel správať sa
+tak, ako chce?
+
+<P>
+Príkaz csx{newcounter} používa interný príkaz LaTeXu a&nbsp;vy ho môžete využiť
+tiež:
+<P>
+<PRE>
+\@addtoreset{new-name}{master}
+</PRE>
+</P>
+(pamätajte si však, že to musí byť medzi csx{makeatletter}
+a&nbsp;csx{makeatother} alebo vo&nbsp;vašom vlastnom balíku).
+
+<P>
+Balík <CODE>chngcntr</CODE> zapuzdruje príkaz csx{@addtoreset} do príkazu
+csx{counterwithin}. Takže:
+<P>
+<PRE>
+\counterwithin*{corollary}{theorem}
+</PRE>
+</P>
+spraví z&nbsp;počítadla corollary podriadené počítadlo (slave) počítadla theorem.
+Príkaz bez hviezdy:
+<P>
+<PRE>
+\counterwithin{corollary}{theorem}
+</PRE>
+</P>
+spraví to isté a&nbsp;zároveň redefinuje csx{thecorollary} ako
+<I><číslo teorémy></I>.<I><číslo dôsledku></I>, čo je dobrou schémou,
+ak sa niekedy chcete odkazovať na dôsledky&nbsp;&mdash; môže existovať veľa
+&bdquo;dôsledkov&nbsp;1&ldquo; v&nbsp;každom dokumente, takže je dobré zviazať jeho číslo
+s&nbsp;počítadlom theorem, ku ktorému patrí. Toto platí asi pri každom počítadle
+vo&nbsp;vnútri iného. Ak nepoužívate <CODE>chngcntr</CODE>, pre potrebné techniky si
+pozrite Otázku <A HREF="sectO.html#Q-the-commands">Predefinovanie csx{the-}príkazov počítadiel</A>.
+
+<P>
+Všimnite si, že postup nefunguje, ak je nadriadené (master) počítadlo <CODE>page</CODE>,
+číslo aktuálnej strany. Počítadlo <CODE>page</CODE> je zväčšované hlboko vo&nbsp;vnútri
+výstupnej rutiny, ktorá je volaná chvíľku po tom, čo sa začal objavovať text
+pre novú stranu: na vysporiadanie sa s&nbsp;týmto sú potrebné špeciálne postupy.
+S&nbsp;jedným špeciálnym prípadom sme sa vysporiadali na inom mieste:
+Otázka <A HREF="sectO.html#Q-footnpp">Číslovanie poznámok &bdquo;po&nbsp;stránkach&ldquo;</A>. Jeden z&nbsp;opísaných postupov v&nbsp;spomenutej otázke,
+použitie balíku <CODE>perpage</CODE>, môže byť aplikovaný na akékoľvek počítadlo.
+Príkaz:
+<P>
+<CODE>\MakePerPage{counter}</CODE>
+</P>
+prinúti <I><counter></I> resetovať sa na každej strane. Balík používa
+mechanizmus podobný návestiam a&nbsp;môže vyžadovať viac než jeden beh LaTeXu
+na stabilizovanie hodnôt počítadiel&nbsp;&mdash; LaTeX vygeneruje obvyklé varovania
+o&nbsp;zmene návestí.<BR>
+<CODE>chngcntr.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/chngcntr.sty">chngcntr</A><BR>
+<CODE>perpage.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/misc/perpage.sty">perpage</A>
+
+<P>
+<P><A NAME="Q-widows"><HR><H3>Ovládanie vdov a&nbsp;sirôt</H3></A>
+
+<P>
+Vdovy (posledné riadky odstavcov na začiatku strany) a&nbsp;siroty (prvé riadky
+odstavcov na konci strany) prerušujú čitateľa a&nbsp;obecne sú považované za zlú
+formu; TeX/LaTeX vykonáva určité opatrenia, aby sa im vyhol, úplne
+automatická prevencia je často nemožná. Ak sádzate vlastný text, zvážte miernu
+zmenu slov tak, aby zlom dopadol inak.
+Rutina pre vytváranie stránky pri jej formovaní berie na vedomie
+csx{widowpenalty}
+a&nbsp;csx{clubpenalty} (vzťahuje sa k&nbsp;sirotám!). Tieto pokuty (penalties) sú
+obvykle nastavené na strednú hodnotu <CODE>150</CODE>; toto mierne odradzuje od
+zlých zlomov. Hodnoty môžete zvýšiť výrazom (napríklad)
+csx{widowpenalty}<CODE>=500</CODE>; vertikálne zoznamy (z&nbsp;ktorých sú zhotovené
+stránky) sa typicky dajú veľmi slabo roztiahnuť alebo stlačiť, takže rutina
+musí zvážiť efekt roztiahnutia neroztiahnuteľného a&nbsp;pokuty, pokuta málokedy
+vyhraje. Tomuto rozporu sa dá predísť povolením
+rutine skrátiť stránku
+použitím direktívy csx{raggedbottom}; mnoho vydavateľov však trvá na
+štandardnom csx{flushbottom}; je málokedy akceptovateľné priviesť do
+vertikálneho zoznamu roztiahnuteľnosť, okrem bodov (ako nadpisy sekcií), kde
+to dizajn dokumentu explicitne povoľuje.
+
+<P>
+Keď ste už vyčerpali automatické opatrenia a&nbsp;máte konečný návrh, ktorý chcete
+&bdquo;vypilovať&ldquo;, musíte použiť ručné opatrenia. Zbaviť sa siroty je jednoduché:
+pred odstavec uveďte csx{clearpage} a&nbsp;odstavec nemôže začať na zlom mieste.
+
+<P>
+Zbaviť sa vdovy je komplikovanejšie. Ak je odstavec dlhý, mohlo by sa dať
+vysádzať ho &bdquo;tesne&ldquo;: vložte csx{looseness}<CODE>=-1</CODE> bezprostredne za
+posledné slovo odstavca. Ak to nefunguje, skúste zmeniť veľkosť stránky:
+csx{enlargethispage}<CODE>\{baselineskip}</CODE> by mohlo pomôcť a&nbsp;dostať celý
+odstavec na jednu stranu. Zmenšením veľkosti stránky pomocou
+<P>
+<PRE>
+ \enlargethispage{-\baselineskip}
+</PRE>
+</P>
+môže vytvoriť (viac-menej)
+akceptovateľnú &bdquo;dvojriadkovú vdovu&ldquo;. (Všimnite si:
+csx{looseness}<CODE>=1</CODE> zvyšujúc dĺžku strany o&nbsp;jednotku málokedy
+funguje&nbsp;&mdash; dotyčný odstavec má zvyčajne jednoslovný posledný riadok, ktorý
+nevyzerá oveľa lepšie ako priamo vdova.)
+
+<P>
+<P><A NAME="Q-poznstr"><HR><H3>Proč LaTeX dělí poznámky pod čarou na</H3></A>
+ více stránek?}
+
+<P>
+LaTeX dělí poznámky pod čarou na více stránek, pokud si myslí, že to je
+to nejlepší, co může udělat. Typicky se tak stane, pokud poznámka pod
+čarou vyjde na samotný konec stránky, a tím ji může přeplnit. LaTeX
+by se mohl pokusit problém vyřešit ochuzením stránky o&nbsp;poznámku a&nbsp;taky
+řádek obsahující značku poznámky, ale jeho priority mu poradí, že rozdělení
+rozdélení poznámky je preferováno.
+
+<P>
+Jako vždy je nejlepším řešením problému změnit váš text tak, aby se v&nbsp;něm
+tento problém nevyskytl. Uvažujte, zda by se poznámka ve vašem textu mohla
+objevit na předchozí či další stránce. Pokud to není možné, můžete
+docílit toho, že LaTeX začne jinak &bdquo;pohlížet&ldquo; na tyto priority:
+ty jsou ovládané příkazem <CODE>\interfootnotelinepenalty</CODE>&nbsp;&mdash;&nbsp;čím má větší
+parametr, tím méně LaTeX rozděluje poznámky. Nastavením
+<CODE>\interfootnotelinepenalty=10000</CODE> (základní hodnota je 100) zcela
+zabráníte zabráníte rozdělování poznámek pod čarou. To ale vyvolá hlášku
+&bdquo;Underfull <CODE>\</CODE>vbox&ldquo; pokud nezadáte <CODE>\raggedbottom</CODE>.
+
+<P>
+Alternativní technika spočívá v&nbsp;malém podvodu na
+LaTeX, kdy pomocí parametrů příkazu <CODE>\enlargethispage</CODE> změníte
+velikost aktuální stránky (např. mu můžete dát na vstup
+<CODE>\enlargethispage{\baselineskip}</CODE> pro přidání jednoho řádku na tuto
+stránku, můžete však použít jakoukoliv běžnou TeXovou jednotku délky,
+třeba 15mm nebo -20pt). Zmenšení velikosti běžné stránky si může vynutit
+useknutí textu a&nbsp;jeho přesunutí na další stránku; zvětšení stránky může
+způsobit, že se poznámky spojí do jednoho celku. To může být
+nevyhnutelné, pokud chcete změnit velikost více než jedné stránky.<BR>
+<CODE>fnbreak.sty</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/fnbreak">fnbreak</A>
+
+<P>
+<P><A NAME="Q-marginright"><HR><H3>Jak dostat <CODE>\marginpar</CODE> na správnou stranu?</H3></A>
+V&nbsp;ideálním světé by okrajové poznámky byly na analogických místech na každé
+stránce: na sudých stránkách v&nbsp;levém okraji, na lichých v&nbsp;pravém. Hned vidíme,
+že poznámka vlevo musí být vysázena jinak než poznámka napravo. LaTeXovský
+příkaz csx{marginpar} proto v&nbsp;oboustraných (<CODE>twoside</CODE>) dokumentech
+akceptuje dva parametry:
+<P>
+<CODE>\marginpar[left text]{right text}</CODE>
+</P>
+LaTeX používá &bdquo;zjevný&ldquo; test, aby dostal csx{marginpar} na správný okraj,
+ale úskalí je v&nbsp;tom, že vytváří stránky asynchronně. Když je csx{marginpar}
+spracován, zatímco je budována stránka ensuremath{n}, ale není použit až do
+stránky ensuremath{n}+1, pak se csx{marginpar} objeví na špatném okraji
+stránky. Toto je instance obecnějšího problému: viz <A HREF="sectR.html#Q-oddpage">Zistenie, či ste na párnej alebo nepárnej strane</A>.
+
+<P>
+Řešením tohoto problému by mohlo být zapamatování si, na kterou
+stranu stránky má být použit <CODE>\marginpar</CODE>. Toto umí balík
+<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/contrib/mparhack">mparhack</A>, který využívá značky
+uložené v&nbsp;<CODE>.aux</CODE> souboru.
+
+<P>
+<P><A NAME="Q-misschar"><HR><H3>Kam zmizli moje písmená?</H3></A>
+
+<P>
+Napísali a&nbsp;spracovali ste zjavne zmysluplný text, ale výsledok neobsahuje ani
+stopu po niektorých písmenách, ktoré ste napísali. Pravdepodobným dôvodom je,
+že vybraný font neobsahuje reprezentáciu dotyčných znakov.
+
+<P>
+Ak napríklad napíšem &bdquo;that will be GBP{}44.00&ldquo; do obyčajného
+TeXovského/LaTeXovského dokumentu alebo si vyberiem font <CODE>rsfs10</CODE>
+(obsahujúci iba veľké písmená) a&nbsp;napíšete takmer čokoľvek, znak libry
+(GBP{}) alebo akékoľvek malé písmená alebo číslice budú vo výstupe chýbať.
+Chybové hlásenie neexistuje, musíte si prečítať log súbor, kde nájdete záhadné
+malé správy ako
+<P>
+<PRE>
+Missing character:
+ There is no ^^a3 in font cmr10!
+Missing character:
+ There is no 3 in font rsfs10!
+</PRE>
+</P>
+(prvá demonštruje neochotu môjho TeXu vysporiadať sa so&nbsp;znakmi s&nbsp;osembitovou
+znakovou sadou, zatiaľ čo príklad <CODE>rsfs10</CODE> ukazuje, že TeX
+zaznamenáva dotyčný chybný znak, ak si myslí, že je to možné).
+
+<P>
+Trochu lepšie pochopiteľné sú diagnostiky, ktoré dostanete z&nbsp;<CODE>dvips</CODE>,
+keď používate OT1 a&nbsp;T1 verzie fontov dodávaných v&nbsp;štandardnom
+kódovaní Adobe:
+<P>
+<PRE>
+dvips: Warning: missing glyph `Delta'
+</PRE>
+</P>
+Proces generujúci metriky pre používanie fontu generuje inštrukciu pre
+<CODE>dvips</CODE>, aby produkovalo tieto diagnostiky, aby ich neprítomnosť
+v&nbsp;tlačenom výstupe bola menej prekvapujúca, než by mohla byť. Dosť glyfov
+poskytnutých v&nbsp;Knuthovych textových kódovaniach a&nbsp;v&nbsp;Corkovskom kódovaní nie je
+v&nbsp;Adobe fontoch dostupných. V&nbsp;týchto prípadoch <EM>existuje</EM> vysádzaný symbol
+týchto znakov: <EM>dvips</EM> vytvára čierny obdĺžnik veľkosti fontu.
+
+<P>
+<P><A NAME="Q-xspace"><HR><H3>Príkazy požierajú nasledujúce medzery</H3></A>
+
+<P>
+Ľudia sú stále prekvapení, že jednoduché príkazy požierajú medzeru, ktorá za
+nimi nasleduje: je to jednoducho tak. Efekt vzniká pre spôsob práce TeXu,
+Lamport popisuje riešenie (umiestnite jedny zložené zátvorky za vyvolanie
+príkazu) v&nbsp;popise syntaxe LaTeXu. Takže požiadavka je vlastne súčasťou
+definície LaTeXu.
+
+<P>
+Anglické FAQ je napríklad napísané s&nbsp;definíciami <EM>vyžadujúcimi</EM>
+písanie csx{fred{relax}}
+pre takmer všetky vyvolania makier bez ohľadu na to, či je nasledujúca medzera
+potrebná: anglické FAQ je však písané veľmi oddanými (a&nbsp;podľa niekoho
+zvláštnymi) ľuďmi. Mnoho používateľov si myslí, že písanie tých všetkých
+zložených zátvoriek sa veľmi rýchlo stane veľmi únavným, a&nbsp;radšej by ich vôbec
+nepísali.
+
+<P>
+Alternatívnou štruktúrou, ktorá neporušuje návrh LaTeXu, je napísať
+csx{fred}csx{ }&nbsp;&mdash; príkaz csx{ } je &bdquo;samoukončovací&ldquo; (ako <CODE>\</CODE>{}<CODE>\</CODE>)
+zložené zátvorky za neho už písať nemusíte. Znížite teda počet extra znakov
+na jeden.
+
+<P>
+Ak je aj ten jeden znak priveľa, balík <CODE>xspace</CODE> definuje príkaz
+csx{xspace}, ktorý háda, či by za ním mala byť medzera, a&nbsp;ak si myslí, že
+mala, vloží ju. Takže
+&bdquo;<CODE>fredcsx{xspace</CODE> jim}&ldquo; vytvorí &bdquo;fred jim&ldquo;, zataiľ čo
+&bdquo;<CODE>fredcsx{xspace</CODE>.@ jim}&ldquo; vytvorí &bdquo;fred. jim&ldquo;. Jeho použitie by
+samozrejme bolo úplne nezmyselné, csx{xspace} ale môžete zabudovať do
+vlastných makier:
+<P>
+<PRE>
+\usepackage{xspace}
+...
+\newcommand{\restenergy}%
+ {\ensuremath{mc^2}\xspace}
+...
+and we find \restenergy available to us...
+</PRE>
+</P>
+Príkaz csx{xspace} musí byť poslednou vecou v&nbsp;definícii vášho makra
+(ako v&nbsp;príklade); nie je to úplne bezchybné, ale poradí si s&nbsp;väčšinou situácii
+v&nbsp;texte.
+
+<P>
+Balík <CODE>xspace</CODE> vám nič neušetrí, ak modifikované makro použijete raz
+alebo dvakrát v&nbsp;dokumente. V&nbsp;každom prípade buďte pri použití csx{xspace}
+opatrní&nbsp;&mdash; zmení vašu vstupnú syntax, čo môže byť mätúce, hlavne pre
+spolupracujúceho autora (predovšetkým ak vytvoríte nejaké príkazy, ktoré to
+používajú, a&nbsp;nejaké, ktoré nie). Žiadny príkaz zabudovaný do LaTeXu alebo
+akejkoľvek triedy, prípadne balíku, samozrejme csx{xspace} používať nebude.<BR>
+<CODE>xspace.sty</CODE>: distribuované ako súčasť <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/tools">2etools</A>
+
+<P>
+<P><A NAME="Q-exscale"><HR><H3>Matematické symboly sa nezvetšujú</H3></A>
+
+<P>
+&bdquo;Veľké&ldquo; matematické symboly štandardne zostávajú rovnakej veľkosti nezávisle
+na veľkosť fontu textu dokumentu. Existuje pre to dobrý dôvod: fonty
+<CODE>cmex</CODE> nie sú navrhnuté na zmenu veľkosti, takže TeXovský
+algoritmus umiestňovania matematiky nepracuje tak dobre, ako by mohol, ak
+by boli fonty zväčšovateľné.
+
+<P>
+Toto správanie však mätie očakávania používateľov a&nbsp;môže viesť k&nbsp;trochu
+zvláštne vyzerajúcim dokumentom. Ak napriek varovanie chcete, aby sa fonty
+dali zväčšovať, použite balík <CODE>exscale</CODE>&nbsp;&mdash; stačí ho iba nahrať.<BR>
+<CODE>exscale.sty</CODE>: súčasť distribúcie LaTeXu.
+
+<P>
+<P><A NAME="Q-t1enc"><HR><H3>Prečo používať <CODE>fontenc</CODE> namiesto <CODE>t1enc</CODE>?</H3></A>
+
+<P>
+V&nbsp;raných časoch LaTeX&nbsp;2e bol jediním spôsobom používania T1 kódovania
+balík <CODE>t1enc</CODE>. S&nbsp;vydaním z&nbsp;leta 1994 sa objavil balík <CODE>fontenc</CODE>
+a&nbsp;poskytol vyčerpávajúcu podporu použitia kódovania.
+
+<P>
+Napriek tomu tu balík <CODE>t1enc</CODE> zostáva (ako súčasť kódu kompatibility
+LaTeX&nbsp;2.09), ale robí veľmi málo: iba vyberie kódovanie fontov T1
+a&nbsp;na používateľovi nechá záležitosti generovania potrebných kódov znakov.
+
+<P>
+Generovanie takýchto kódov znakov by mohla byť jednoduchá záležitosť, keby
+T1 kódovanie zodpovedalo ľubovolnému široko podporovanému kódovaciemu
+štandardu, pretože v&nbsp;takomto prípade by ste mohli očakávať generovanie kódov
+znakov klávesnicou. T1 kódovanie je však zmesou rôznych štandardných
+kódovaní a&nbsp;zahŕňa kódové miesta v&nbsp;oblastiach tabuľky, ktoré štandardné
+kódovanie špecificky vylučujú, takže žiadne T1 klávesnice neboli
+(a&nbsp;nikdy nebudú) vyrobené.
+
+<P>
+Balík <CODE>fontenc</CODE> naproti tomu generuje kódové miesta T1 z&nbsp;bežných
+LaTeX príkazov (generuje napríklad kódové miesto znaku <CODE>'e</CODE>
+z&nbsp;príkazu <CODE>\'</CODE>{}<CODE>e</CODE>). Pokiaľ teda nemáte programovo generovaný T1
+vstup, použite <CODE>\usepackage[T1]{fontenc}</CODE> namiesto <CODE>\usepackage{t1enc}</CODE>.
+
+<P>
+<P><A NAME="Q-why-inp-font"><HR><H3>Prečo sa trápiť s&nbsp;<CODE>inputenc</CODE> a&nbsp;<CODE>fontenc</CODE>?</H3></A>
+
+<P>
+Štandardné vstupné kódovanie pre západnú Európu (čakajúc príchod Unicode) je
+ISO&nbsp;8859&ndash;1 (bežne známe podtitulom štandardu &bdquo;Latin-1&ldquo;). Latin-1 je
+v&nbsp;pokrytí kódových miest pozoruhodne blízko TeXovskému T1 kódovaniu.
+
+<P>
+Prečo by sme sa mali za týchto okolností trápiť s&nbsp;<CODE>inputenc</CODE>
+a&nbsp;<CODE>fontenc</CODE>? Kedže sa v&nbsp;podstate kopírujú, mohli by sme ich odstrániť
+a&nbsp;použiť <CODE>t1enc</CODE> (napriek jeho nedostatkom&nbsp;&mdash; viď
+Otázku <A HREF="sectR.html#Q-t1enc">Prečo používať <CODE>fontenc</CODE> namiesto <CODE>t1enc</CODE>?</A>).
+
+<P>
+Nerobí sa to ale pre množstvo drobných dôvodov:
+<UL>
+ <LI><B>Zmätenie</B>
+ Spokojne ste v&nbsp;tomto móde písali a&nbsp;z&nbsp; nejakého dôvodu prepnete
+ na písanie v&nbsp;nemčine: efekt použitia &bdquo;<CODE>ss</CODE>&ldquo; je tak trochu
+ prekvapivý, kedže T1 a&nbsp;Latin-1 s&nbsp;kódovým miestom zaobchádzajú inak.
+ <LI><B>Kompatibilita</B>
+ Zistíte, že potrebujete pracovať s&nbsp;kolegom vo východnej
+ Európe: ich klávesnice bude zrejme nastavená tak, aby produkovala Latin-2,
+ takže jednoduché mapovanie nefunguje.
+ <LI><B>Tradičný LaTeX</B>
+ Napíšete niečo ako <CODE>\'</CODE>{}<CODE>e</CODE> namiesto <CODE>'e</CODE>;
+ iba <CODE>fontenc</CODE> má prostriedky pre konverziu tejto LaTeXovskej
+ sekvencie do T1 znaku, takže primitívum csx{accent} prekĺzne do
+ výstupu a rozdeľovanie je ohrozené.
+</UL>
+Kombinácia <CODE>inputenc</CODE>&ndash;<CODE>fontenc</CODE> vyzerá pomalá a&nbsp;ťažkopádna,
+je však bezpečná.
+
+<P>
+<P><A NAME="Q-eqnarray"><HR><H3>Prečo nepoužiť <CODE>eqnarray</CODE>?</H3></A>
+
+<P>
+Prostredie <CODE>eqnarray</CODE> je pre príležitostného používateľa matematiky
+v&nbsp;LaTeXovských dokumentoch atraktívne: vyzerá, že povoľuje zarovnané systémy
+rovníc. Skutočne, tieto veci prostredie poskytuje, ale v&nbsp;rozostupoch znakov
+urobí pekný neporiadok. V&nbsp;systéme:
+<P>
+<PRE>
+\begin{eqnarray}
+ a & = & b + c \\
+ x & = & y - z
+\end{eqnarray}
+</PRE>
+</P>
+<EM>nie sú</EM> rozostupy okolo znakov `=' tie definované v&nbsp;metrike fontu,
+z&nbsp;ktorého pochádza glyf&nbsp;&mdash; sú to csx{arraycolsep}, čo môže byť nastavené na
+veľmi divnú hodnotu z&nbsp;dôvodov spojených so skutočnými poliami na inom mieste
+dokumentu.
+
+<P>
+Používateľa oveľa lepšie obslúži sada AMSLaTeX, ktorá poskytuje prostredie
+<CODE>align</CODE> navrhnuté rešpektujúc potreby matematikov (oproti pohodliu
+LaTeXovských programátorov). Pre tento jednoduchý dôvod (align je schopné
+oveľa lepších vecí) použite:
+<P>
+<PRE>
+\begin{align}
+ a & = b + c \\
+ x & = y - z
+\end{align}
+</PRE>
+</P>
+<CODE>AMSLaTeX</CODE>: <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/latex/required/amslatex">amslatex</A>
+
+<P>
+
+<P>
+<P><A NAME="Q-dolldoll"><HR><H3>Prečo používať csx{[} ...csx{]} namiesto <CODE>$$</CODE>...<CODE>$$</CODE>?</H3></A>
+
+<P>
+LaTeX definuje príkazy &bdquo;inline&ldquo; a&nbsp;&bdquo;display&ldquo; matematiky, zjavne
+analogické k&nbsp;tým, čo sú odvodené z&nbsp;TeXovských príkazov na zátvorkovanie
+matematických sekvencií so znakmi doláru (alebo dvojicami znakov doláru).
+
+<P>
+Ako sa ukázalo, LaTeXovské inline zoskupovanie matematiky
+csx{(}<CODE> ... </CODE>csx{)} má presne rovnaký účinok ako TeXovská
+primitívna verzia <CODE>$ ... $</CODE>. (Jediný rozdiel je, že LaTeXovská
+verzia kontroluje, či ste nepoužili csx{(} a&nbsp;csx{)} zle.)
+
+<P>
+Za týchto okolností sa často nájdu používatelia LaTeXu majúci nejaké
+skúsenosti s&nbsp;používaním Plain TeXu, ktorí jednoducho predpokladajú, že
+LaTeXovské zoskupovanie display matematiky csx{[}<CODE> ... </CODE>csx{]}
+môže byť vymenené TeXovským primitívnou display matematikou
+<CODE>$$ ... $$</CODE>.
+
+<P>
+Bohužiaľ sa mýlia: ak LaTeXovský kód bude upravovať display matematiku,
+môže tak učiniť iba úpravou csx{[} a&nbsp;csx{]}. Najzjavnejším spôsobom, ako sa
+to prejaví, je, že voľba triedy <CODE>fleqn</CODE> jednoducho nefunguje pre rovnice
+napísané pomocou <CODE>$$ ... $$</CODE>, či už používate iba štandardné triedy,
+alebo balík <CODE>amsmath</CODE>.
+
+<P>
+Existujú aj zákernejšie efekty (hlavne s&nbsp;balíkom <CODE>amsmath</CODE>),
+jednoduché pravidlo je csx{[}<CODE> ... </CODE>csx{]}, kedykoľvek
+je v&nbsp;LaTeXu potrebná neozdobená display matematika.
+
+<P>
+<P><A NAME="Q-picerror"><HR><H3>Proč nemůžu nahrát PiCTeX</H3></A>
+
+<P>
+PiCTeX je poměrně náročný na systémové zdroje. Naštěstí většina
+moderních TeXových distribucí nabízí poměrně dost prostoru a&nbsp;moderní
+počítače již jsou oproti svým předchůdcům o&nbsp;mnoho rychlejší, takže
+uživatele tato skutečnost nemusí znervózňovat. Nicméně PiCTeX má
+jednu nešťastnou tendenci&nbsp;&ndash;&nbsp;rád zaplňuje pole s&nbsp;pevnou délkou alokovaná
+TeXem &ndash; zvláště 256 &bdquo;rozměrových&ldquo; registrů. To je problém zvláště,
+pokud v&nbsp;LaTeXu používáte <EM>pictex</EM> a&nbsp;další balíky, které
+potřebují stejné systémové zdroje. Pokud k&nbsp;tomu dojde, pak vám LaTeX
+vypíše chybovou hlášku <BR>
+<CODE>&nbsp;!&nbsp;No&nbsp;room&nbsp;for&nbsp;new&nbsp;\dimen.</CODE><BR>
+S&nbsp;touto chybou nelze nic udělat: nemůžete totiž zvýšit počet dostupných
+rozměrových registrů, aniž by to udělal sám TeX (toto umí automaticky
+e-TeX a&nbsp;Omega&nbsp;&ndash;&nbsp;viz Otázku <A HREF="sectT.html#Q-omega">Projekt Omega</A>
+a&nbsp;Otázku <A HREF="sectT.html#Q-NTS">Projekt <I>NTS</I></A> a&nbsp;VTeX od firmy MicroPress Inc.&nbsp;&ndash;&nbsp;viz
+Otázku <A HREF="sectF.html#Q-commercial">Komerční implementace TeXu</A>).
+Je celkem praktické (u&nbsp;většiny moderních distribucí) použít rozšířenou
+sadu registrů e-TeXu: použijte balík <CODE>etex</CODE> (kterí se dodává
+s&nbsp;distribucemi e-TeXu) a&nbsp;alokační mechanismus je pozměněn, aby se vyspořádal
+s&nbsp;vétšími sadami registrů: PiCTeX se teď nahraje.
+
+<P>
+Když nemůžete použít e-TeX, musíte změnit PiCTeX; bohužel
+jeho autor není již delší dobu v&nbsp;TeXovém světě aktivní, proto se
+musíte uchýlit k&nbsp;&bdquo;patchování&ldquo;. Dostupná jsou dvě řešení:
+<UL>
+ <LI> CONTeXtové moduly <CODE>m-pictex.tex</CODE> (pro Plain-TeX a&nbsp;jeho
+varianty) a&nbsp;<CODE>m-pictex.sty</CODE> (pro LaTeX; oba soubory jsou dostupné
+v&nbsp;souboru <A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/macros/context/cont-tmf.zip">cont-tmf.zip</A>). Soubor
+<CODE>m-pictex.tex</CODE> nabízí důmyslné řešení založené na úpravě kódu
+příkazu <CODE>\newdimen</CODE>.
+ <LI> Alternativně <CODE>pictexwd</CODE> Andrease Schella
+(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/graphics/pictex/addon">addon</A>) nahrazuje PiCTeX verzí, které používá
+o&nbsp;33 &bdquo;rozměrových&ldquo; registrů méně. Takže místo souborů <CODE>pictex</CODE>
+používejte <CODE>pictexwd</CODE>.
+</UL>
+A jak může někdo použít PiCTeX,
+když je těžké sehnat manuál (viz Otázku <A HREF="sectC.html#Q-PiCTeXman">Manuál k programu PiCTeX</A>)? Naštěstí
+pro uživatele
+MSDOSu a&nbsp;Windows, může být <EM>MathsPic</EM>
+(<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/">CTAN</A>:&nbsp;<A HREF="ftp://ftp.cstug.cz/pub/tex/CTAN/graphics/pictex/mathspic">mathspic</A>) použit pro přeložení z&nbsp;jiného jazyka
+do instrukcí PiCTeXu a&nbsp;manuál k&nbsp;MathsPicu
+je přímo součástí distribuce. <EM>MathsPic</EM> je napsán
+v&nbsp;Basicu; Perlová
+verze by měla být dostupná během roku 2001.
+
+<P>
+
+<P><HR></TD></TR>
+<TR><TD></TD><TD><TABLE BORDER=0><TR>
+<TD valign=middle align=left>
+<a href="http://www.cstug.cz/">
+<IMG BORDER=0 SRC="images/logo.gif"
+ ALT="CSTUG" HEIGHT=51 WIDTH=165 ALIGN="right"><BR>
+</TD><TD valign=top align=left><FONT SIZE="-1">
+(c) 1997, 1998, 2003
+Tomáš Hudec, Libor Škarvada
+<BR>
+Poslední aktualizace: 13.11.2004 23:15
+</FONT></TD></TR></TABLE></TD></TR></TABLE>
+
+</BODY>
+</HTML>