Jak udělám <I>X</I> v TeXu nebo LaTeXu?
   
Jak udělám X v TeXu nebo LaTeXu? CSTUG


Prostředí důkaz (proof)

Není možné vytvořit prostředí proof (matematický důkaz), které by umožňovalo automatické vkládání značky konce důkazu. Některé důkazy končí ve vysazené (displayed) matematice, jiné nikoli. Jestliže vstup obsahuje ...\] \end{proof} pak LaTeX ukončí vysazenou matematiku a je připraven sázet nový řádek, aniž by předtím četl jakoukoli informaci spojenou s ukončením důkazu. Značka konce důkazu se tedy vysází na nový řádek, avšak podle tradic sazby se na nový řádek sázet nemá, a proto je ho třeba při psaní každého důkazu vkládat ručně.


Matematické věty a definice sázené antikvou

Chceme-li využít výhod příkazu \newtheorem, a přitom nechceme být omezeni na to, že obsah bude vysázen skloněným fontem (např. k vytvoření poznámek, příkladů, důkazů,...) pak použijeme styl theorem.sty (CTAN2etools). Popřípadě můžeme definovat prostředí, např. remark, jehož obsah bude sázen antikvou (roman):

  \newtheorem{preremark}{Poznámka}
  \newenvironment{remark}%
    {\begin{preremark}\rm}{\end{preremark}}
Prostředí nebude správně fungovat v případě, že mimo LaTeX 2e (nový standard LaTeXu) použijeme Makro NFSS (The New Font Selection Scheme). Příkaz \rm má totiž v tomto případě odlišný význam.


Označení číselných množin

Je jistě dobré mít příkazy typu \R pro standardní množinu reálných či jiných čísel. Tradičně byly tyto množiny sázeny tučně. Matematici však obvykle nemají přístup k tlustým křídám, a proto si vymysleli speciální symboly, které se nyní běžně používají pro označení \R, \C, atd. Tyto symboly jsou označovány jako ,,zdvojená latinka`` (blackboard bold). Dříve, než začneme trvat na použití těchto symbolů, bylo by dobré se zamyslet, zda by nebylo lépe se navrátit k původnímu označování číselných množin prostým tučným písmem, což by činilo věc daleko jednodušší.

Sada velkých písmen zdvojené latinky je součástí AMS-fontů ,,msam`` (např. ,,msam10`` pro velikost 10pt) a ,,msbm``. Fonty obsahují veliké množství matematických symbolů, které podstatně rozšiřují sadu symbolů dodávanou ve standardní distribuci TeXu. Zdrojové soubory fontu jsou v CTANamsfonts-symbols

Součástí balíku jsou i dva soubory, z nichž jeden usnadňuje vkládání fontů do dokumentu a  ve druhém jsou definovány příkazy pro jednotlivé symboly. Oba lze použít jak v TeXu tak v LaTeXu. Otázky a doporučení tykající se těchto fontů směrujte na tech-support@math.ams.org.

Jiná úplná sada fontů zdvojené latinky, rodina fontů bbold, je dostupná ve zdrojových souborech pro METAFONT v adresáři CTANbbold. Zajímavostí je, že tyto fonty obsahují kromě velkých i malá písmena, které jsou na skutečných tabulích vidět jen zřídka.

Lze vytvořit jednoduchá makra pro tvorbu zdvojené latinky:

  \newcommand{\R}{{\sf R\hspace*{-0.9ex}%
    \rule{0.15ex}{1.5ex}\hspace*{0.9ex}}}
  \newcommand{\N}{{\sf N\hspace*{-1.0ex}%
    \rule{0.15ex}{1.3ex}\hspace*{1.0ex}}}
  \newcommand{\Q}{{\sf Q\hspace*{-1.1ex}%
    \rule{0.15ex}{1.5ex}\hspace*{1.1ex}}}
  \newcommand{\C}{{\sf C\hspace*{-0.9ex}%
    \rule{0.15ex}{1.3ex}\hspace*{0.9ex}}}
která lze s úspěchem použít v případě, že okolní text je sázen cmr10. Avšak, jelikož se nejedná o řádné matematické fonty, nelze je užít v matematických indexech. Krom toho velikost a poloha vertikální linky je ovlivněna výběrem fontu okolního textu (makra obsahují ex).


Jak vysázím značku stupně v TeXu

Pomocí makra \degree definovaného takto: \newcommand{\degree}[1][]{\ensuremath{{#1}^\circ}}


Jak vysázím ,,středoevropské`` uvozovky

Uvozovky v češtině, slovenštině, jakož i jiných středoevropských jazycích, mají jiný tvar než anglické ``'', které TeX sází implicitně. Nejjednodušší způsob, jak vysázet text v ,,našich`` uvozovkách, je pomocí makra \uv: v~\uv{našich} uvozovkách. Makro \uv je součástí balíků czech.sty a slovak.sty.

Lepším a obecnějším řešením je makro Tomáše Hály \uviq, které dovoluje uvozované texty vnořovat. Toto makro je součástí distribuce CSTeX.


Chci desetinnou čárku místo tečky

TeX implicitně předpokládá, že v zápisu desetinných čísel odděluje desetiny od jednotek desetinná tečka. Čárku zapsanou v matematickém módu TeX považuje za oddělovač položek v posloupnostech, množinách apod., a proto za ni sází malou mezeru.

Chceme-li jednorázově vysázet desetinné číslo s desetinnou čárkou, stačí čárku uzavřít do skupiny: $3{,}14159$.

Takové řešení je však nevýhodné pro texty, kde je desetinných čísel mnoho. V takovém případě lze nastavit globálně, že za čárkou v matematickém módu se mezera sázet nemá:

   \mathcode`,="002C
   $3,14159$
Pokud při tomto globálním nastavení přesto někde mezeru udělat potřebujeme, musíme ji napsat explicitně: $(m,\,n)$ nebo $\{0,\:1,\:2\}$.

Jiným řešením je ponechat ve vstupním souboru desetinné tečky, ale přemapovat na čárky (to se hodí třeba tehdy, když máme velké soubory desetinných čísel z jiných výstupů).

   \mathcode`.="002C
   $3.14159$


Označování položek výčtů

Chceme-li, aby nejvyšší úroveň číslovaného výčtu enumerate byla označena ,,I/``, ,,II/``, ..., musíme použít příkazy:

   \renewcommand{\theenumi}{\Roman{enumi}}
   \renewcommand{\labelenumi}{\theenumi/}
Možné styly číslování jsou popsány v oddíle 6.3 Lamportova manuálu (viz Knihy o TeXu a příbuzná literatura). Jsme-li pohodlní a po změně \labelenumi provedeme pouze jedno zpracování LaTeXem, budou naše křížové odkazy chybné.

Pro nižší úrovně výčtu enumerate je třeba zaměnit enumi v předchozím příkladě za enumii, enumiii či enumiv, podle úrovně, kterou chceme upravovat. Je-li nové označení položky širší než označení původní, je také třeba změnit \leftmargini, \leftmarginii atd.

Použijeme-li styl enumerate.sty (CTAN2etools) pro LaTeX 2e, který řeší obdobný problém, získáme stejný výsledek jako předchozím příkladě tak, že na začátek výčtu umístíme příkaz \begin{enumerate}[I/].


Nečíslované oddíly v obsahu

Nejjednodušším způsobem, jak vytvořit v obsahu položku pro takové zvláštní části textu jako jsou například předmluvy, je užití čítače secnumdepth, který je popsán v dodatku C manuálu LaTeXu. Například:

    \setcounter{secnumdepth}{-1}
    \chapter{Předmluva}
Samozřejmě, že před opětovným použítím číslovaného oddílu je potřeba nastavit parametr secnumdepth zpět na jeho obvyklou hodnotu (ve standardních stylech 2).

Následuje vysvětlení. Použije-li se \chapter bez hvězdičky:

  1. vloží se něco do .toc souboru;
  2. je-li čítač secnumdepth větší nebo roven nule, zvětší se čítač kapitoly o jedničku a vysází se jeho hodnota.
  3. vysází se název kapitoly.
Ostatní příkazy na rozdělování textu (\section, \subsection,...) pracují obdobně, avšak testují jinou hodnotu.


Vzhled nadpisů

Předpokládejme, že editor našeho oblíbeného časopisu vyžaduje, aby nadpisy oddílů byly centrované a vysázené kapitálkami a pododdíly byly zarovnány vpravo a vysázeny kurzívou. Nechce se nám však zaplétat do takového druhu programování jaký je popsán v The LaTeX Companion (viz Knihy o TeXu a příbuzná literatura; \@ a @ ve jménech maker samotné je diskutováno pod `@'). Následující trik pravděpodobně editory uspokojí. Nově definované příkazy \ssection\ssubsection:

  \newcommand{\ssection}[1]{%
     \section[#1]{\centering\textsc{#1}}}
  \newcommand{\ssubsection}[1]{%
     \subsection[#1]{\raggedright\textit{#1}}}
se pak použijí namísto obvyklých \section a \subsection. Není to však nejhezčí řešení. Čísla v nadpisech oddílů zůstávají vysázena tučně a hvězdičkovaná forma příkazů musí být předefinována zvlášť. Uvedené definice nebudou správně fungovat v případě, že se použije Makro NFSS (The New Font Selection Scheme) mimo LaTeX 2e (nový standard LaTeXu), jelikož v takovém případě se příkazy měnící typ písma chovají odlišně.


Odsazení odstavce po nadpisu

LaTeX používá stylů, jež neodsazují první odstavec za nadpisem. Je mnoho důvodů proč tomu tak je, ale ne každému to vyhovuje (např. to neodpovídá tradicím české typografie). Užijeme-li styl indentfirst.sty (CTAN2etools), pak se tento mechanismus potlačí, takže první odstavec bude odsazen.


Změna okrajů v LaTeXu

Neměňte okraje v LaTeXu, naučte se LaTeX, napište několik dokumentů a teprve poté se zkuste zeptat znovu: ,,Jak změním okraje v LaTeXu``.

Nikdy nelze změnit skutečné okraje dokumentu pomocí programu, jelikož velikost okrajů závisí na konkrétní velikosti použitého papíru, která se může lišit od velikosti, se kterou pracuje počítač (například standardní americký papír má jinou šířku než papír formátu A4). Co však lze měnit, jsou vzdálenosti od domnělého horního a levého okraje papíru a šířka a výška textového zrcadla. Změna šířky a výšky textu vyžaduje daleko více zručnosti, než by se dalo čekat. Výška textu by měla mít jistý vztah ke vzdálenosti po sobě následujících účaří (\baselineskip). Šířka by neměla být větší než 75 znaků. Lamportova upozornění v kapitole ,,Customizing the Style`` bychom měli brát vážně. Jednopalcové okraje na papíru formátu A4 jsou vhodné pro psaní na stroji, ale nehodí se pro sazbu desetibodovým písmem, jelikož tolik znaků na jednom řádku zhoršuje čitelnost.


Trvání na změně okrajů v LaTeXu

V této odpovědi se nejprve naučíme změnit okraje v celém dokumentu, poté se dozvíme, jak změnit okraje jenom v jeho části.

Snad nejsnazším způsobem, jak získat více místa na stránce, je použít stylu CTANfullpage, který nastaví okraje stránky shodně s plain TeXem, t.j.  jednopalcové okraje od všech čtyř stran papíru. Kromě standardního amerického formátu obsahuje i nastavení pro formát A4.

Lepší je však CTANvmargin, který obsahuje nadefinovanou množinu velikostí papíru (nadmnožinu těch, jež obsahuje LaTeX 2e), možnost definování vlastní velikosti papíru, nastavení okrajů a podporu dvoustranného tisku.

Následuje krátké vysvětlení parametrů popisujících stránku v LaTeXu. Podrobnosti jsou probrány v oddíle C.5.3 manuálu LaTeXu (str. 181-182). Počátek souřadného systému dvi souboru je jeden inch od horního a jeden inch od levého okraje papíru. To vysvětluje, proč v manuálu LaTeXu je používáno soustavně o jeden inch méně. V souřadném systému dvi souboru rostou kladné hodnoty vpravo v horizontální a dolů ve vertikální ose. Proto chceme-li, aby okraje textu byly blíže než jeden inch k levému nebo hornímu okraji, musí být hodnoty odpovídajících parametrů, t.j. \evensidemargin, \oddsidemargin, \topmargin, záporné.

Parametry \topmargin, ... neumožňují změnit velikosti okrajů uvnitř dokumentu, lze je měnit pouze v preambuli zdrojového textu, t.j. před příkazem \begin{document}. K nastavení okrajů uvnitř dokumentu lze definovat prostředí:

\newenvironment{changemargin}[2]{%
 \begin{list}{}{%
  \setlength{\topsep}{0pt}%
  \setlength{\leftmargin}{#1}%
  \setlength{\rightmargin}{#2}%
  \setlength{\listparindent}{\parindent}%
  \setlength{\itemindent}{\parindent}%
  \setlength{\parsep}{0pt plus 1pt}%
 }%
\item[]}{\end{list}}

Prostředí umožňuje odsadit text zleva a zprava o hodnoty uvedené v jeho prvním a druhém parametru. Záporné hodnoty vedou k zúžení okraje; například \begin{changemargin}{-1cm}{-1cm} zúží levý a pravý okraj o 1cm. (Je třeba upozornit, že hodnota 0pt plus 1pt přiřazená \parsep je základní hodnotou pro LaTeX; správně by tam však měla být hodnota stejná jako v okolním textu.)


Zjištění šířky písmene, slova nebo sousloví

Slovo se vloží do boxu a poté se zjistí šířka tohoto boxu. Například:

  \newdimen\stringwidth
  \setbox0=\hbox{hi}
  \stringwidth=\wd0
Je třeba však mít na paměti, že je-li v \hboxu sousloví, hodnota, kterou určíme, bude pouze přibližnou šířkou, kterou bude vysázené zaujímat ve skutečném textu, neboť mezislovní mezery se při sazbě odstavce mohou změnit.

V LaTeXu lze problém řešit takto:

  \newlength{\gnat}
  \settowidth{\gnat}{\textbf{small}}
Hodnota \gnat se v tomto případě nastaví na hodnotu šířky ,,small`` vysázeného tučně.


Vyloučení části textu z .dvi souboru

verbatim.sty Rainera Schöpfa zavádí prostředí comment, které umožňuje část textu mezi \begin{comment}\end{comment} označit jako komentář a tedy vyloučit z .dvi. Balík lze nalézt na CTANu v adresáři CTAN2etools.

Obecnější prostředí, které rovněž umožňuje vypouštět části textu, CTANcomment Viktora Eijkhouta, nabízí navíc jednoduché prostředky pro definici vlastních prostředí pro ponechání nebo přeskočení části textu v dokumentu, přičemž lze nastavit, zda prostředí právě slouží pro ponechání textu nebo jeho vynechání.


Definice nových označení matematických funkcí v LaTeXu

Použije se příkaz \mathop podobně jako v tomto příkladě:

  \newcommand{\diag}{\mathop{\rm diag}}

Spodní a horní indexy funkce \diag budou umístěny obdobně jako u \lim (limita). K tomu, aby indexy byly vždy umístěny vpravo od označení funkce, se použije tato definice:

  \newcommand{\diag}{\mathop{\rm diag}\nolimits}

Tyto definice fungují pouze v LaTeXu 2e a LaTeXu 2.09, avšak nelze je použít spolu s NFSS (viz Podivné chování \rm, \bf, atd.). V LaTeXu 2e lze problém řešit i tak, že se použije příkaz \operatornameamstex.sty, které je součástí AMSLaTeXu (CTANamslatex).


Obrázky v TeXovém dokumentu

Součástí TeXových dokumentů mohou být obrázky. Protože pro obrázky existuje mnoho formátů, existuje i více způsobů, jak zařídit, aby se nám na daném místě dokumentu obrázek objevil. Obrázek se však nevkládá ,,přímo do zdrojového textu``. Do zdrojového textu se umístí volání makra, které vytvoří místo pro obrázek. Skutečný import obrazových dat provede posléze TeXový ovladač.

Obvykle používaný formát obrázků je eps (zapouzdřený PostScript). Pro vložení takového obrázku lze použít balík CTANepsfig. Další informace o vkládání postscriptových obrázků a odkazy na starší balíky viz Vkládání PostScriptových obrázků v LaTeXu.

Vkládání bitmapových obrázků ve formátu pcx podporují ovladače v emTeXu (viz Příkazy typu \special).


Sazba názvů programů používaných spolu s TeXem

Donald Knuth definoval logo TeXu jako konkrétní ukázku toho, co TeX umí. Žel, mnozí si však myslí, že tím přivodil záplavu různých log, jako například AMSTeX, PiCTeX, BibTeX, atd. Lamport vymyslel logo LaTeX, což pak přirozeně vedlo ke vzniku nynějšího loga LaTeX 2e.

Není však nutně třeba uvádět tato loga v jejich komplikovaném tvaru všude tam, kde se příslušný název vyskytne, avšak pro ty, kdo trvají na jejich použití, existuje v souboru CTANtexnames veliké množství předdefinovaných log. Fonty loga METAFONTu mohou být přidány k fontům, které LaTeX 2e již zná (tak, že se pak může měnit jeho rozměr spolu s okolním textem) použitím balíku CTANmflogo.

Pro ty, kdo nepotřebují mít v dokumentu vysázená ta ,,správná`` loga, stačí použít AMS-\TeX{} (AMS-TeX) namísto AMSTeX, Pic\TeX{} (PicTeX) namísto PiCTeX, Bib\TeX{} (BibTeX) namísto BibTeX, atp.


CSTUG
(c) 12.05.2000 18:52 Libor Škarvada, Tomáš Hudec, Aleš Vítek
Připomínky, opravy a zejména odpovědi na další časté otázky posílejte na adresu cstug-faq@cstug.cz
Připomínky k HTML verzi posílejte na adresu libor@fi.muni.cz nebo hudec@fi.muni.cz.