Portál AbcLinuxu, 24. května 2024 07:04

TeX – 8 (život s TeXlive)

8. 1. 2014 | Petr Olšák
Články - TeX – 8 (život s TeXlive)  

V linuxových distribucích je TeX zpřístupněn nejčastěji prostřednictvím balíčku TeXlive. To je také název distribuce, tentokrát TeXové, která běží i pod dalšími operačními systémy a počítačovými architekturami. Ta zanechá po své instalaci na disku kupu rozličných souborů. Účelem tohoto dílu seriálu bude udělat v tom rámcový přehled. Principy popsané pro TeXlive platí víceméně i pro jiné TeXové distribuce.

Obsah

Dilema s instalací

link

TeXlive je možné instalovat jako balíček v linuxové distribuci nebo přímo ze stránek TeXlive. První řešení je přímočařejší a snadnější, má ale nevýhodu: dostanete na disk ne zcela aktuální verze programů a maker a nemůžete využít to, co se skrývá za slovem „live“. TeXlive sám totiž sestává ze skoro šesti tisíc vlastních balíčků, mnohé z nich se vyvíjejí a upgrady nových verzí balíčků jsou k dispozici na síti i několikrát týdně. TeXlive je živoucí organismus.

Jednou ročně (obvykle v květnu) po větším upgradu je přeznačena verze TeXlive na aktuální rok a je vytvořen DVD obraz, který je vylisován pro účely archivace a rozeslání členům TeXových sdružení jako suvenýr (k čemu jinému by to potřebovali). Autoři linuxových distribucí pak tyto obrazy přebírají a dělají z nich balíček. Při té příležitosti někdy přiohnou některé výchozí konfigurační parametry (umístění souborů, koncepce vyhledávání atd.).

Pokud se rozhodnete instalovat TeXlive přímo, stačí stáhnout instalační skript a spustit jej. Je to perlovský skript install-tl, který nabídne na terminálu v textovém módu možnost výchozího nastavení základních parametrů, umožní stanovit rozsah instalace a spustí samotnou instalaci jednotlivých balíčků ze sítě završenou automatickým vygenerováním potřebných formátů. Výhodou tohoto postupu je, že pak kdykoli je možné upgradovat jednotlivé balíčky z TeXlive pomocí nástroje tlmgr a udržovat tak nejnovější verze softwaru.

Linuxový uživatel musí při přímé instalaci TeXlive počítat bohužel také s nevýhodou: jeho systém není zpraven o tom, že je TeXlive instalován, takže při instalaci jakéhokoli dalšího linuxového balíčku se závislostí na TeXlive mu jej linuxová distribuce nainstaluje znovu. Vzniká poněkud chaos.

Procházka po TeXlive

link

Jako každý obvyklý balíček sestává i TeXlive z binárních programů a dat. Mezi binárními programy najdeme nejen TeXové klony (pdftex, luatex, xetex), ale i spoustu dalších obslužných programů. Některé z nich jsou uvedeny v následující tabulce.

afm2pl, afm2tfm konverze metrik PostScriptových fontů formátu Type1
bibtex, bibtex8, bibtexu seznamy literatury generované z bibliografických databází
biber nástupce bibTeXu, o řád komplikovanější
ctangle, cweave manipulace se zdrojovými soubory .cweb
dvitype extrahuje příkazy z dvi do čitelného formátu
dvitty extrahuje text dokumentu z dvi
dvidvi, dviconcat, dvibook, ...konverze z dvi a modifikace dvi
dvihp, dvilj konverze z dvi do jazyka tiskárny
dvips konverze z dvi do PostScriptu
dvipdfm, xdvipdfmx konverze z dvi do PDF
xdvi jednoduché prohlížedlo dvi v X Window Systému
gftopk, gftype manipulace s bitmapovým formátem fontů PK (zastaralé)
fmtutil, fmtutil-sys nástroj na udržování předgenerovaných formátů
fontinst instalace fontů v Type1 formátu pomocí virtuálních popisů
httex, htlatex převod dokumentu do html, xml
kpsewhich trasovací nástroj pro vyhledávání dat
makeindex, xindy starší a novější nástroj na sestavování rejstříků
mf Knuthův Metafont
mktexlsr = texhash obnovení vyhledávací databáze pro kpathsea
mktexpk, gsftopk, ps2pk, ttf2pkmanipulace s bitmapovým formátem fontů PK
mpost Metapost, rozšíření Metafontu s výstupem do PostScriptu
musixtex sazba not
patgen generování vzorů dělení slov ze slovníků
pstops, psbook, psselect konverze a modifikace PostScriptu
t1asm, t1disasm, t1... konverze a manipulace s Type1 formátem fontů
tangle, weave, tie manipulace se zdrojovými soubory .web
texconfig, texconfig-sys nabídka základní konfigurace TeXlive
updmap, updmap-sys obnova .map souborů, konfigurace Type1 resp. TrueType fontů
vlna doplnění vlnky za neslabičné přeložky

Zajímavost: zhruba v roce 2010 se z TeXlive vytratil klasický Knuthův TeX. Binárka pdftex jej totiž dokáže nahradit docela věrně, když je potřeba.

Data jsou sdružena do adresářového stromu označeného tradičně texmf (ačkoli to dnes už nejsou jen data pro TeX a Metafont). Na první úrovni jsou adresáře členěny podle charakteru dat. Nejpodstatnější adresáře ukazuje následující tabulka.

bibtex data pro BibTeX
context makra pro ConTeXt
doc veškerá dokumentace k balíčkům z TeXlive
fonts metriky fontů, virtuální fonty i kompletní fonty
makeindexdata pro Makeindex
metafont makra pro Metafont
metapost makra pro Metapost
source typicky zdrojové soubory balíčků maker před konverzi Docstripem
tex makra pro TeX, tj. pro plainTeX, LaTeX, LaTeXové balíčky maker atd.
web2c konfigurační soubory, soubory s předgenerovanými formáty
xindy data pro Xindy

I na dalších úrovních jsou adresáře členěny. Například adresář fonts obsahuje podadresáře podle formátu dat souvisejících s fonty, viz tabulku.

afm metriky PostScriptových fontů
enc encoding soubory vymezující 256 znakové výřezy PostScriptových fontů
map mapovací soubory propojující TFM s PostScriptovými fonty
ofm fonty ve formátu OTF
opentypefonty ve formátu OpenType
pk fonty v pravěkém bitmapovém formátu PK
source zdrojové soubory pro generování fontů pomocí Metafontu
tfm metriky fontů které čte přímo i klasický TeX
truetypefonty ve formátu TrueType
type1 fonty ve formátu PostScript Type1
vf virtuální fonty

Binárky jsou většinou slinkovány s knihovnou kpathsea, což umožní sofistikované vyhledávání dat. Tomu se budu věnovat za chvíli. Kromě toho binárky TeXových klonů dokáží načíst formát podle názvu, pod kterým jsou vyvolány (v terminologii jazyka C: podle argumentu nula, který si funkce main() převezme z příkazového řádku). Vysvětlím to na příkladě. Představme si, že uživatel napíše:

latex dokument

Protože latex je umístěn na některé z cest v seznamu proměnné prostředí PATH, něco se spustí. Můžete si ověřit, že latex je jen link na pdftex, takže se spustí nakonec pdftex. Ten pozná, že byl vyvolán pod jménem latex a zavede tedy před zahájením činnosti předgenerovaný formát latex.fmt. Pracuje tedy stejně, jakoby byl zavolán pomocí

pdftex -fmt latex dokument

TeX hledá svá data

link

TeX potřebuje ke své činnosti najít zdrojový text dokumentu, použitá makra, předgenerovaný formát, fonty, konfiguraci k fontům (tzv. map soubor a enc soubory), obrázky, atd. Platí zlaté pravidlo, že toto vše prvně hledá v aktuálním adresáři a pokud to tam nenajde, vyhledá to „někde v distribuci“. Bohužel za slovy „někde v distribuci“ se skrývá poněkud komplikovaný proces. Než jej aspoň částečně poodhalím, zformuluji kromě výše uvedeného zlatého pravidla ještě další.

Stříbrné pravidlo: textový soubor je hledán TeXem nejprve tak, jak je specifikován. Když není nalezen, připojí se přípona .tex a je hledán znovu. Takže třeba při latex dokument je nejprve hledán soubor dokument v aktuálním adresáři. Když není nalezen, je hledán dokument.tex v aktuálním adresáři. Když ani ten není nalezen, je hledán dokument na prvním místě „někde v distribuci“, dále na témže místě dokument.tex, dále na druhém místě „někde v distribuci“ dokument, dokument.tex atd.

Koncepce prohledávání „někde v distribuci“ je zanesena do souboru texmf.cnf, jehož vyhledání je natvrdo zabudováno do každé binárky slinkované s kpathsea. Vyhledání texmf.cnf začíná v místě samotné binárky (tj. například v /usr/local/bin), postupně přechází k nadřazenému a dvakrát nadřazenému adresáři a v každém patře se pokusí podívat také do podadresáře share/texmf-local/web2c, texmf-local/web2c, share/texmf-dist/web2c, texmf-dist/web2c. První výskyt souboru texmf.cnf použije. Můžete se do něj podívat také. Doporučuji podívat se též do dokumentace ke kpathsea. Zjistíte, že způsob prohledávání všech ostatních souborů je vysoce konfigurovatelný. V souvislosti s obsahem souboru texmf.cnf učiním ještě dvě poznámky:

Všechny proměnné použité v texmf.cnf (například TEXMF, TEXINPUTS atd.) mohou být nastaveny také jako proměnné prostředí. Pak mají přednost před konfigurací z texmf.cnf. Dále si povšimněte dvou vykřičníků použitých jako prefix některých cest v texmf.cnf. V těchto adresářích není prohledávání přímé, ale jen prostřednictvím předgenerovaného souboru ls-R, který je potřeba po každé změně adresářového stromu obnovit příkazem texhash alias mktexlsr. Zapomenete-li na to a dáte „někam do distribuce“ nový soubor, nepřestanete se divit, že ho TeX nemůže najít.

Aby toho nebylo dost, na počítači typicky existuje celý les texmf stromů. Základní texmf-dist obsahuje soubory z distribuce, při upgradu se mohou změnit. Místní texmf-local může obsahovat konfiguraci správce systému pro všechny uživatele, která by měla mít přednost před konfigurací v texmf-dist a která není zničena upgradem ani odstraněním TeXlive distribuce. Dále texmf-var obsahuje přechodně generované soubory. Uživatel může mít ve svém HOME adresáři také svůj texmf nebo .texmf, nebo .texlive-číslo-verze atd. Tyto stromečky by měly mít přednost i před texmf-local.

Zdá se vám to příliš komplikované a náchylné k omylům uživatelů? Nejste sami, mně taky. Připomíná mi to pravidlo: dejte vývojářům silný nástroj (jakým je kpathsea) a během krátké chvíle jej zneužijí tak, že se v tom skoro nikdo nevyzná. Osobně sám často musím přistoupit k použití unixového strace a prozkoumat, jakým způsobem TeX šmejdí po disku a kde všude hledá svá data, abych dohledal problém. S nástrojem kpsewhich, který je k tomu určen přímo v TeXlive, jsem se nikdy moc nekamarádil.

Nástroje na údržbu datových souborů

link

Je sice možné vytvořit formát *.fmt přímým voláním odpovídajícího TeXového klonu s parametrem -ini a případnými dalšími parametry, ale pak přibývá starost, kam výsledný soubor umístit, aby ho TeX našel. Uživatel může být těchto starostí zproštěn, použije-li nástroj fmtutil (pro uživatelskou konfiguraci) nebo fmtutil-sys (pro konfiguraci sdílenou všemi uživateli udržovanou správcem systému). Nástroj pracuje s konfiguračním souborem fmtutil.cnf, ve kterém jsou parametry pro generování odpovídajících formátů zapsány.

Dalším podobným nástrojem je updmap respektive updmap-sys, který udržuje konfigurační soubory pro fonty .map v podobě, které rozumí pdfTeX nebo jiné obslužné programy (např. dvips). Více napoví příslušná manová stránka.

Uvedené nástroje jsou skripty (perl respektive bash) a volají se z příkazového řádku. Chce-li uživatel volit z nabídek, je k dispozici skript texconfig nebo texconfig-sys, který nabízí v textovém terminálu výběr dalšího postupu při konfiguraci a zavolá nakonec editor na správný konfigurační soubor nebo spolupracuje s dříve zmíněnými nástroji.

Komplikace s licencemi

link

Jak bylo řečeno, TeXlive obsahuje tisíce balíčků od stovek různých autorů, kteří mají rozličné názory na to, jak je možné jejich dílo použít a dále šířit. Často je tento názor inspirován Knuthovou licencí, která je něčím jako „patent na název“. Jinak si s tím můžete dělat v podstatě cokoliv. Myšlenka svobodného použití a víceméně volného šíření je společná všem balíčkům z TeXlive.

Je nutné si uvědomit, že „patent na název“ chrání i uživatele programu a jeho částí (tj. např. maker) před příliš živelným vývojem, během kterého by při odkazu na název makra (např. příkazem \input) nebylo možné spolehnout se v zásadě na nic. Na podobné myšlence je proto postavena i licence většiny LaTeXových balíčků (LPPL). Lidem kolem Debianu se jeví tento přístup málo liberální a měli velké potíže vůbec TeX a případně distribuci všech dalších balíčků do svého licenčně ortodoxního systému zařadit. Na základě toho probíhal docela dlouhodobý a hluboký názorový střet mezi debianisty a TeXisty, který velmi podrobně shrnul Frank Mittelbach ve svém článku. Chápu sice, že se kdysi Stallman rozhodl proti svému „komerčnímu nepříteli“ bojovat jeho vlastními zbraněmi (tj. licencemi) a jevilo se to jako docela účelné. Přesto osobně mám na to jiný názor. Ale to sem asi nepatří.

Seriál TeX (dílů: 15)

První díl: TeX – 1 (seznamujeme se), poslední díl: TeX – 15 (mikrotypografie).
Předchozí díl: TeX – 7 (OpenType fonty)
Následující díl: TeX – 9 (grafika)

Další články z této rubriky

Týden na ScienceMag.cz: Neutronové molekuly – neutrony se mohou vázat na kvantové tečky
Týden na ITBiz: Polovina českých firem si není jistá blízkou budoucnosti svého oboru, většina ale počítá s velkým vlivem AI
Týden na ScienceMag.cz: Působivá simulace pádu do černé díry
Týden na ITBiz: Platby výkupného za ransomware vzrostly za poslední rok na pětinásobek
Týden na ScienceMag.cz: O krok blíže k molekulárním počítačům

Diskuse k tomuto článku

Nuphar avatar 9.1.2014 15:20 Nuphar | skóre: 19
Rozbalit Rozbalit vše Aktuální balíčky
Odpovědět | Sbalit | Link | Blokovat | Admin
Některé distribuce mají extra repozitáře s čerstvými balíčky, viz třeba https://build.opensuse.org/project/show/Publishing:TeXLive pro openSUSE.
Per aspera, Asparagus et Aspergillus ad a/Astra!
juraj-bit avatar 10.1.2014 14:45 juraj-bit | skóre: 14 | blog: X BLOG X | Bratislava
Rozbalit Rozbalit vše Re: TeX – 8 (život s TeXlive)
Odpovědět | Sbalit | Link | Blokovat | Admin
Existuje nejaká distribúcia zameraná čiste na TeXlive? Myslím tým niečo také ako bola svojho času Linux Genealogy CD, ktorá bola síce založená na Ubontu 10.10 ale špecializovaná na genealógiu? Ide mi o to aby sa mi nebili systémové balíčky s tými z tugu, keďže by som ich rád aktualizoval. SUSE nepoužívam.
Nihil habenti nihil deest
10.1.2014 23:33 vencas | skóre: 32
Rozbalit Rozbalit vše Re: TeX – 8 (život s TeXlive)
V Debianu a derivátech to lze udělat relativně snadno -- poslední sekce pod http://www.tug.org/texlive/debian.html . Kdysi odzkoušeno, chodí.
11.1.2014 22:27 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
Rozbalit Rozbalit vše Re: TeX – 8 (život s TeXlive)
Nebylo by to zbytecne? Abych se nemusel otravovat s TeXem z distribuce, tak instaluji TeXlive do /opt/texlive a cesty mam nastavene tak, aby tento tex mel prednost pri spousteni. TeXlive z distribuce se mi taky natahne do pocitace jako zavislost nejakeho jineho balicku, ale pri velikosti dnesnich disku mi to moc nevadi
1.10.2018 06:56 ranny
Rozbalit Rozbalit vše Re: TeX – 8 (život s TeXlive)
Odpovědět | Sbalit | Link | Blokovat | Admin
launches and also an adjustable upper Best Dog Harness body belt The leash accessory DogHarnessReview is between the shoulder blades.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.