summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html')
-rw-r--r--Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html249
1 files changed, 249 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html b/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html
new file mode 100644
index 00000000000..7f743523a42
--- /dev/null
+++ b/Master/texmf-doc/doc/czechslovak/cstug/csfaq/sectS.html
@@ -0,0 +1,249 @@
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-2">
+<TITLE>Chyby v TeXu</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>Chyby v TeXu</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>
+Poněvadž TeX je makroprocesor, je často poměrně obtížné porozumět jeho
+chybovým hláškám; to je bohužel vlastnost makroprocesorů. Knuth se
+snažil vnést jasno do tohoto problému ve svém TeXbooku tím, že
+uživatelům naznačil, aby získlali detektivní schopnosti moderního
+Sherlocka Holmese; ačkoliv má tento přístup jakýsi romantický nádech,
+není pro aktivní uživatele (La)TeXu příliš užitečný. Tato odpověď
+(z&nbsp;části odvozená z&nbsp;článku Sebastiana Rathze z&nbsp;<I>TUGboatu</I>
+Vol 16(4)) nabízí
+obecnou radu, jak reagovat na chyby pomocí chybových zpráv a&nbsp;jiné
+odpovědi v&nbsp;této sekci pojednávají o&nbsp;jiných bežných (ale matoucích)
+chybách, se kterými se můžete v TeXu setkat. V&nbsp;Sebastianově článku se
+objevuje obsáhlý seznam rad, v němž mimo jiné stojí:
+<UL>
+ <LI> Podívejte se podrobně na chybu; některé chyby se nejprve mohou zdát
+záhadné, ale často obsahují přímé vodítko k&nbsp;vyřešení problému. Pro další
+detaily je dobré si pročíst následující otázku.
+ <LI> Přečtěte si soubor <CODE>.log</CODE>; obsahuje podrobnější informace o&nbsp;věcech,
+kterým třeba nerozumíte, často nejsou předloženy jako chyby.
+ <LI> Buďte si vědomi množství souvislostí, které TeX obnáší. Chybové
+hlášky vám dávají kousky TeXového kódu (nebo samotného dokumentu),
+aby vám ukázal, kde se právě stala chyba, je možné zkontrolovat, kolik
+těchto chyb se ve vašem dokumentu objevuje. Nyní LaTeX dává TeXu
+pokyn, aby vám vypsal pouze jeden řádek z&nbsp;kontextu, avšak pokud chcete,
+můžete mu říct, aby vypsal více řádků. To provedete umístěním příkazu
+<CODE>\setcounter{errortextlines}{999}</CODE> v&nbsp;preambuli vašeho dokumentu.
+ <LI> Jako poslední východisko může být použítelným nástrojem trasování;
+čtení celého dokumentu vás může velice rychle zavést ke zdroji vašeho
+problému. Musíte si přečíst některé pasáže z&nbsp;TeXbooku
+(viz Otázku <A HREF="sectC.html#Q-books">Knihy o TeXu a příbuzná literatura</A>),
+abyste tomuto problému zcela porozuměli. Příkaz <CODE>\tracingall</CODE> nastavuje
+maximální trasování; nastavuje také výstup přicházející na interaktivní
+terminál. Běžně je nejjednodušší pročíst trasování použitím vašeho
+oblíbeného textového editoru k&nbsp;prohlížení <CODE>.log</CODE> souborů.
+</UL>
+
+<P>
+<P><A NAME="Q-errstruct"><HR><H3>Struktura chybových hlášek v TeXu</H3></A>
+
+<P>
+TeXové chybové hlášky připomínají dobu, kdy byl TeX vymyšlen
+(70.&nbsp;léta minulého století): k&nbsp;uživatelům nejsou příliš přátelské, ačkoliv
+obsahují veškeré informace, které může TeX nabídnout, obvykle jsou
+vyloženy přehledně a&nbsp;stručně. Všechny chybové hlášky mají v&nbsp;TeX{}u
+stejnou strukturu:
+<UL>
+ <LI> chybová hláška
+ <LI> kontext
+ <LI> stručný návod na řešení problému
+</UL>
+Chybová hláška uvede stav TeXu, který způsobil daný problém. Bohužel,
+v&nbsp;soustavě balíků maker jako je LaTeX však bývá odhalení konkrétního
+problému v&nbsp;makrech vyšší úrovně poměrně obtížné. Mnohé chyby, které se
+v&nbsp;LaTeXu objevují, se tváří jako generické chyby s&nbsp;chybným textem
+vloženým LaTeXem nebo jeho balíky.
+
+<P>
+Kontext chyby je stylizovaná reprezentace toho, co TeX udělal, když
+detekoval chybu. Jak bylo poznamenáno v&nbsp;Otázce <A HREF="sectS.html#Q-jaknane">Jak na chyby v TeXu?</A>,
+makrobalíček může TeXu říct, jak dlouhý kontext má zobrazit. Každá
+řádka kontextu je rozdělena v&nbsp;bodě chyby; pokud chyba ve skutečnosti
+nastane v&nbsp;makru volaném z&nbsp;aktuální řádky, zlom nastane v&nbsp;bodě volání.
+Pokud má makro parametry, tak se řádka zlomí až za posledním z&nbsp;nich. Např.
+<BR>
+<CODE>\blah and so on</CODE><BR> vyvolá chybu
+<PRE>
+! Undefined control sequence.
+1.4 \blah
+ and so on
+</PRE>
+zatímco
+<PRE>
+\newcommand{\blah}[1]{\bleah #1}
+\blah{to you}
+</PRE>
+má za důsledek hlášku
+<PRE>
+! Undefined control sequence.
+\blah #1->\bleah
+ #1
+1.5 \blah{\bleah}, folks
+</PRE>
+Pokud chyba nastane v&nbsp;argumentu, pak se nám mohou objevit věci jako
+např. po zadání
+<PRE>
+\newcommand{\blah}[1]{#1 to you}
+\blah{\bleah}, folks
+</PRE>
+si můžeme přečíst
+<PRE>
+! Undefined control sequence.
+<argument> \bleah
+
+<P>
+1.5 \blah{\bleah}
+ , folks
+</PRE>
+Příkazový řádek akceptuje jednoznakové příkazy, jejichž seznam si
+můžete nechat vypsat zadáním znaku <CODE>?</CODE>. Jedním z&nbsp;bezprostředně
+nejdůležitějších příkazů je říkaz <CODE>h</CODE>, který vám dá na výstup přesnější
+zprávu občas doplněnou pokynem, jak chybu odstranit, případně jak se
+jí vyhnout. Pokud stisknete <CODE>enter</CODE>, nebo jinou klávesu, kterou váš systém
+používá k&nbsp;ukončení řádky, TeX se pokusí pokračovat (často s&nbsp;poněkud
+menším úspěchem.)
+
+<P>
+<P><A NAME="Q-extrapz"><HR><H3>Pravá složená závorka navíc</H3></A>
+
+<P>
+Viděli jste ve vašem LaTeXovém zdroji znak
+&bdquo;<CODE>}</CODE>&ldquo;
+navíc a&nbsp;přesto LaTeX,
+v&nbsp;tomto místě nehlásil chybu? Toto je způsob, jak říci TeXu, že jste
+vložili křehký příkaz s&nbsp;pohyblivým argumentem (viz
+Otázku <A HREF="sectR.html#Q-protect">Proč se v LaTeXu užívá ochran (protection)</A>). Příkladem takovéhoto křehkého příkazu je
+třeba <CODE>\footnote</CODE>; pokud ho vložíte jako argument příkazu <CODE>\section</CODE>,
+pak vám sekvence
+<PRE>
+\section{Mumble\footnote{I couldn't think of anything better}}
+</PRE>
+dá na výstup:
+<PRE>
+! Argument of \@sect has an extra }.
+</PRE>
+Obvykle se tato situace řeší použitím robustního příkazu namísto toho,
+který používáte nebo přeměnit váš příkaz na robustní pomocí prefixu
+<CODE>\protect</CODE>, který ve výše zmíněném případě může vypadat takto:
+<PRE>
+\section{Mumble\protect\footnote{I couldn't think of anythimg better}}.
+</PRE>
+Na závěr ještě jedna poznámka: <CODE>\protect</CODE> vždy nemusí být řešením,
+Otázka <A HREF="sectO.html#Q-pozntab">Poznámky pod čarou v tabulkách</A> popisuje jednotlivé případy.
+
+<P>
+<P><A NAME="Q-nenimisto"><HR><H3>Není místo pro přidání nových věcí</H3></A>
+
+<P>
+Technologie, která byla Knuthovi dostupná v&nbsp;době, kdy vytvářel TeX,
+příliš neumožňovala spravovat dynamické paměti; většinou jsou místa
+v&nbsp;paměti v&nbsp;TeXu alokována jako pole pevné délky. Mnoho těchto fixovaných
+polí je v&nbsp;moderních implementacích TeXu rozšiřitelných, avšak velikost
+polí těchto registrů je obecně omezena počtem 256; většinou nemůže být
+změněna, pokud stále budete chtít zavolat výsledky TeXu (viz
+Otázku <A HREF="sectB.html#Q-LaTeXwhat">Co je to LaTeX</A>).
+Pokud naplníte jeden z&nbsp;těchto registrů, můžete dostat chybovou hlášku
+<PRE>
+! No room for a new \<thing>.
+</PRE>
+Zde se místo <CODE>\<thing></CODE> může objevit <CODE>\count</CODE> (objekt, který tvoří
+základ příkazu <CODE>\newcounter</CODE>), <CODE>\skip</CODE> (objekt, který tvoří základ
+příkazu <CODE>\newlength</CODE>), <CODE>\box</CODE> (objekt, který tvoří základ příkazu
+<CODE>\newsavebox</CODE>), <CODE>\dimen</CODE>, <CODE>\muskip</CODE>, <CODE>\toks</CODE>, <CODE>\read</CODE>,
+<CODE>\write</CODE> nebo <CODE>\language</CODE> (všechny typy balíků, které se zde
+používají, jsou v&nbsp;LaTeXu skryté; limit počtu objektů
+<CODE>\read</CODE> a&nbsp;<CODE>\write</CODE> je omezen číslem 16).
+
+<P>
+Není zde žádná možnost, jak
+tuto chybu přímo opravit, nemůžete totiž přímo zvětšit počet dostupných
+registrů, aniž by to učinil přímo LaTeX. (Jistě, Omega
+a&nbsp;e-TeX&nbsp;&ndash;&nbsp;viz Otázku <A HREF="sectT.html#Q-omega">Projekt Omega</A> respektive
+Otázku <A HREF="sectT.html#Q-NTS">Projekt <I>NTS</I></A>&nbsp;&ndash;&nbsp;to umí, stejně jako VTeX firmy
+MicroPress Inc&nbsp;&ndash;&nbsp;viz Otázku <A HREF="sectF.html#Q-commercial">Komerční implementace TeXu</A>). Nejobecnější
+způsob, jak se setkat s&nbsp;jednou z&nbsp;těchto chyb, je použít nefunkční makro
+nebo použít dobré makro na špatném místě (případy jsou diskutovány
+v&nbsp;Otázce <A HREF="sectS.html#Q-epsfbit"><CODE>epsf</CODE> přestává po jisté době spolupracovat</A>). Nicméně občas potřebujete více, než vám
+TeX může nabídnout, pokud se tak stane,
+musíte použít jiný způsob vytvoření objektů. Příkladem je složitější
+nahrávání PiCTeXu v&nbsp;LaTeXu (viz Otázku <A HREF="sectR.html#Q-picerror">Proč nemůžu nahrát PiCTeX</A>).
+
+<P>
+<P><A NAME="Q-epsfbit"><HR><H3><CODE>epsf</CODE> přestává po jisté době spolupracovat</H3></A>
+
+<P>
+Zdá se, že některé kopie dokumentace <CODE>epsf.tex</CODE> naznačují, že příkaz
+<CODE>\input epsf</CODE> je potřebný pro každý vložený symbol. Pokud vezmete toto
+doporučení příliš doslovně, pak se vám za chvíli objeví chyba
+<PRE>
+! No room for a new \read.
+</PRE>
+Je to protože pokaždé, když se <CODE>epsf.tex</CODE> nahrává, je alokován nový
+handle pro soubor určený pouze pro čtení, který kontroluje tento soubor
+a&nbsp;pak zde není dost místa pro další věci (viz
+Otázku <A HREF="sectS.html#Q-nenimisto">Není místo pro přidání nových věcí</A>). Řešení je jednoduché&nbsp;&ndash;&nbsp;toto je totiž
+případ nesprávného použití maker; každý
+totiž potřebuje číst <CODE>epsf.tex</CODE> pouze jednou, změňte tedy
+<PRE>
+...
+\input epsf
+\epsffile{...}
+...
+\input epsf
+\epsffile{...}
+atd.
+</PRE>
+na
+<PRE>
+\input epsf
+</PRE>
+kdesi na začátku dokumentu a&nbsp;pak doplňte váš příkaz <CODE>\epsffile</CODE>
+přizpůsobením velikosti pomocí příkazu <CODE>\epsfxsize</CODE>.
+
+<P>
+
+<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>