| |||
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 (
Používá-li se LaTeX 2e, je příčina chybného dělení pravděpodobně
v souboru
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ů Jiný zdroj této zvláštnosti může pocházet z corkovsky kódovaných fontů vydaných roku 1995 (viz Otázku Čo sú EC fonty?), které přišly 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í.
V českých a slovenských dokumentech Č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
Pokud vytváříme vícejazyčný dokument, je situace o něco složitější.
Příkaz
\RequirePackage[split]{czech} \let\OriginalCzech\czech \def\czech{\OriginalCzech \righthyphenmin 2\relax}
Specifikace výjimek dělení je poněkud jednodušší. Příkaz
{\czech \hyphenation{po-po-ka-te-pe-tl}}
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.
TeXovský algoritmus dělení slov neuvažuje jako jedno slovo takové,
které má v sobě zahrnutý příkaz Aby se TeX vyhnul těmto těžkostem, bylo přijaté corkovské kódování (viz Otázku Čo sú EC fonty?), 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í.
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 bufferu buf_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ý
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ě vysázeny. 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
morefloats : CTAN: morefloats
Použije-li se Změny této vlastnosti dosáhneme:
Ak tlačíte niečo, čo bude nakoniec reprodukované v nezanedbateľných množstvách a zviazané, je obvyklé tlačiť na papier väčší než výsledný produkt a mimo tlačovú oblasť umiestniť orezové značky. Tieto orezové značky sú dostupné vydavateľstvu na nastavenie reprodukčných a rezacích strojov.
Môžete si ušetriť (značné) problémy programovania týchto značiek vlastnoručne
použitím balíku
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
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
Dejte si pozor na standardní chování balíku \usepackage[normalem]{ulem}Dokumentace ulem je v balíku samotném.ulem.sty : CTAN: ulemsoul.sty : CTAN: soul
Jestliže příkazy jako
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 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
Nemůžeme-li se dostat k některým symbolům, jako například
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
\begin{figure} \begin{figure} \caption{Obrázek} nebo \caption{Obrázek% \label{fig} \label{fig}} \end{figure} \end{figure} Stejně efektivně můžete příkaz csx{caption} ochránit před jeho sdruženým příkazem csx{label} uzavřením popisku do vlastního prostředí. Lidé například často hledají pomoc potom, co
\begin{center} \caption{Obrázek} \end{center} \label{fig}neoznačuje správně. Když skutečně potřebujete toto centrování (zasvěcení ho obyčejně odmítají), použijte:
\begin{center} \caption{Obrázek} \label{fig} \end{center}
Častým zdrojem problémů v dokumentech psaných v LaTeXu
je výskyt příkazu
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ů
V LaTeXu se jména vnitřních maker definují obvykle tak, že obsahují znak
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ů
Je však možné namítnout:
„V The LaTeX Companion se říká, že
příkazy obsahující
Ovšem. Například je tam dlouhý oddíl o příkazu
\makeatletter \renewcommand{\subsection}{\@startsection {subsection}% % name ... {\normalfont\normalsize\itshape}}% style \makeatother
Fonty
Přesto nás fonty
Máme-li zdrojový
Máme-li
Příležitostně se stále objevuje požadavek na soubor písem
Upozornění BibTeXu
„Warning—you've exceeded 1000, the
global-string-size, for entry 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.
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
Tato odpověď se dotýká dvou tříd problémů: chyby formy ! Missing number, treated as zero.a toho, že na začátku řádku byla jedna hvězdička, která se záhadně neobjevila na výstupu. Oba problémy vznikly, protože „ \ \ “ bere pouze
nepovinné argumenty. Příkaz „\ \ *“ 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 konference comp.text.tex ; tento případ může být také vyřešen pomocí
prostředí verbatim .
Problém se objevuje také v matematickém módu, v polých atd. V tomhle případě není závorkování věcí ve velkém dobrý nápad; může být použité TeXovské primitivum csx{relax} (které nedělá nic kromě blokování hledání tohoto druhu). Z jiného příkladu z Newsgroup{comp.text.tex}:
\begin{eqnarry} [a] &=& b \\ \relax[a] &=& b \end{eqnarry}co je použití, které toto FAQ nedoporučuje: prostudujte si odpověď na Otázku Prečo nepoužiť eqnarray ?.
Nahráte pár balíkov a druhý z nich hlási, že jeden z príkazov, ktoré definuje,
je už prítomný. Napríklad oba balíky
... \usepackage{txfonts} \usepackage{amsmath}vytvorí reťazec chybových hlásení formy:
! LaTeX Error: Command \iint already defined. Or name \end... illegal, see p.192 of the manual.Obecne platí, že veci, ktoré amsmath definuje, definuje dobre;
existuje však dobrý prípad pre použitie txfonts verzie príkazu
csx{iint} — asociované tx fonty majú dvojitý symbol integrálu,
ktorý nemusí byť robený spôsobom ako pri amsmath . V prípade, že
nahrávate viaceré balíky symbolov, z ktorých každý definuje rovnaký symbol,
pravdepodobne budete tento problém silno pociťovať (csx{euro} je bežnou
obeťou).
Existujú podobné prípady, keď jeden balík redefinuje príkaz iného balíku, ale
neobjavia sa žiadne chyby, pretože redefinujúci balík nepoužíva
csx{newcommand}. V takomto prípade si zmenu často všimnete iba z dôvodu, že
predpokladáte definíciu prvým balíkom. Balíky
S problémom sa môžete vysporiadať uložením a obnovením príkazu. Macro
programátori sa o toto môžu postarať sami; pre ostatných z nás existuje balík
\usepackage{savesym} \usepackage{amsmath} \savesymbol{iint} \usepackage{txfonts} \restoresymbol{AMS}{iint}spraví, čo chceme; zachovajúc amsmath verziu príkazu ako
csx{AMSiint} a sprístupňujúc txfonts verziu.
Dokumentácia
Príkaz
Príkaz je v skutočnosti ekvivalentný
\fontsize{10}{12}% \selectfontalebo:
\linespread{1.2}% \selectfontBalíky ako setspace , ktorého prácou je správa účiaria, si samozrejme
s týmto poradia — viď Otázku Dvojité riadkovanie v dokumentoch LaTeXu. Ak sa chcete vyhnúť
balíku setspace , dajte si pozor na správanie zmien rozostupu riadkov
v odstavci: prečítajte si Otázku Iba jeden csx{baselineskip} na odstavec.setspace.sty : CTAN: setspace
csx{baselineskip} nie je (ako by ste dúfali) vlastnosť riadku, ale odstavcu.
Výsledkom je, že v
{\Huge A}bude do odstavca natlačený: TeX sa postará o to, že si s horným riadkom nebudú vadiť, ale nedá mu „priestor na dýchanie“, ako to robí pri texte štandardnej veľkosti; jeho veľkost ( 24.88pt ) je teda zobraná do úvahy,
ale jeho csx{baselineskip} (30pt ) nie je. Podobne
Text odstavca ... {\footnotesize Rozšírená vsuvka ... ... do odstavca.} ... odstavec pokračuje ...bude vyzerať zle, kedže 8pt vsuvka skončí vysádzaná na 12pt
csx{baselineskip} odstavca, namiesto preferovaných 8.5pt .
Ako sa teda s týmito problémami vysporiadať? Sekcie (mierne) väčších rozmerov sú typicky opravené pomocou podpery (strut): toto slovo pochádza z klasickej typografie využívajúcej premiestňovateľné kovové časti a označuje oddeľovač boxov (obsahujúcich kovové znaky). Vždy, keď zmeníte veľkosť fontu, LaTeX redefinuje príkaz csx{strut} aby poskytoval ekvivalent kovovej podpery zvolenej veľkosti. Takže pre horný príklad napíšeme
Text odstavca ... {\Huge A\strut} ... odstavec pokračuje ...Rozširené vloženia (či už väčšieho alebo menšieho textu) však budú vždy pôsobiť problémy; môžete použit podperu pre väčší text, používanie pre každý riadok ale bude únavné a neexistuje nič, čo by sme mohli nazvať „zápornou podperou“, ktorá by riadky pritiahla k sebe pre menší text.
Jediným uspokojujúcim spôsobom na zaobchádzanie s rozšírením vložením pri
rozličnej veľkosti je vysádzanie do oddeleného odstavca. Postačujúcou cestou,
ako toto dosiahnuť, je prostredie
Text odstavca ... \begin{quote} \footnotesize This is an inset account of something relevant to the enclosing paragraph... \end{quote} ... odstavec pokračuje ...
Príkazy výberu fontu systému LaTeX 2.09 boli csx{rm}, csx{sf}, csx{tt}, csx{it}, csx{sl}, csx{em} a csx{bf}; boli modálnymi príkazmi, takže ste ich mohli použiť nasledovne:
{\bf Fred} was {\it here\/}.Zmena fontu bola vložená do skupiny, aby bol obmedzený jej efekt; všimnite si príkaz úpravy kurzívy csx{/}, ktorý bol potrebný na konci sekcie v kurzíve.
Pri vydaní LaTeX 2e v lete 1994 boli tieto jednoduché príkazy zastaralé, ale
kedže ich používanie je hlboko zaryté v mozgoch používateľov LaTeXu, príkazy
samotné zostali v LaTeXu s LaTeX 2.09 sémantikou. Táto sémantika bola
čiastočným dôvodom ich označenia za zastaralé: každý z
{\bf\it Here we are again\/}ignoruje csx{bf} a vytvára text v kurzíve, strednej hrúbky (a korekcia kurzívy má skutočný efekt), zatiaľ čo
{\it\bf happy as can be\/}ignoruje csx{it} a vytvára rovný tučný text (a korekcia kurzívy nemá čo robiť). To isté platí, ak zmiešate LaTeX 2e výbery fontu s príkazmi strého štýlu:
\textbf{\tt all good friends}ignoruje csx{textbf}, ktorý obsahuje text a vytvára text písacieho stroja strednej hrúbky. Prečo sú teda tieto príkazy zastaralé? — je to pre zmätok ako v poslednom príklade. Alternatívne (LaTeX 2e) príkazy sú diskutované v zbytku tejto odpovede. Fontové príkazy systému LaTeX 2e sú v dvoch formách: modálne príkazy a príkazy textových blokov. Štandardná sada modálnych príkazov poskytuje hrúbky csx{mdseries} a csx{bfseries}, sklon csx{upshape}, csx{itshape}, csx{scshape} a csx{slshape} a rodiny csx{rmfamily}, csx{sffamily} a csx{ttfamily}. Výber fontu požaduje rodinu, sklon a sériu (ako aj, samozrejme, veľkosť). Pár príkladov:
{\bfseries\ttfamily and jolly good company!}vytvára tučný text písacieho stroja (všimnite si však neprítomnosť tučného strojopisného fontu (viď Otázku Ako spraviť bold-tt alebo bold-sc) v štandardných fontoch Computer Modern), alebo
{\slshape\sffamily Never mind the weather\/}(všimnite si korekciu kurzívy potrebnú tiež pri sklonených fontoch).
Príkazy textových blokov systému LaTeX 2e vezmú prvé dve písmená modálnych
príkazov a vytvoria z nich príkaz csx{text}
\textit{\textbf{Never mind the rain}}na vytvorenie tučného textu v kurzíve (zapamätajte si, že blokové príkazy poskytujú korekciu kurzívy tam, kde je to potrebné), môžu byť tiež vzájomne vnárané s LaTeX 2e modálnymi príkazmi:
\texttt{\bfseries So long as we're together}pre tučný text písacieho stroja, alebo
{\slshape\textbf{% Whoops! she goes again}\/}pre tučnú naklonenú inštanciu aktuálnej rodiny (všimnite si znova aplikovanú korekciu kurzívy na konci skupiny modálneho príkazu).
Nové príkazy (ako je uvedené vyššie) potlačujú príkazy rovnakého typu.
Toto takmer vo všetkých prípadoch vylučuje smiešne nápady ako
„rovný sklonený“ font alebo „teletype roman“ fonty. Existuje však pár
bezprostredných zvláštností. Prvou je konflikt medzi csx{itshape} (alebo
csx{slshape}) a csx{scshape}: kým mnohí tvrdia, že „small-caps“ font
v kurzíve je typograficky nevhodné, takéto fonty existujú. Balík
{\fontshape{ui}\selectfont Tra la la, di dee} smallcap.sty : CTAN: smallcap
| |||
|