Absolvent FI MU Hàn Thế Thành je autorem slavného pdfTeXu, rozšíření sázecího programu TeX

Hàn Thế Thành

Donald Knuth viděl pdfTeX při své návštěvě Masarykovy univerzity a dočkal se od něj pozitivních komentářů, což nás velmi povzbudilo.


Autor: Dave Walden pro tug.org dokončen [2008-07-24]

Hàn Thế Thành je autorem a stále udržuje pdfTeX. Dave Walden se Hàna v rozhovoru pro tug.org ptal na jeho práci a studium.

Povězte mi něco o své osobní historii nezávislé na TeXu.

Narodil jsem se ve Vietnamu v roce 1972 a žil jsem tam až do roku 1990, kdy se mi naskytla příležitost odjet studovat do České republiky (tehdy Československa). V letech 1991 až 2001 jsem studoval na Masarykově univerzitě v Brně a získal jsem magisterský a později i doktorský titul v oboru informatiky. Poté jsem se vrátil do Vietnamu a pracoval na Vysoké škole pedagogické v Ho Či Minově Městě (známém také jako Saigon). Od roku 2006 žiji se svou ženou v německém Bielefeldu, kde moje žena studuje.

Jaká byla vaše práce na Pedagogické univerzitě?

Učil jsem úvod do programování a pracoval jako správce sítě.

Kdy a jak jste se poprvé dostal k TeXu?

Během prvních let na univerzitě jsem od svých spolužáků čas od času slyšel, že TeX je úžasný systém pro sazbu, také velmi výkonný, ale velmi obtížný na používání. Sám jsem však TeX vůbec nepoužíval, dokud jsem si ve čtvrtém ročníku nemusel vybrat téma své magisterské práce. Na výběr bylo několik témat a já si vybral jedno, které znělo nějak jako "Automatizované systémy pro sazbu" nebo něco podobného. Představa mého vedoucího byla, že přepíšu TeX pomocí vysokoúrovňového jazyka. Později se ukázalo, že přepsání TeXu ve vysokoúrovňovém jazyce je pro studenta, jako jsem já, příliš obtížný úkol, a tak mi vedoucí diplomové práce změnil téma na "Systém pro sazbu TeXu a formát Portable Document Format". Záměrem bylo víceméně to, co dnes dělá pdfTeX: změnit TeX tak, aby mohl přímo vytvářet pdf. Musel jsem se tedy nejprve o TeXu něco dozvědět – pořádně se mu věnovat. Předtím jsem o TeXu jen slyšel, ale nikdy jsem ho nepoužíval. To bylo v roce 1994.

Lze tvrdit, že klíčovým důvodem, proč je TeX dodnes tak živý, je existence pdfTeXu. Z toho, co jste právě řekl, to zní, jako byste k vytvoření pdfTeXu, který dnes všichni používají, tak nějak doklopýtal – že vás vedoucí diplomové práce tímto směrem spíše postrčil, než že byste měl původní hlubokou touhu pracovat v této oblasti. Je to tak?

Ano, pdfTeX začal víceméně takto: můj školitel, profesor Jiří Zlatuška, býval velmi aktivním uživatelem a vývojářem TeXu. Jiří je také příznivcem logického programování. Takže jeho původním záměrem bylo, abych TeX přepsal pomocí deklarativního jazyka, jako je Prolog, a použil ho pro další vývoj. Měl jsem jen malé (pokud vůbec nějaké) tušení, co to všechno znamená. Vybral jsem si téma, které jsem si vybral, jednoduše proto: (1) měl jsem rád logické programování; (2) z toho, co jsem slyšel o TeXu, znělo toto téma zajímavě; a (3) nenašel jsem zajímavější téma, které bych si mohl vybrat z dostupných témat.

Po několika měsících hraní si s přepisováním TeXu bylo mně i Jiřímu jasné, že přepisování TeXu v Prologu je pro mě příliš obtížné. Najednou si mě Jiří jednoho dne zavolal k sobě do kanceláře, dal mi vytištěnou specifikaci PDF verze 1.0 a řekl, že bych se mohl pokusit změnit TeX tak, aby produkoval přímo výstup do PDF (později jsem se dozvěděl, že Jiří na tento nápad přišel z nějaké diskuse s Philem Taylorem a Knuthem na Stanfordově univerzitě). Ten nápad se mi líbil a původní plán se mi také zdál nereálný; proto jsme plán změnili. Začal jsem číst specifikaci PDF a učit se, jak TeX hacknout pomocí Knuthova webového systému, Web2c, Kpathsea and friends. Po několika měsících jsem vytvořil "Hello, world!" PDF z TeXu a byl to pro nás poměrně vzrušující okamžik. Ale nečekal jsem, že pdfTeX bude tak rozšířený, jako je dnes (myslím, že to nečekal ani Jiří, ale možná se mýlím).

TeX jsem se naučil „the hard way“: Začal jsem čtením TeXbooku, protože ten mi dal Jiří na začátku. Pak jsem začal používat obyčejný TeX, protože jsem slyšel, že LaTeX není tak dobrý jako obyčejný, pokud se chcete naučit detaily TeXu, ovládat každou část sazby a tak dále. Plain TeX jsem tedy používal pro sazbu časopisu, diplomových prací svých přátel a dalších příležitostných materiálů. Později jsem ale začal používat LaTeX, protože dělat všechno v plainu je dost bolestivé. Takže většinou používám LaTeX a plain TeX používám jen pro několik velmi specifických aplikací, které by se lépe dělaly v plain TeXu.

Naučit se formát PDF nebylo příliš těžké, protože specifikace PDF verze 1.0 byla velmi tenká kniha (kdybych dostal například verzi 1.3 nebo pozdější, okamžitě bych to vzdal). Ale naučit se webové změnové soubory, Web2C and friends pro mě bylo dost obtížné: bylo v tom příliš mnoho kroků, a když se něco nepovede, není snadné zjistit, kde je chyba.

Jiří chtěl, abych se řídil paradigmatem literárního programování a vše prováděl pomocí změnových souborů a mechanismů. Později však bylo stále obtížnější udržovat věci tímto způsobem, a tak jsem se rozhodl přesunout některé věci do jazyka C. Hlavní kritérium při rozhodování, co ponechat v pascalském WEBu a co v C, bylo následující: pokud to souvisí s backendem, mělo by to být v C; jinak by to mělo být ve WEBu. Jiří nebyl s mým rozhodnutím spokojen, ale víceméně ho akceptoval (nebo mi to alespoň dovolil).

Dokončil jste provozní verzi pdfTeXu jako svou magisterskou práci, nebo jste nějak dokončil diplomovou práci a pak jste pracoval dál, dokud nebyla k dispozici provozní verze pdfTeXu?

Nevzpomínám si, kdy se pdfTeX stal skutečně "funkčním pro použití", protože vývoj byl postupný a přispívalo do něj mnoho lidí z různých oblastí. Když jsem dokončil svou magisterskou práci, byl stav pdfTeXu zhruba takový, jak uvádí v článku Petr Sojka: podpora vložených písem Type1, virtuálních písem, hypertextových odkazů, LZW komprese (později byla LZW komprese nahrazena zip kompresí). Neexistovalo ještě žádné začlenění obrázků!

Máte na mysli článek s názvem The Joy of TEX2PDF — Acrobatics with an Alternative to DVI Format od Petra Sojky, Jiřího a Vás v TUGboatu 17:3 (1996)?

Ano.

Jak se o vašem systému pdfTeX dozvěděl širší svět TeXu a jak došlo k jeho zařazení do všech distribucí TeXu?

Poprvé jsem se dostal do kontaktu s dalšími lidmi z TeXového světa, když si Jiří dopisoval se Sebastianem Rahtzem o pdfTeXu (tehdy ještě `tex2pdf'). Sebastiana to zaujalo, začal si s pdfTeXem hrát a různými způsoby ho podporovat: založil mailing list pdfTeXu, kompiloval a testoval ho na jiných platformách, seznamoval s ním další uživatele atd. Sebastian dal v těchto počátcích vývoji pdfTeXu zásadní impuls.

Později pdfTeX viděl Knuth při své návštěvě Masarykovy univerzity a dočkal se od něj pozitivních komentářů, což nás (mě a Jiřího) velmi povzbudilo. První článek o pdfTeXu byl ten, který jsem právě zmínil, od Petra Sojky et al. Mailing list pdfTeXu byl v začátcích nesmírně užitečným místem pro diskusi o vývoji pdfTeXu. A jednoho dne se v této konferenci objevil Hans Hagen a začal s pdfTeXem experimentovat, hlásit problémy, diskutovat o nových nápadech a funkcích atd., což mělo na pdfTeX další velký vliv. Skutečnost, že tak známí a aktivní členové komunity TeXu (Sebastian, Hans, atd.) měli pdfTeX rádi, byla klíčem k tomu, aby se pdfTeX stal "známějším". Poté jej do teTeXu zařadil Thomas Esser. Jakmile je něco v teTeXu, obvykle to následně přijmou i ostatní systémy TeXu.

Objasněte mi, prosím, rozdíl mezi pdfTeXem a mikrotypografickými rozšířeními TeXu popsanými ve Vaší doktorské práci, která byla přetištěna ve zvláštním čísle časopisu TUGboat (svazek 21, číslo 4), Microtypographic extensions to the TeX typesetting system, pokud vůbec existuje.

Cílem mé magisterské práce bylo vytvořit výstup do PDF přímo z TeXu. Když jsem začínal své doktorské studium (také pod vedením Jiřího), věděli jsme pouze, že budu dělat něco, co souvisí se sazbou, ale nevěděli jsme přesně co. Během zhruba prvního roku doktorského studia jsem stále vyvíjel pdfTeX a také hledal nápad na doktorskou práci. Několik jsem jich vymyslel, pak mi Jiří řekl, abych zůstal u mikrotypografických rozšíření, což bylo podle mého názoru opět velmi moudré rozhodnutí.

Upřesněte mi, prosím, načasování vašeho magisterského a doktorského studia. Říkal jste, že jste na Masarykově univerzitě studoval v letech 1991–2001. Kdy skončilo Vaše magisterské studium a kdy začalo Vaše doktorské studium?

Magisterské studium jsem ukončil v létě 1996. Několik měsíců poté jsem zahájil doktorské studium.

Rozveďte, prosím, trochu podrobněji svůj přístup ke studiu mikrotypografie, k provádění nezbytných rozšíření pdfTeXu a k výzkumné složce nutné pro úspěšnou doktorskou práci.

Necítím se příliš kvalifikovaný k tomu, abych mluvil o tom, jak udělat úspěšnou doktorskou práci, protože jsem se s tou svou trápil, abych ji vůbec dokončil.

Omlouvám se; nechtěl jsem vám připomenout stresující období. Hlavně mě zajímá, jak jste se naučil to, co jste potřeboval vědět o mikrotypografii?

Nevzpomínám si přesně, jak jsem se o mikrotypografii dozvěděl — byl to postupný proces, asi jako u většiny lidí. Začal jsem tím, že jsem si přečetl několik knih a článků, a pak jsem hledal další relevantní zdroje. Nejužitečnějšími zdroji, na které si vzpomínám, byly článek Hermanna Zapfa O mikrotypografii a HZ-programu a brožura o hz-programu německé slévárny písem URW. Hodně jsem také experimentoval s programem Adobe InDesign, který tvrdí, že má některé moduly z HZ-programu integrované. Je zajímavé, že některé myšlenky HZ-programu byly původně inspirovány samotným TeXem.

Vím, že pdfTeX byl v době, kdy jste dokončil svou doktorskou práci, už docela funkční. Pokračoval jste ve vývoji pdfTeXu i po návratu do Vietnamu?

Když jsem se vrátil do Vietnamu, měl jsem zpočátku ve vývoji pdfTeXu dlouhou přestávku kvůli potížím s přístupem k síti a různým věcem. Pak jsem si občas našel čas na drobná rozšíření pdfTeXu, ale už to nebyl aktivní vývoj jako dříve. Do pdfTeXu samozřejmě přispívali i další lidé. Nejvýznamnější příspěvky do pdfTeXu v posledních letech udělal velmi tichý člověk jménem Hartmut Henkel. Jeho opravy výrazně zlepšily pdfTeX v mnoha ohledech: rychlost, stabilita, čistší kód, lepší funkčnost atd.

V poslední době se zdá, že jste se do vývoje pdfTeXu opět více zapojil.

Ano, od té doby, co jsem se s manželkou přestěhoval do Německa, se pdfTeXu věnuji více. V Německu pracuji doma jako konzultant pro River Valley Technologies — společnost Kaveh Bazargana a Radhakrishnana. Podporuji správu sítě, automatizaci některých editačních úloh a také nasazení pdfTeXu.

Z toho usuzuji, že vývoj pdfTeXu funguje určitým způsobem jako "open source" vývoj. A minulý týden jste mi ve zprávě řekl, že jste si musel vzít pár dní pauzu od našeho rozhovoru, protože Karl Berry chtěl, abyste okamžitě opravil něco ohledně pdfTeXu pro nadcházející vydání TeX Live. Povězte mi prosím o probíhající organizaci a koordinaci vývoje pdfTeXu.

Vývoj pdfTeXu se v průběhu času vyvíjel a v současné době funguje víceméně takto. Existuje stránka projektu pro pdfTeX umístěná na sarovar.org, kam lidé posílají hlášení o chybách, požadavky na funkce nebo záplaty. Existuje také poštovní konference pro zájemce o vývoj pdfTeXu. A existuje základní tým (Hans Hagen, Taco Hoekwater, Hartmut Henkel, Martin Schröder a já), kde diskutujeme o rozhodnutích učiněných v pdfTeXu.

Chápu, že jste vynaložili hodně úsilí na přidání podpory vietnamštiny do řady písem. Jak jste se k tomu dostal a jak jste postupoval?

Když jsem se učil TeX, zajímal jsem se o jeho použití i pro vietnamštinu. V té době existoval balík vcmr od Wernera Lemberga, který již poskytoval poměrně dobrou podporu pro sazbu vietnamštiny. Nebyl jsem však spokojen s tvary vietnamských písmen, a tak jsem se rozhodl přidat vietnamská písmena do písem CM sám. Byla to pouze zájmová činnost a neměl jsem žádné výtvarné vzdělání. Učil jsem se hlavně prohlížením existujících písem a čtením materiálů, které jsem našel, a také z připomínek, které jsem dostával od zkušených lidí. Vietnamská písmena jsem do písem CM přidal pomocí programu METAFONT. Pro převod těchto písem do formátu Type1 jsem použil kombinaci několika nástrojů: Metafog, FMP (od Y&Y), a2ac a několik vlastních skriptů v Perlu. Pro přidání vietnamských písmen do existujících písem Type 1 jsem použil víceméně stejný postup, i když jsem akcenty kreslil pomocí FontLabu. Na vntex se podílí více lidí: Werner Lemberg a Vladimir Volovich na podpoře LaTeXu, Reinhard Kotucha na testování a údržbě balíčku a na tom, že vše přehledně odpovídá TDS a poskytuje to, co vyžaduje TeX Live a CTAN, jako je soubor README, upozornění na autorská práva atd. Na vntexu již neprobíhá aktivní vývoj, protože vntex má již poměrně velké množství písem. Existuje dokonce vietnamský překlad ankety matematických písem pro TeX od Stephena Hartkeho, což znamená, že většina textových písem uvedených v anketě má i vietnamskou verzi.

Děkuji vám, Thành, že jste si udělal čas a zúčastnil se tohoto rozhovoru. Bylo mi ctí komunikovat s někým, kdo má tak zásadní vliv na další používání TeXu.

[Poznámka na závěr: Při přehledu tohoto rozhovoru Thành upozornil na tyto významné spoluautory pdfTeXu: Pavel Janík přidal podporu tiff (později odstraněna); Heiko Oberdiek přidal podporu zásobníku barev; Jiří Osoba přidal podporu jpeg; Ricardo Sanchez Carmenes přidal podporu šifrování (později odstraněna); Robert Schlicht vytvořil balíček LaTeXu pro mikrotypografické funkce; Martin Schroeder udržoval pdfTeX po mnoho let; a konečně, pdfTeX je samozřejmě jen rozšířením TeXu a neexistoval by, kdyby Donald Knuth nenapsal samotný TeX. Upřímně se omlouvá, pokud byl opomenut někdo další, komu by měly být přiznány zásluhy!"].


Galerie absolventů