|  | 
Vyhledávání podle slov v CS-FAQ 
 
 Nezvykle rozdělená slova
 
Pravděpodobně je problém v pomíchaných verzích TeXu.
Systém dělení se totiž s přechodem od verze 2.9 na 3.0 změnil.
Používá-li se (plain) TeX verze 3.0 nebo pozdější, je třeba
se ujistit, že  souborplain.texje alespoň verze 3.0.
Používá-li se LaTeX 2.09 (poslední verze byla uvedena 25.března 1992),
bylo by dobré přejít na  LaTeX 2e, jelikož zdrojové soubory LaTeXu 2.09
již nejsou veřejně k dispozici. Pokud nemůžete upgradovat na verzi
LaTeX 2e, pak si můžete z
CTAN: latex209.tar stáhnout poslední
verzi LaTeXu 2.09 vydanou 25. března 1992. Tím měl být váš problém
vyřešen. 
Používá-li se LaTeX 2e, je příčina chybného dělení pravděpodobně
v souboru hyphen.cfg, který musí být vytvořen, používáme-li
více jazyků najednou. 
Pro toho, koho to zajímá, problém spočívá v tomto:
V TeXu do verze 3.0 neumožňoval algoritmus dělení slov
rozdělit slovo, pokud první část rozděleného slova neobsahovala
alespoň dva znaky a jeho druhá část alespoň znaky tři.
Počínaje  verzí 3.0  lze řídit minimální velikost těchto částí
pomocí celočíselných parametrů \lefthyphenmina\righthyphenmin.
V nových formátechplainalplainjsou nastaveny na hodnoty  2 a 3.
Mohou být samozřejmě nastaveny na libovolnou hodnotu,
s tím, že překročí-li součet\lefthyphenmin+\righthyphenminhodnotu 62, nebude docházet k žádnému dělení slov. 
Jiný zdroj této této zvláštnosti může pocházet z Corkovsky kódovaných
fontů vydaných roku 1995 (viz Otázku Co jsou to DC a EC písma), které přišli
s novým alternativním stylem dělení. V konfiguračním souboru LaTeXu 2e
je možné u uvedených fontů povolit alternativní dělení, to může způsobit
u některých slov  zvláštní vedlejší efekt. Konfigurační soubory z
LaTeXu 2e vydaného v prosinci 1995 však alternativní dělení
nepoužívají.
 
 
 cslatex ignoruje \hyphenationa\righthyphenmin
 
V českých a slovenských dokumentech cslatextyto deklarace ignoruje,
přestože v LaTeXu 2.09 to fungovalo.
Příčina rozdílného chování tkví v tom, že stylyczech.styaslovak.sty, kterécslatexpoužívá, vkládají přepínací makro\czechresp.\slovakprostřednictvím\AtBeginDocument.
Všechny změny nastavované v preambuli se tudíž týkají implicitního\language 0, jímž je americká angličtina.  Toto chování má
racionální důvod.  Pokud při zavádění stylu pro češtinu (nadále budeme
pro jednoduchost mluvit pouze o češtině, pro slovenštinu platí
totéž) použijeme parametrsplit, aby se slova s rozdělovníkem dělila
podle českých typografických pravidel, je znak minus aktivní a nebylo by
tudíž možno zadávat záporná čísla a záporné rozměry.  To by ovšem značně
komplikovalo nastavování různých parametrů v preambuli dokumentu.  Navíc
by to způsoboovalo, že některé další styly by podle okolností někdy
přestaly fungovat.  Změny\righthyphenmina\lefthyphenmini definici výjimek dělení\hyphenationtedy musíme umístit až za\begin{document}. 
Často je žádoucí, aby tyto změny byly specifikovány ve stylovém
souboru. Pak ovšem musíme zajistit, aby se provedly až po nastavení
češtiny.  Budeme-li např. celý dokument sázet do úzkých sloupců, můžeme
použít
 
 
\RequirePackage[split]{czech}
\AtBeginDocument{\righthyphenmin 2\relax}
\end{document}
Primitiv \relaxchrání před případnou následující chybnou definicí,
která by při své expanzi vytvořila číslici.  Příkazem\RequirePackagesi zajistíme, že seczech.stynačte dříve než náš
styl a nastavení se skutečně provede pro češtinu. 
Pokud vytváříme vícejazyčný dokument, je situace o něco složitější.
Příkaz \czechtotiž vždy nastaví standardní hodnoty.  Pokud chceme,
aby se\righthyphenminpo přepnutí češtiny vždy nastavil na
hodnotu 2, můžeme toho dosáhnout například následujícími definicemi: 
 
\RequirePackage[split]{czech}
\let\OriginalCzech\czech
\def\czech{\OriginalCzech \righthyphenmin 2\relax}
Specifikace výjimek dělení je poněkud jednodušší.  Příkaz
\hyphenationje vždy prováděn globálně.  Abychom nepoškodili další
makra případnými aktivními znaky, můžeme definice výjimek dělení uzavřít
do skupiny například takto: 
 
{\czech \hyphenation{po-po-ka-te-pe-tl}}
 
 
 Podivné dělení slov v angličtině
 
Může se stát, že slavné automatické dělění slov  TeXu nedělí v místech,
která jsou doporučena ve slovníku. Dochází k tomu zřejmě proto, že TeX
používá americkou angličtinu, jejíž pravidla pro dělení slov
(tak jak jsou uvedena, například, ve  Webster's Dictionary)
jsou zcela odlišná od pravidel angličtiny britské
(tak jak jsou uvedena, například, v Oxford Dictionaries). Na řešení tohoto
problému se podílí především Sdružení uživatelů   TeXu Spojeného
Království (UK TeX User community) (viz jejich časopis Baskerville{},
vydání 4.4), avšak naprosto uspokojivé řešení je náročné na čas.
 
 
 
 Akcentovaná slova se nedělí
 
TeXovský algoritmus dělení slov neuvažuje jako jedno slovo takové,
které má v sobě zahrnutý příkaz \accent.  Jsou pro to dobré příčiny,
ale znamená to, že kvalitní sazba neanglických jazyků je obtížná. 
Aby se TeX vyhnul těmto těžkostem, bylo přijaté Corkovské kódování
(viz Otázku Co jsou to DC a EC písma),
které obsahuje akcentované znaky jako samostatné znaky. Uživatelé
LaTeXu mohou dosáhnout tohoto řešení vložením příkazu
 
  \usepackage[T1]{fontenc}
do preambule  dokumentu. Jiná kódování (např. LY1 podporované Y&Y
-- viz Otázku Komerční implementace TeXu) mohou být použita místo T1. Většina
současných 8-bitových kódování by měla pracovat s většinou současných
sad dělících šablon.
Snad v budoucnosti Omega (viz Otázku Projekt Omega)
poskytne celkem nové řešení.
 
 
 
 Rozšíření kapacity TeXu
 
Občas se stane, že se objeví na terminálu zpráva:
,,memory capacity exceeded`` (překročení kapacity paměti).
Za chybovou hláškou se pak v závorce objeví, co bylo vyčerpáno. Např.:
 
   ! TeX capacity exceeded, sorry
                  [main memory size=263001].
Většinu takovýchto chyb lze vyřešit bez jakéhokoli rozšiřování
kapacity TeXu.  Nejběžnějšími příčinami jsou nepárové závorky, velmi
dlouhé řádky a špatně napsaná makra.  Velmi dlouhé řádky (extra-long
lines) vznikají často při chybném přenosu souborů mezi rozdílnými
operačními systémy a zvláště tehdy, když znaky označující konec řádky
nejsou převedeny vhodným způsobem (příznakem chyby zapříčiněné velmi
dlouhými řádky je chybová zpráva o překročení
velikosti bufferubuf_size).
Pokud je skutečně třeba rozšířit kapacitu TeXu, volba vhodné metody
závisí na  použité instalaci.
Nejčistší formou jak rozšíření provést, je změnit parametry přímo
v modulu 11 zdrojového WEB souboru. Pak musíte znovu překompilovat váš
TeX a vygenerovat všechny formátové soubory.
 
Moderní implementace umožňují změnit velikost některé části paměti
TeXu semi-dymanicky. Některé (třeba em-TeX) umožňují
nastavit kritéria pro velikost přidělené paměti přímo z příkazové řádky,
když program spouštíte. Poměrně často čte TeX při spouštění
konfigurační soubor, v němž je specifikována velikost paměti. V
systémech založených na web2c je tento soubor pojmenovaný
texmf.cnf:  podívejte se do dokumentace vaší implementace. Opět
tento soubor musí být v mnoha případech  po změně parametrů paměti znovu
generován. 
 
 Plovoucí tabulky a obrázky LaTeXu
 
Tabulky a obrázky (figures) mají sklon k tomu, aby nás udivovaly svým
odplouváním z místa, kde měly být původně vysazeny. Děje se
tak proto, aby bylo dosaženo dokonalého vzhledu dokumentu.
Každý profesionální  systém určený pro sazbu nechává ,,odplouvat``
tabulky a obrázky na taková místa, kde jejich umístění nevede k narušení
typografických pravidel. Dokonce užijeme-li parametru hve zdrojovém textu, abychom dosáhli umístění ,,zde`` (here), obrázek či
tabulka nebude vytištěna ,,zde`` v případě, že by to tato pravidla
narušilo.
Pravidla samotná jsou poměrně jednoduchá, a jsou popsána na
str. 198, v kapitole C.9 manuálu LaTeXu.
V horším případě pravidla  LaTeXu mohou vést k nakupení plovoucích
objektů takového rozsahu, jež vede k chybové zprávě
,,Too many unprocessed floats`` (Přespříliš nezpracovaných plovoucích
objektů). To znamená, že omezený počet registrů, ve kterých
LaTeX uchovává plovoucí objekty, je naplněn.
Následuje jednoduchý přehled toho, co je třeba udělat, abychom
takové problémy vyřešili
(v přehledu se hovoří o obrázcích, ale totéž platí i o tabulkách). 
  Zvolili jsme správné parametry umístění obrázku?
   Předdefinované (default) parametry (tbp) většinou dostačují.
   Nikdy by se nemělo používat, například, samotného parametruh,
   poněvadž tím je řečeno: 
,,jestliže to nemohu umístit zde (here),
   nemohu to umístit ani někde jinde`` a následkem toho se za tímto obrázkem
   nakupí všechny následující plovoucí objekty. Můžeme ochránit naše obrázky od odplutí nastavením parametru LaTeXu
   pro umístění plovoucích objektů? I zde lze říci, že přednastavené hodnoty
   jsou přiměřené, avšak mohou být v případě problémů přepsány.
   Blíže jsou popsány na str. 199 - 200, v kapitole C.9
   manuálu LaTeXu.
  Najde se v našem dokumentu místo, kam by bylo možné přirozeně vložit
  příkaz  \clearpage? Jestliže ano, pak je dobré tak učinit.
  Nahromaděné plovoucí objekty se příkazem\clearpageuvolní.
  (Pozn.: Příkaz\chapterpoužívá\clearpage, a proto
  obrázky nemohou odplout za konec stávající kapitoly.) Lze použít balíku afterpage pro LaTeX 2e (najdeme ho
   v adresáři CTAN: 2etools).
   V dokumentaci k tomuto balíku je  na jednom příkladě uvedena myšlenka
   vložení \clearpagepo aktuální stránce (tam, kde
   se uvolněním nakupených plovoucích objektů nevytvoří nevzhledná
   mezera v textu), avšak je tam uvedeno i to, že tento balík je poněkud
   křehký. Poslední možností, jak uvedené problémy obejít, je použití balíku
      CTAN: morefloats,
      jenž  jednoduše zvětší počet možných plovoucích objektů, se kterými
      může  LaTeX pracovat najednou  (z 18 na 36), což by mělo ve většině
      případů dostačovat.
  Jestliže nastane  nutnost toho, že všechny obrázky mají být umístěny
       na konci dokumentu (například, při zasílání  článku), nelze
       spoléhat na to, že to  LaTeX učiní za nás. Lépe je použít
       balíku endfloat, který je k takovému účelu určen
       (najdeme ho na CTANu v CTAN: endfloat).
 
 
 
 Užití \pagestyle{empty}na první stránce v LaTeXu
 
Použije-li se \pagestyle{empty}, a přesto je první stránka označena
číslem, pak je pravděpodobně užit i příkaz\maketitle.
To není chyba, ale správná vlastnost LaTeXu! Standardní styly LaTeXu
jsou psány tak, že u úvodní strany (strany
obsahující příkazy\maketitle,\part, či\chapter)
se použije styl strany (pagestyle) jiný než ve zbytku dokumentu.
Uvedené příkazy  spouští\thispagestyle{plain}.
Tato vlastnost však není  příliš vhodná v případě, že veškerý
okolní text má nečíslované stránky (\pagestyle{empty}). 
Změny této vlastnosti dosáhneme:
 
  Když vložíme \thispagestyle{empty}bezprostředně  za
      příkaz\maketitle; tj. mezi příkazy se nesmí vložit
      prázdný řádek. Použijeme-li fancyheadings.sty, který umožňuje
      měnit styl úvodní stránky nezávisle na stylu
      stránek ostatních. Lze jej nalézt v adresáři  CTAN: fancyheadings 
 
 Podtržený text nejde rozdělit
 
Knuth nevytvořil žádnou podporu pro podtržený text: zastával názor, že
podtržení není sázecí technika, ale pouze sloužilo ke zdůraznění části
textu na psacích strojích. Odpovídající techniky v sazbě textů je
přepnutí z antikvy do kurzívy (nebo naopak). Toto umí se svým
argumentem provést příkaz \emph. 
Přesto však typograficky negramotní
lidé (např. ti, kteří používají dvojité řádkování (viz
Otázku Dvojité riadkovanie v dokumentoch LaTeXu), nadále požadující psát podtrženě, mohou
použít příkaz \underline, který používá matematické podtrhávání.
Tato technika není zcela uspokojivá, nicméně text drží pohromadě
a nechce se na konci řádku rozdělit. Řešením
může být balík CTAN: ulem.sty, který
předefinuje příkaz\emphtak, že svůj argument podtrhne. Text se pak
chová jako normální zvýrazněný text a láme se i na koncích řádků. 
 
 
 Podivné chování  \rm,\bf, atd.
 
Jestliže příkazy jako \rma\bfv LaTeXu přestaly náhle fungovat
tak, jak se od nich očekávalo, je to zřejmě proto, že administrátor
systému nainstaloval verzi LaTeXu 2.09 spolu
 Makro NFSS (The New Font Selection Scheme).
V takovém  případě je dobré si mu nahlas postěžovat a požádat
jej, aby tuto verzi zaměnil za
 LaTeX 2e (nový standard LaTeXu),
v němž příkazy\rm,\bfapod., jsou-li užity ve standardních
třídách --article,reportabookaj. -- fungují stejně jako
předtím.
Než k záměně dojde, lze použítoldlfont.sty. Tento styl by měl být instalován
zároveň s NFSS. 
 
 Odkazy na příkazy typu \tenrmve starém LaTeXu
 
V LaTeXu 2.09 byla definována rozsáhlá množina příkazů, jež
zpřístupňovaly vestavěné fonty.
Například pro různé velikosti fontu cmrse v něm dalo
použít příkazů:\fivrm,\sixrm,\sevrm,\egtrm,\ninrm,\tenrm,\elvrm,\twlrm,\frtnrm,\svtnrm,\twtyrma\twfvrm. 
Tyto příkazy nebyly nikde dokumentovány, avšak mnohé balíky jich
užívaly k dosažení požadovaných efektů.
 
Protože však tyto příkazy nebyly veřejné, nestaly se součástí
nového LaTeXu 2e.
Chceme-li použít neupravené balíky původně určené pro LaTeX 2.09
v LaTeXu 2e, je potřeba  použít zároveň   balíku
rawfonts.sty, který je součástí distribuce
LaTeXu 2e. 
 
 Chybějící symboly
 
Nemůžeme-li se dostat k některým symbolům, jako například
\Boxand\lhd, pak zřejmě správce systému
aktualizoval stávající verzi
LaTeXu buď na
 Makro NFSS (The New Font Selection Scheme) či  LaTeX 2e (nový standard LaTeXu).
V případě, že máme NSFS, užijemeoldlfont.sty(viz Podivné chování\rm,\bf, atd.).
V LaTeXu 2e  užijeme  balíklatexsym, jenž je součástí standardní distribuce
LaTeXu 2e, anebo balíkamsfonts, je-li instalován. 
 
 Chybné křížové odkazy v LaTeXu
 
Někdy, i když necháme zdrojový text proběhnout LaTeXem několikrát,
dostáváme stále nesprávné křížové odkazy.
Zapamatujme si, že příkaz
\labelmusí následovat po příkazu\caption, případně
musí být jeho součástí.
Například, 
\begin{figure}           \begin{figure}
\caption{Obrázek}  nebo  \caption{Obrázek%
\label{fig}                   \label{fig}}
\end{figure}             \end{figure}
 
 \@a@ve jménech maker
 
Častým zdrojem problémů v dokumentech psaných v LaTeXu
je  výskyt příkazu
\@, či jiných příkazů obsahujících
znak@(at).  Nejobvyklejším chybovým hlášením je: 
,,You can't use
``\spacefactor'' in vertical mode`` (
,,Nelze použít
`\spacefactor' ve vertikálním módu``), ale mohou se objevit i
jiná obdobná hlášení. 
Podobné problémy jsou obvykle způsobeny vložením souboru třídy
(class file) či některého stylového souboru (package file) do
dokumentu LaTeXu 2e  nevhodným způsobem, tj. bez použití příkazů
\documentclassči\usepackage. 
V LaTeXu se  jména vnitřních maker definují obvykle tak, že obsahují znak
@. Tímto způsobem se autoři stylů  snaží vyhnout  kolizi mezi názvy
příkazů použitými uvnitř stylu a příkazů běžně užívanými v dokumentu.
Aby však příkazy tohoto typu  mohly vůbec fungovat, musí
makra\documentclassa\usepackageměnit význam znaku@. 
Problém s chybovým hlášením se jednoduše vyřeší tím, že se styly a třídy
do dokumentu vkládají prostřednictvím příkazů \usepackagea\documentclass. 
Je však možné namítnout:
,,V~The LaTeX Companion se říká, že
příkazy obsahující @lze použít!`` 
Ovšem.  Například je tam dlouhý oddíl o příkazu \@startsectiona 
o tom, jak jej používat k úpravě vzhledu nadpisů oddílů.
Je o tom psáno na straně 15  The LaTeX Companion, ale je
tam rovněž navrženo provádět obdobné změny v preambuli dokumentu
(tj. před\begin{document}) mezi příkazy\makeatlettera\makeatother.  Definice\subsectionna
straně 26 by mohla vypadat takto: 
 
  \makeatletter
  \renewcommand{\subsection}{\@startsection
    {subsection}%                    % name
    ...
    {\normalfont\normalsize\itshape}}% style
  \makeatother
 
 
 Kde jsou fonty msxamsy
 
Fonty msxamsybyly navrženy Americkou matematickou společností
(AMS) pro sazbu odborných článků v matematických časopisech již
v prvopočátcích existence TeXu.
Byly navrženy pro ,,starý`` METAFONT, který nebyl přenositelný a
již se nepoužívá. Velmi dlouhou dobu byly tyto fonty dostupné
pouze v rozlišení 300dpi, které se ovšem stěží hodí pro moderní
tiskárny.
AMS nyní předělala fonty  pro soudobou verzi
METAFONTu. Nové rodiny fontů byly pojmenoványmsaamsb.
Lze je získat v CTAN: amsfonts-symbols 
Přesto nás fonty msxamsynepřestávají sužovat. Jsou doposud lidé,
kteří se  nerozhodli k aktualizaci fontů.  Avšak, i když nakonec
každý bude používat nové fonty, zůstanou problémy se starými dokumenty,
které se namsxamsyodkazují. 
Máme-li zdrojový .texsoubor, který vyžaduje užitímsxamsy,
nejlepším způsobem, jak se zbavit problému se starými fonty, je taková úprava
souboru, aby se používalymsaamsbnamístomsxamsy(stačí
změnit pouze jedno písmeno ve jménech  fontů). 
Máme-li dvi-soubor, který se odkazuje namsxamsyfonty,
můžeme k přesměrování starých fontů na nové použít balík
 Virtuální fonty
CTAN: msx2msa 
 
 
 Kde jsou fonty am
 
Příležitostně se stále objevuje požadavek na soubor písem am;amje zkratka ,,Almost [Computer] Modern`` (téměř [Computer]
Modern). Tyto fonty jsou předchůdci fontů Computer Modern, které
všichni známe a máme (nebo nemáme) rádi
[6].
Není toho mnoho, co by se s těmito fonty dalo ještě dělat.  Jsou, jak
ostatně jejich název napovídá, téměř (ale ne úplně) shodné se
souborem fontůcm.  Máme-li před sebou dokument, jenž požadujeamfonty, jediná rozumná věc, kterou můžeme udělat, je nahradit
v dokumentuamzacm.Dvisoubory, které by požadovalyamfonty, se vyskytují tak
zřídka, že se nikdo neujal náročného úkolu vytvoření
transformace pomocí virtuálních fontů. Můžeme však využít toho, že většina
ovladačů umožňuje použít konfigurační soubor, v němž lze zadat
substituci fontů.
Zadáme-li, že veškeré fontyammají být nahrazeny odpovídajícími
fontycm, výstup by měl být téměř správný. 
 
 
 ,,Příliš dlouhý řetězec`` v BibTeXu
 
Upozornění BibTeXu   
,,Warning---you've exceeded 1000, the
global-string-size, for entry foo`` (Celková velikost řetězce
v položcefooje větší než  1000) není toho druhu,
jehož se lze vyvarovat
jednoduchým pozměněním  stylu BibTeXu. Ke zvětšení
přípustné délky řetězců je třeba znovu překompilovat BibTeX,
což není praktické a příliš žádoucí.
Proto je třeba problém řešit změnou databáze bibliografických
citací. 
Problém je obvykle v tom, že databáze obsahuje velmi rozsáhlý
abstrakt či anotaci.  Jedinou možností nápravy je vynětí tohoto
záznamu z databáze tak, aby nebyl překročen limit
BibTeXu. Avšak většinou  je potřeba záznam v databázi nějakým
způsobem zachovat, jelikož bude užit v sazbě.
V takovém případě se záznam vloží do zvláštního souboru:
 
  @article{long.boring,
    author =    "Fred Verbose",
    ...
    abstract =  "{\input{abstracts/long.tex}}"
  }
Tímto způsobem se zařídí, že
 BibTeX pracuje pouze se jmény souborů, ale
v případě potřeby  TeX zařídí vložení celého vlastního textu do
dokumentu.
 
 MikTeX nevytváří LaTeXovýformát}
 
Práce na MikTeXu 1.20e přestaly 1. prosince 2000. Od této verze již
nebyl aktivně vyvíjen. Vydání LaTeXu z 1. června 2000 již nebylo do
této distribuce integrováno. Skripty v MikTeXu neumějí vytvořit
formátový soubor novějších verzí LaTeXu. Řešení tohoto problému je
přístupné na adrese http://www.miktex.org/1.20/important.html; zde je
link na náhradu souborulatex.zipa návod, jak jej nainstalovat.
Tento problém byl již dán do pořádku ve verzi MikTeXu vydané
23. ledna 2001. 
 
 Začátek řádku není rovný
 
Tato odpověď se dotýká dvou tříd problémů: chyby formy
 
! Missing number, treated as zero.
                    g
<*> [grump]
a toho, že na začátku řádku byla jedna hvězdička, která se záhadně
objevila na výstupu. Oba problémy vznikly, protože ,, \\`` bere pouze
nepovinné argumenty. Příkaz uv{\\*} znamená 
,,zlom řádek zde
a~zabraň
stránce, aby se zde zlomila``. Příkaz ,,\\[<dimen>]`` znamená
,,zde zlom řádek a pak přidej vertikální mezeru o<dimen>řádcích``.
Tak proč si tedy ,,\\`` plete při použití těchto parametrů začátek
řádku? Čeká na první nebílý znak a v testu, který používá, ignoruje
konec řádku ve vašem vstupním souboru. Řešením je uzavření tohoto
textu na začátku řádku do složených závorek:
{\ttfamily
  /* C-language comment\\
  {[grump]} I don't like this format\\
  {*}/
}
Výše zmíněný text pochází z aktuálního příspěvku do konferencecomp.text.tex; tento případ může být také vyřešen pomocí
prostředíverbatim.
 
 
 
 
 
[6]
Fonty získaly
  přívlastek  ,,Almost`` (téměř) po tom, co
jejich první implementace v~METAFONTu79  nedopadla
tak úplně dobře.
Knuthův  původní záměr byl, že tyto fonty budou konečným řešením. 
 |