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

Vyhledávání podle slov v CS-FAQ

Hledaný řetězec:


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.

Hodnota čítače tocdepth ovlivňuje, který nadpis bude vytištěn v obsahu. Běžně se má jeho hodnota nastavit v preambuli dokumentu, pak je pro celý dokument konstantní. Balík tocvsec2 (CTANtocvsec2) nabízí celkem vyhovující rozhraní umožňující měnit hodnotu čítače secnumdepth a/nebo tocdepth kdekoliv v těle dokumentu. To nabízí docela slušnou nezávislou kontrolu nad číslováním položek v obsahu.

Balík abstract (viz Otázku Jednosloupcový výtah v dvousloupcovém dokumentu) zahrnuje volbu pro přidání abstraktu do obsahu, zatímco balík tocbibind (CTANtocbibind) má volbu pro vložení samotného obsahu, bibliografie, rejstříku atd. do obsahu.


Poznámky pod čarou v tabulkách

Standardní LaTeXový příkaz \footnote neumí pracovat v prostředí tabulek. Toto prostředí totiž poznámkám neumožní ,,uniknout`` až na konec stránky. Pokud je tabulka plovoucí, nejlepší řešení je umístit tabulku do prostředí minipage a umístit pak poznámky na spodní okraj stránky nebo použít balík CTANthreeparttable.sty od Donalda Arsenaua. Pokud není, pak můžete použít jednu z možností:

  1. Pomocí \footnotemark můžete vhodně umístit do textu značku poznámky před ukončením prostředí table vložte příkaz \footnotetext. Tento způsob je popsán v Lamportově knize, můžete však použít pouze jednu poznámku.
  2. Vložte tabulku do prostředí minipage. To vám umožňuje použít všechny vlastnosti poznámek bez většího úsilí.
  3. Použijte CTANthreeparttable.sty. Balík je sice vytvořen pro plovoucí tabulky, ale můžete ho použít i v tomto případě.
  4. Použijte tabularx nebo longtable z LaTeXové distribuce (CTAN2etools). Klasické poznámky sice zvládá o poznání hůře než prostředí tabular, avšak povoluje poznámky pod čarou.
  5. Stáhněte balík footnote skrytý ve CTANovském archívu na adrese CTANmdwtools. Pak vložte vaši tabulku do prostředí savenotes. Alternativně můžete do preambule dokumentu napsat \makesavenoteenv{tabular} a tabulka zvládne poznámky pod čarou korektně.
  6. Použijte mdwtab ze stejného adresáře. Ten umí nejen správně zvládat poznámky pod čarou, ale navíc ještě umí vaši tabulku zkrášlit. Ten však může být nekompatibilní s jinými balíky.


Nadpisy tabulek a obrázků

Ve standardním LaTeXu se nadpisy tabulek centrují, zatímco tabulky se sázejí od levého okraje. Je-li tabulka úzká, není výsledek estetický. Řešením může být balík CTANcaption2. Zarovnání nadpisu se pak nastaví pomocí \captionstyle.


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ě.

Balík CTANsectsty nabízí jednoduše použitelnou sadu příkazů pro tuto práci, zatímco balík CTANtitlesec umožňuje pokročilejší řešení této problematiky (titlesec přichází s druhým balíkem - titletoc - který je používán pro úpravu formátu celého obsahu.

Záhlaví příkazů \chapter a \part jsou vytvářena jiným mechanismem, balík sectsty umí zacházet s oběma, zatímco titlesec umí upravit pouze \chapter. Balík CTANfncychap nabízí širokou škálu předem definovaných designů nadpisů kapitol.


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.


Poznámky v LaTeXových nadpisech

Umístění příkazu \footnote v argumentu příkazu \section není dostačující. Použití \protect\footnote také není příliš dobrý nápad: argumenty příkazu \section jsou používány v obsahu a potenciálně i v záhlaví stránky.

Bohužel neexistuje rozumný způsob, jak zamezit zobrazování těchto poznámek v záhlaví a obsahu. K jejich potlačení musíte udělat toto:

  • Využijte toho, že povinné argumentu nejsou volány, pokud se zde vyskytují volitelné: \section[title]{title\footnote{title ftnt}}
  • Použijte balík CTANfootmisc s volbou balíku stable - ten upraví poznámky pod čarou tak, že lehce a tiše zmizí, pokud jsou použité jako nepovinné argumenty.


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í.


Sazba tučných řeckých písmen

Jednoduchým řešením tohoto problému je příkaz \mathbf, který však nefunguje ve všech případech, protože malá řecká písmena chovají jinak než velká (z důvodů Knuthova esoterického kódování fontů). Nicméně za normálních okolností můžeme \mathbf použít pro řecké verzálky, ale AMSLaTeXový balík amsmath.sty nepovoluje toto přepínání fontů a pak tedy musíte použít jednu z níže popsaných technik. V některých případech funguje plainTeXové řešení {\boldmath$\theta$}, ale \boldmath nemůže být použit v matematickém módu, pak to musíte vyřešit následovně:
$...\mbox{\boldmath$\theta$}...$,
to působí problémy v superskriptech a podobně. Tyto problémy mohou být přičítány použití balíku \boldmath.

  • balík bm, který je součástí distribuce LaTeXových nástrojů (CTAN2etools) definuje příkaz \bm, který lze použít kdekoliv v matematickém režimu.
  • balík amsbsy, který je součástí AMSLaTeXu (CTANamslatex) definuje příkaz \boldsymbol, který pokrývá téměř všechny základní problémy. Všechna tato řešení můžete použít na všechny matematické symboly, nejen na řecká písmena.


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, které je součástí AMSLaTeXu (CTANamslatex). Kanonické řešení tohoto problému v LaTeXu 2e však spočívá v použití příkazu \DeclareMathOperator z balíku amsopn, který je opět součástí AMSLaTeXu.


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).


Obtékání obrázků

Někdy je třeba umístit obrázek dovnitř odstavce, na jednu stranu textového zrcadla - takovým obrázkům říkáme obtékané. Balík CTANpicinpar definuje prostředí window, kterým lze obrázek umístit na levou či pravou stranu odstavce (nebo dokonce doprostřed).

Dalšími podobnými balíky jsou CTANwrapfig nebo CTANwindow.


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. vytvořených pomocí velkého množství různých fontů, velikostí i základních linek -- jistě vám to znepříjemní čtení. 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.


Jednosloupcový výtah v dvousloupcovém dokumentu

Občas je třeba dvousloupcový článek opatřit jednosloupcovým výtahem. Nejlepším způsobem je použít následující trik:


  \documentclass[twocolumn]{article}

  ...

  \begin{document}

  ... % \author, etc

  \twocolumn[

    \begin{@twocolumnfalse}

      \maketitle

      \begin{abstract}

        ...

      \end{abstract}

    \end{@twocolumnfalse}

  ]

Takto však nebude pracovat správně, použijete-li \thanks v seznamu \author. Pokud potřebujete takto speciálně šíslovaný seznam, docílíte toho následovně:


  \title{Demonstration}

  \author{Me, You\thanks{}}

  \twocolumn[

    ... to samé, co výše ...

  ]

  {

    \renewcommand{\thefootnote}%

      {\fnsymbol{footnote}}

    \footnotetext[1]{Thanks for nothing}

  }

atd.

Alternativně můžete použít balík {itabstract} (dostupný z CTANabstract), který (kromě jiných usnadnění práce s abstrakty) nabízí příkaz \saythanks a prostředí onecolabstract, které odtraní potřebu ,,švindlovat`` s \thanks a poznámkami. Můžete to použít následovně:


\twocolumn[

  \maketitle            

  \begin{onecolabstract} 

  ... text 

  \end{onecolabstract}

]

\saythanks              


Změna slov používaných LaTeXem

LaTeX používá několik symbolických jmen, které vytvářejí automatický text (nadpisy, tituly, atd.). Např. část textu vysázená příkazem \tableofcontents je vždy volána příkazem \contentsname. Umožňuje však běžnému uživateli změnit jména používaná standardními třídami, což je užitečné hlavně při tvorbě neanglických dokumentů. Pokud třeba daný dokument píše český autor, chce, aby byl obsah nazván opravdu ,,Obsah`` a ne ,,Table of Contents``, v tom případě musí do preambule dokumentu vložit text
\renewcommand{\contentsname}{obsah}

Nicméně pro neanglického uživatele je přirozené používat babel, protože nabízí mnoho výhod a zpříjemňuje vytváření dokumentů v jejich přirozeném jazyce. Zvláště pokud v babelu vyberete jiný jazyk, tak vám zajistí, že LaTeXová symbolická jména budou vhodně překládána do vybraného jazyka podle vašeho pořadavku.

Bohužel výběr jmen v babelu nevyhoví vždy požadavkům uživatele, proto je třeba mechanismus pro náhradu standardních jmen. Kdykoliv babel vybere jiný jazyk, pak jsou všechna standardní jména přeložena právě do tohoto jazyka. Babel zvláště vybírá hlavní jazyk dokumentu, když je vykonán příkaz \begin{document}, který ihned zničí veškeré změny standardních jmen, která byla provedena v preambuli dokumentu používajícího babel. Proto babel definuje příkaz, který uživateli umožní změnit definice symbolických jmen na základní výrazy jeho mateřštiny:
\addto\caption<language>, kde <language> značí jazyk, který babel bude používat jako primární. Např.


\addto\captionczech{%

   \renewcommand{\contentsname}{Obsah}%

}


Výpisy zdrojových kódů v LaTeXu

Někteří neuroticky estetičtí programátoři považují ,,krásné`` zdrojové kódy za něco k nezaplacení. Správně strukturované zdrojové kódy však mají své místo při psaní disertačních prací studenty informatických i jiných věd, od kterých se očekává, že v budoucnosti budou programovat. Běžně se používá doslovné citování kódů.

Doslovné vkládání kódů je však rozebíráno jinde (viz Otázku Doslovné (verbatim) vložení souboru v LaTeXu). ,,Krásné`` kódy jsou generovány pomocí pre-compileru, avšak balík listings (CTANlistings) toto převádí na LaTeX.

Dobrým pre-compilerem je systém lgrind (CTANlgrind), který obsahuje mnoho výhodných vylepšení, která se vám mohou hodit a také má velice široký výběr jazyků.

Systém tiny_c21 (CTANtinny_c21) je o něco novější, uživatelé si zde mohou vygenerovat vlastní ovládací soubory pro daný jazyk, jehož kódy zpracovávají.

Systém C++2LaTeX (CTANC++2LaTeX-1_1pl1) přináší mnoho doporučení pro používání s jazyky C a C++.


Sazba symbolu hlavní hodnoty integrálu

Tento symbol (,,přeškrtnutý`` znak integrálu) není obsažen v žádném fontu, který by byl bežně dostupný uživatelům TeXu nebo LaTeXu, může však být vytvořen pomocí následujícího makra:


\def\Xint#1{\mathchoice

   {\XXint\displaystyle\textstyle{#1}}%

   {\XXint\textstyle\scriptstyle{#1}}%

   {\XXint\scriptstyle\scriptscriptstyle{#1}}%

   {\XXint\scriptscriptstyle\scriptscriptstyle{#1}}%

   \!\int}

\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$}

     \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}}

\def\ddashint{\Xint=}

\def\dashint{\Xint-}

Pro sazbu jednou přeškrtnutého znaku integrálu se použije příkaz \dashint, pro sazbu dvakrát přeškrtnutého znaku použijeme \ddashint.


Používání nových jazyků v babelu

Babel umí pracovat se širokou řadou jazyků, avšak občas se stane, že nový uživatel chce používat jazyk, který jeho instalace TeXu neumí používat. Např. požadavek
\usepackage[catalan]{babel}
vyvolá chybové hlášení


Package babel Warning: No hyphenation patterns 

... were loaded fo the language `Catalan'. 

... I will use the patterns loaded for 

... \language=0 instead. 

Problém je v tom, že TeX neví, jak dělit katalánská slova: musíte mu to říct, dříve než babel začne pracovat. V LaTeXové instalaci musíte přidat do souboru language.dat, který je součástí babelovké instalace, řádek
catalan       cahyphen.tex
který, pokud odstraníte komentovací znaménko (%), řekne LaTeXu, že má nahrát vzor pro katalánské dělení slov, pokud mu řeknete, aby vytvořil nový formát. Bohužel, v mnoha babelovských distribucích právě tento řádek není správný - musíte zkontrolovat jména souborů, obsahující vzory, které se chystáte použít. Jak můžete vidět, v autorově systému je očekáván soubor cahyphen.tex, ačkoliv jméno souboru, který je v systému, je cahyph.tex. V lepších distribucích je většina těchto souborů obsažena, chybějící soubory si můžete najít na CTANovském archívu. Pokud si stáhnete nový soubor, zajistěte jeho korektní instalaci (viz Otázku Instalace nových balíčků). Nakonec musíte obnovit formáty, které používáte (ve skutečnosti většina uživatelů používá babel v LaTeXových dokumentech, takže zde bude dost formátů, které bude nutno upravit; nicméně uživatelé často opravují soubory, které s tímto nemají nic společného).
  • teTeX, fpTeX : pro obnovu všech formátu použijte toto: fmtutil -all Pokud si být chcete jisti, co děláte, (to není pro zbabělé), můžete si vybrat posloupnost formátů, které chcete upravovat, a pro každý z nich spustit fmtutil -byfmt <formatname>, kde <formatname> je něco jako LaTeX nebo fmtutil -byhyphen <hyphenfile>, kde <hyphenfile> je soubor specifikující dělení slov do formátu - obvykle language.dat.
  • MikTeX V MikTeXovské distribuci do verze 2.0 udělejte: Start -> Programs -> Miktex -> Maintenance -> Create all format files nebo otevřete DOSovské okno a napište initexmf -dump. V MikTeXovských distribucích verze 2.0 a vyšší může být celá procedura provedena pomocí GUI. Nový jazyk vyberete takto: Start -> Programs -> Miktex 2 -> Miktex options a vyberte Languages. Vyberte jazyk ze seznamu a stiskněte tlačítko Apply a svou volbu potvrďte stiskem buttonku OK. Pak vyberte general a stiskněte tlačítko Update Now. Další možností je vyeditování souboru language.dat jak bylo popsáno výš a spusťte initexmf -dump jako u verzí nižších než 2.0.

POZOR: Je možné, že váš TeX skončí s chybovou hláškou týkající se nedostatku paměti při vytváření nových formátů. Většina TeXových implementací má na uchování dat týkajících se tohoto problému vyhraženo pole fixní délky. Pokud shledáte, že vám přetekla paměť, může to být zásluha prohledávání seznamu dostupných jazyků ve vašem souboru language.dat, pak se tedy podívejte, který z jazyků může být odstraněn.


CSTUG
(c) 29.04.2002 16:18 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.