Důležité upozornění!

Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné risiko trestního stíhání! Četba na vlastní nebezpečí!

Ne, moji milí, nermuťte se ani nejásejte, anžto se neloučím s vámi, nýbrž rozloučil jsem se s počítačovým programem, který jsem dlouho používal, zvykl si na něj a vposledku si jej i oblíbil: s word procesorem LibreOffice, dříve OpenOffice. Je to pro mne událost tak převratná, že zaslouží několik slov.

První dokument v elektronické spisovně v OpenOffice napsaný pochází z ledna 2007, a celkem jsem jich za necelých sedm let vytvořil více než 2 800, což je, řekl bych, slušná uživatelská zkušenost. Oproti Microsoft Wordu, který jsem užíval do to doby, jsou mé zkušenosti s openofficy takřka bez výjimky kladné. Program dělal vždy přesně to, co jsem po něm požadoval, choval se stabilně a předvídatelně, na rozdíl od Wordu, který pravidelně míval své dny, kdy bych ke komunikaci s ním potřeboval tlumočníka (eventuálně dostatečně pádné kladivo, nejméně desetikilové, programátorský model). V LibreOffice jsou napsána téměř všechna podání, která na tomto blogu průběžně vystavuji, tedy není třeba nic blíže vysvětlovat.

Nyní jsem přece jen LibreOffice opustil a rozhodl se vytvářet veškeré dokumenty v TeXu. Důvody jsou dva: jednak si ušetřím dobré dvě třetiny času, který jsem vždy strávil kopírováním různých údajů a editací rubra, tabulek s přílohami atd., a také mohu výsledek ovlivnit v míře, která byla u LibreOffice nemyslitelná. Hladká sazba vypadá daleko lépe, v rubrice jsem si naprogramoval glue tak, aby se jednotlivé bloky vyrovnaly do estheticky optimálních poloh (a když se rozhodnu, že adresy stáhnu do jednoho řádku, udělám to jediným přepínačem, o zbytek se postará sázecí program), díky používání maker ušetřím čas i s věčným opisováním, příp. kopírováním, obvyklých frasí.

Vezměme jedno z prvních podání, které jsem v TeXu pořídil: žádost o proplacení faktur z prostředků zablokovaných na účtu společnosti guidemedia. Pro vytvoření takového PDF mi nyní stačí napsat v textovém editoru toto – přirozeně ne od nuly, ale editací jiného podání.

Hrubým odhadem mi práce zabere třetinu času než dřív, a výsledek vypadá kvalitněji a profesionálněji.

Naučit se TeX nebylo ovšem záležitostí na jeden večer a jedno přečtení manuálu. Autor programu Donald E. Knuth zjevně vyšel z premisy, že programátor musí při používání jeho produktu trpět, a tak vytvořil systém, který popírá všechny zásady normálního programování: rekurse, kterou programátoři téměř neužívají, protože vědí, že ji lze nahradit efektivnějším cyklickým algorithmem, je v TeXu základní technikou, bez které neobejdete, zvyk upravit zdrojový program pomocí mezer a tabulátorů se můžete rovnou odnaučit, protože každá mezera škodí a nikdy nevíte, kde se s lehkomyslně zapomenutou zpřehledňovací mezerou setkáte, a ladění vašeho programu připomíná cosi z kvantové mechaniky: u složitějších maker každý ladicí tisk téměř s jistotou změní chod laděného programu. Co by se dalo vyřešit jednoduchým regulárním výrazem (např. zjištění, jestli určitý řádek adresy obsahuje kod datové schránky nebo optické přiblížení dvou po sobě následujících lomítek v URL), v TeXu řeší makro se dvěma až třemi lokálními podmakry, s mírou přehlednosti někde na půl cesty mezi digitálním šumem a konfiguračním souborem Sendmailu – nezapomínejme, mezery jsou v kodu zapovězeny…

Abych to zkrátil, učicí křivka programu TeX se mi zprvu jevila připomínat severní stěnu Matterhornu, ale přesto jsem vytrval, přežil a na TeX po cca dvou týdnech zápasu přešel, a tak snad nebudu litovat.

Komentáře   

0 # Quidofil 2013-11-04 13:48
Vážený pane Pecino,
Vaše snaha trošku hraničí s masochismem, ale i já o TeXu uvažuji v následující souvislosti: Chci automaticky generovat dokumenty vyplňováním PDF grafických šablon. Zatím problém řeším substitucí přímo v textovém PDF (a případným dopočítáváním). Není to moc praktické a už vůbec ne univerzální. Dále mám pak asi tak dvě možnosti:
1) Přímá generace PDF pomocí nějaké knihovny (dělám to v PHP, tam je ale slušná knihovna placená)
2) Nějaký grafický preprocessor. Byl by na to vhodný TeX? Co si o tom po těch čtrnácti dnech myslíte?
0 # Tomáš Pecina 2013-11-04 15:05
Binární substituce uvnitř PDF, to zní hodně divoce a do něčeho takového bych šel jedině pod hrozbou přímé aplikace brachiálnho násilí nebo jiné srovnatelně závážné újmy.

TeX by váš úkol jistě hravě zvládl, ale jsou i jiné možnosti. Podobný problém jsem řešil v Pythonu ReportLabem (výsledek vypadá např. takto); v placené versi mají i převodník z jakéhosi proprietárního značkovacího jazyka do PDF. V Javě funguje iText, který používám pro podepisování elektronických dokumentů (ReportLab to zatím neumí). Pokud vám stačí jednoduchá substituce, můžete použít XML; jak říkám, variant je řada, záleží na tom, co přesně s daty potřebujete dělat a jak složitý a strukturovaný PDF výstup generujete. TeX, s doplňkem pdftex, je velice obecný, ale myslím, že v 90 % případů nic tak složitého nevyužijete.
0 # Quidofil 2013-11-04 16:37
Jenom textová substituce :-), omezil jsem se na verzi PDF 1.2 (ještě může být jenom textová) z roku 1996, jejíž deklarace má 400 stran, to se dá a už to zvládá hezkou komerční grafiku bez nějakých zásadních omezení. Třeba deklarace verze 1.7 má 1300 stran a to už fakt studovat nebudu.

Představoval bych si to v ideálním případě tak, že si připravím v nějakém grafickém programu (třeba InDesign nebo QuarXPress) šablonu v PDF a tu pak program naplní textem a obrázky stejně, jako se na webu plní templaty třeba s pomocí Smarty.

Děkuji za tip, ReportLab vypadá opravdu dobře, škoda, že není pro PHP. V PHP pošilhávám po PDFlib, jenže ta stojí pro jeden server 875 EUR, to je pro běžný web normálního Šmudly mnoho.

Takže jsem si říkal, že bych šel časem do TeXu, je free a asi bych na žádné omezení nenarazil. Šablona by se dala připravit přímo v něm a vyplnění šablony textem by byla zase jenom textová substituce (že bych tomu svému programu, který teď chroustá textové PDF šablony předhodil TeXový řídící soubor, nebo jak se těm grafickým zdrojákům pro TeX říká…) Univerzalita by asi byla šílená.

Jenže když jste se tím prokousával 14 dnů do prvního dokumentu Vy, tak se trochu bojím, že já bych to měl na měsíce, přece jenom jsem víc grafik, než programátor a postrádám Vaše multioborové nadání.

Mimochodem, pamatuji si, že svého času pan Zajíček v LaTeXu sázel Byte.

Dovedete si, pane Pecino, přdstavit, že byste v TeXu třeba udělal barevný leták s obrázky, textem, tabulkami a grafickými prvky (třeba irisem) v podtisku? Vím, že se v něm sázejí složité knihy (matematická sazba), ale nemám zdání, jak na tom je s barvou. Dá se pracovat v barevném modelu CMYK?
0 # Tomáš Pecina 2013-11-04 17:41
TeX zvládne jakoukoli grafiku, za předpokladu, že se skládá ze samých obdélníků a ty obdélníky jsou černé :-)

Používá se proto takový trik: grafiku si vytvoříte ve vektorech, třeba v Inkscape, vyexportujete do EPS a vypreparované příkazy zkopírujete do texového kodu. To používám třeba u hlavičkového papíru našeho Sudetoněmeckého sdružení, kde mohu mít logo ve vektorech a ne jako bitmapu (obsahu si nevšímejte, nebaví mě používat stále lorem ipsum).
0 # Tomáš Pecina 2013-11-04 17:52
Pro zajímavost, vypadá to asi takto: makru zadám jako parametr zvětšení loga (1.0 = rozměry 1"×1") a ono vytvoří prázdný box (vlastně placeholder, TeX nic o grafice neví) a vysází do něj logo.
0 # Quidofil 2013-11-04 19:09
A jak by to bylo s průhledností? Podporuje TeX alfa kanál u bitmap? Pokud ano, už by se dalo udělat všechno.

To PDFko hlavičkového papíru je "čisťounké", žádné zbytečné rámečky, fakt jenom to, co tam musí být, moc hezké – koukám na to v Illustratoru. Barevný model je RGB.
Mimochodem, čím jste dělal mezery na stranách "+" dole v patičce? Není to standardní mezera (znak), ale sazba tam vždy končí a začíná. Takhle dělá TeX nestandardní (poloviční) mezery?

A dají se ty obdélníky skládat na sebe ve vrstvách? Já jsem podobný přístup používal před mnoha lety, když jsem potřeboval vektory ve Wordu (podporoval tehdy jen bitmapy). Udělal jsem si z vektorového obrázku font a ten jsem ve Wordu "vysadil" :-)

A co fonty? Má své, vím, ale lze importovat třeba postscriptové? Předpokládám, že k truetype fontům bude nepřátelský.
A jak to je s kódováním? Umí unicode? A kódování fontů?
0 # Tomáš Pecina 2013-11-04 20:00
A jak by to bylo s průhledností? Podporuje TeX alfa kanál u bitmap?

TeX sám nepodporuje bitmapy vůbec, ale protože PDF alfa kanál umí už od verse 1.4, neměl by s tím být s tím problém.

Mimochodem, čím jste dělal mezery na stranách "+" dole v patičce? Není to standardní mezera (znak), ale sazba tam vždy končí a začíná. Takhle dělá TeX nestandardní (poloviční) mezery?

Děkuji za pochvalu, dělal jsem je takhle:
def
umplus{aise.14exhbox{+}}
def
umdash{aise.12exhbox{-}}

Tedy poctivá rukodělná práce :-)

A co fonty? Má své, vím, ale lze importovat třeba postscriptové? Předpokládám, že k truetype fontům bude nepřátelský.

Ve versi XeTeX je možné používat všechny fonty, které máte v systému; já si nicméně vystačil se základními fonty, které jsou ve standardní nabídce plain TeXu.
0 # Tomáš Pecina 2013-11-04 20:03
Barevné modely záleží pouze na PDF, je tam grayscale, RGB a CMYK.
0 # Quidofil 2013-11-04 21:49
XeTeX, aha, už to vidím, ten opravdu umí Unicode. Děkuji za tip.
Máte ho pod Fedorou? Myslím, že máte rád Fedoru. Já jsem měl také rád RedHat, ale odešel jsem od něj, když začal být komerční, k Ubuntu (na Debian jsem si tehdy netroufl).

Já vlastně ani nevím, jak teď vypadá u Linuxu desktop, protože dělám jenom servery a programy píšu na PSPadu pod Win.
Abych si zachoval duševní integritu, vytvořil jsem si pomocí shortcutů a scriptů takový makrojazyk, který používám k ovládání Win, takže mi je jedno, když ti chytráci vymyslí nový, ještě blbější desktop, než byl ten předchozí. Potřebuju jenom Winkey+R a nastavit cestu k mým shortcutům. Od té doby se mi hodně ulevilo. Potřebuji DTP aplikace, takže k Linuxu úplně neuteču.
Leda k MacOSX, ale na ten jsem zanevřel už před mnoha lety, protože jsem byl zvyklý na starý MacOS a oni mi to staré GUI, na které jsem byl léta zvyklý, u MacOSX úplně předělali.
0 # Tomáš Pecina 2013-11-04 23:11
XeTeX nepoužívám, ale ve Fedoře samozřejmě je (tam je téměř všechno…). Je otázkou, zda by pro Vaše účely nebyl lepším řešením LaTeX (XeLaTeX) než čistý TeX. Pokud máte nějaké vstupní soubory a ty potřebujete importovat do softwaru a vygenerovat výstupy v PDF v běžné typografické kvalitě, může to být pro vás optimální řešení: LaTeX je jednodušší než TeX a mnoho je v něm už připraveno, včetně barev, grafiky atd.
0 # Jozef Chocholáček 2013-11-04 15:45
Jen na okraj: eventuálně dostatečně pádné kladivo, nejméně desetikilové, programátorský model by Vám bylo nanic, neboť jak praví letitá IT poučka, software jest tou částí počítače, kterou kladivem rozbít nelze.
0 # Anonymní 2013-11-12 23:38
Vazni, city TeX snad nikdo nepouziva, to je vylozeny masochizmus, lide jiz radu let pouzivaji nejakou jeji nadstavbu plnou maker a pomucek, diky nimz je to cele tak nejak lidstejsi.
Krom LaTeXu je to tez TeTeX ci nove TeXlive a nebo starecek csLaTeX vydavany ceskou komunitou ;-)) samzorejme jsou pak ruzne nadstavby jako xmlTeX pdftex (na to ale staci prevadec z DVI dvi2pdf)

Kdo chce wisiwing tak treba LYX nebo kLYX ;-)) ale to uz neni tak docela ono
0 # Tomáš Pecina 2013-11-13 01:57
Já čistý TeX používám a nijak si nestěžuji. Asi nevím, o co nepoužíváním LaTeXu přicházím :-)

Komentovat články mohou pouze registrovaní uživatelé; prosím, zaregistrujte se (v pravém sloupci dole)