Archive for Září, 2010

První týden třetího semestru, aneb jak to vidím 2

Předem se omlouvám za stylistickou kvalitu článku. Už na to únavou nevidím, místy mám divný slovosled a v jedné větě dvakrát opakuji to samé, ale… prostě se mi to chtělo napsat :).

Bude to dřina. Pořádný kus tvrdé práce… a konečně i vzdělání a zábava.

Abych pravdu řekl, už první týden mi dal pořádně zabrat… jsem utahaný jako pes, a to se celý kolotoč teprve rozjíždí.

V pondělí jsme hned z vesela začali přednáškou z Matematiky pro Computer Science, kterou přednáší sám tvůrce skript (ehm…) pro tento předmět – pan Velebil. Osobně jsem ztratil nit někdy v polovině přednášky a potom už jsem jenom zíral na slídy (termín s dovolením vypůjčený od dr. Olšáka) a pokoušel se ji znovu najít. Do smíchu mi moc nebylo.

Hned po MCS následovala přednáška z programování v jazyce C/C++ – předmětu, který jsem si zapsal jako volitelný. Mile mě překvapilo, že se od minulého roku leccos změnilo. Vedení předmětu přebral po obávaném panu Vágnerovi mladý doktorand, který nebude využívat progtest a za semestr zadá pouze 4 domácí úkoly. Je to velmi vstřícný člověk, který se chová tak, jako kdyby byl jeden z nás. Už jsem začal se semestrálkou (protože C++ umím už ode dávna… to jsem ale…) a předpokládám, že hodiny tohoto předmětu pro mne budou oddychovou částí týdne. Dokonce je dovoleno používat kompiler od Microsoftu (čehož jsem se hned chopil, že ano) :). No a to bylo z pondělí vše. Pondělí budu mít velmi rád, protože zbytek týdne je vlivem manipulace s cvičeními v poslední chvíli kvůli spásnému výběru cvičících a pevně daných hodinách relativně rozházený.

V úterý začínám hned od půl sedmé výbornou přednáškou z PSŮ (PES – Programování vestavěných systémů), kterou přednáší výborný týpek externista s řekněmě lidovým slovníkem :). Přednáška mě opravdu bavila. Stejně jako cvičení, které se odehrává ve velké laboratoři v karláckých kobkách (mají tam jeřáb a auto, co má v nádrži vodu). Pracujeme s hand-made vývojovými destičkami s čipem od ATMELu (ARM7), které jsou, co do technologie, o trochu dále než picáky ze SAPu, ale především… programujeme je v C. Žádný zapáchající picácký assembler s desetipísmennými intrukcemi.

Dále potom máme mít buď cvičení neo proseminář z Databází, ale ten ještě, nevím proč, nebyl. Dle přednášky, kterou dnes měla p.t. Irena Mlýnková, to ale asi bude pořádná nuda. Databáze zkrátka nejsou můj kopeté.

Ve středu začínám ráno lukostřelbou s panem doktorem Křížem, což je více než příjemné uvolnění do začátku dne, kdy mám sice jen 3(2) hodiny, ale roztažené po celém dni. První je proseminář z céčka, na který jsem se rozhodl nechodit, protože mi asi (alespoň v první polovině semstru) nedokáže nic dát. Večer potom mám cvičení z MCS, které jsem na poslední chvíli vyšmelil za své původní. Když jsem cvičení tento týden absolvoval, byl jsem moc rád, že jsem neprohloupil. Natálka je jednoznačně nejlepší cvičící z výběru, který letos na diskrétku byl. Je příjemná, přesná, vše vysvětluje podrobně a do hloubky, počítá s námi hromady příkladů (které nám ostatní… alespoň ti svědomitější… závidí) a upozorňuje nás na to, co by mohlo a co bude ve zkoušce. Když to vezmu velice zkrátka, z jejího výkladu jsem pochopil to, v čem jsem o přednášce tonul.

Ve čtvrtek jsem odpoledne začal cvičením z DSAček, které se koná na záchodě. Ano, je to v budově A na karláku v uličce, kam se sotva vejde jeden člověk a jsou tam pouze záchody… a jedny špinavé dveře, které skrývají odpornou učebnu. Učí nás to mladý doktorand, ing. Drchal. Zatím jsem si o něm obrázek moc neudělal, protože mě ten den urputně bolela lebka. Potom následovala přednáška z našeho druhého oborového předmětu (MAS – Modelování a simulace), která se konala v ještě odpornější smradlavé komoře na košťata, kde bylo takové vedro, že se mi lebeční kost rozvibrovala na vlastní frekvenci a nemohl jsem se soustředit, takže dojmy z přednášek asi až později. Pouze jsem postřehl, že je pan Hušek velmi vstřícný člověk.

Cvičení z MASu už probíhají v podstatně lepší učebně. Je to úplně nová a rozlehlá laboratoř automatizační techniky (s příjemným podnebím), kde je pro každého studenta jeden počítač s jedním MATLABem :). Ano, v tomto předmětu si budeme hrát s MATLABem a Simulinkem. Opět jsem z výše uvedeného důvodu moc nemohl vstřebávat atmosféru, takže opět nechám první dojem na jindy.

V pátek jsme začínali DBSky s p. t. Mlýnkovou. Taková nuda… databáze, weby, kapitalismus, jděte s tím někam :).

Následovala poslední přednáška, která mě příjemně překvapila. Pan Píše tradičně na začátku hodiny pouštěl video (tentokrát trailer na Borderlands… mimochodem, skvělá hra) a posléze se věnoval organisačním věcem. Celá přednáška nebyla zas až tak vyjímečná, ale pan Píše mě jednou věcí velmi mile překvapil. Jediná povinná literatura k předmětu je angličtině :).

Vidíte… i vypsat to trvá věky.

TeX tutorial: I. Úvod 5

Nedávno mi Smonty psal návrh na článek… jak bych cosi řešil v TeXu. Uvědomil jsem si ale, že články o TeXu, které se zde čas od času objeví, nikdo nečte, protože

  • je nikdo nehledá a
  • vyžadují od čtenáře znalosti, které nemá.

Je to tedy jenom jakási exhibice. Pěkné obrázky a kusy nesrozumitelného kódu. To bych chtěl dnešním článkem napravit, a proto otevírám malý DIY seriál o TeXu. Vezmu to od úplného začátku a budu se, pokud možno, vyhýbat technickým detailům, protože ty už jsou velmi kvalitně zpracovány v češtině i v angličtině. Pokud má tedy čtenář zájem dozvědět se o kouzlech, která se odehrávají v zákulisí, nechť si koupí knížky pana Olšáka (tuto a tuto).

První, co potřebujete, abyste mohli začít úspěšně TeXovat,… je TeX. Ušetří vám mnoho času, když dáte na moji radu a stáhnete si balík TeX live. V současné době je k dispozici verze 2010. Já používám 2009, ale už z principu byste neměli narazit na problém v kompatibilitě. Po úspěšném nainstalování byste měli mít k dispozici i šikovný editor zvaný TeXworks, který pro vás od této chvíle zcela nahrazuje Word, Writer, InDesign a QuarkXPress. Pokaždé, když budete chtít vytvořit dokument, okamžitě sáhnete po TeXworks.

Pokud jste připraveni, můžeme si vyzkoušet napsat první a nejjednodušší program, který se dá v TeXu vytvořit a který zároveň produkuje výstup.

Sbohem, krutý světe.\bye

Pokud vše proběhne v pořádku, měli byste dostat takovýto výstup v menším měřítku:

Seznamte se se znakovou sadou Computer Modern! Zároveň se s ní však rozlučte, protože toto je jediný díl seriálu, ve kterém ho uvidíte. Autor totiž nemá moderní antikvy rád. Špatně se čtou.

Zpět k věci. Na výstupu se nám nelíbí jedna věc, a to je absence českých znaků. Pokud váš výstup obsahuje i české znaky, pravděpodobně se vám nějakým způsobem podařilo TeXworks přesvědčit, aby ke zpracování kódu použil csplain (což je vysoce kvalitní varianta TeXu z dílny pana Olšáka, která používá českými akcenty obohacenou znakovou sadu Computer Modern). Navzdory kvalitě této varianty ji ale používat nebudeme.

Pokud váš program negeneruje výstup a konzole vám sprostě nadává, vyberte z nabídky v horní liště „pdfTeX“.

Nejprve bychom si ale měli vyjasnit názvosloví. Když dnes někdo říká, že umí sázet v TeXu, velmi pravděpodobně tím říká něco jiného. Buď je takový člověk velmi naivní a považuje TeX pouze za zkratku pro LaTeX, a nebo v dobré víře takto zkracuje formát plain. Sázení v tom nejčistším a nejzákladnějším TeXu znamená, že operátor (ten, kdo obsluhuje sázecí stroj) využívá pouze tzv. primitivy, což jsou elementární příkazy TeXu. Protože jsou tyto primitivy často velmi nízkoúrovňové, a tedy je jich nutno použít více, abychom získali požadovaný výsledek, sdružují se do maker.

Abychom dosáhli vyšší úrovně jazyka TeXu, je nutno sestavit takzvaný formát. Formát je velká a všepokrývající sada maker, která redukuje složitost výsledného kódu a také náročnost jeho sestavení. Jako analogii lze uvést vztah mezi strojovým kódem, jazykem symbolických adres a jazykem c. Narozdíl od této analogie však mezi formáty TeXu neexistuje překlad, nemění se gramatika ani syntaxe (leč už jsem o něčem podobném slyšel).

Základním formátem, který je postaven nad primitivy TeXu (a je do TeXu samotného integrován) je formát plain. Jeho autorem je Donald Knuth a je to jediný formát, se kterým budeme pracovat. Od tohoto okamžiku, vždy, když se zmíním o TeXu, budu mít na mysli formát plain.

V TeXu tedy platí, že

  • každý příkaz, který není primitiv, je makro a
  • každé makro lze konečným počtem kroků expandovat na primitivy.

Chcete-li zjistit, jestli je některý z vašich oblíbených příkazů (popř. těch, které se někdy v budoucnu stanou vašimi oblíbenými) primitiv nebo makro, spusťte konzoli (ať už je to command.com, cmd.exe, powershell… nebo bash (víte, že TeX původně existoval ve verzi pouze pro MS-DOS?)) a spusťte tex. Často stačí pouze napsat „tex“ a odeslat.

Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\Michael>tex This is TeX, Version 3.1415926 (Web2C 2009) **\ *\show\vskip > \vskip=\vskip. <*> \show\vskip ? *\show\line > \line=macro: ->\hbox to\hsize . <*> \show\line ? *

Pravděpodobně jste již odhadli, co dělá příkaz \show. Ano, epxanduje makra a na konzoli ukazuje, jak expanze vypadá. V předchozím příkladu vidíte, že \vskip už nijak neexpanduje, zatímco \line expanduje na \hbox to\hsize. \vskip je tedy primitiv a \line je makro.

Možná se teď zlobíte, že jsem vás hned po slibu, že se nebudu zaobírat technickými detaily, zaplavil spoustou technických detailů. Mně se ale tato vědomost již nespočetně mnohokrát hodila, shledávám ji velmi praktickou, a proto jsem vás s ní seznámil.

Nyní ale skutečně začneme s něčím užitečným. Z nabídky v horní liště vyberte XeTeX. XeTeX je variantou TeXu, se kterou budeme odteď pracovat. Tato varianta umožňuje zpracovávání vstupu ve formátu UTF-8 a využití znakových sad, které UTF-8 podporují. Více o tom, v čem se XeTeX odlišuje od TeXu lze nalézt v jednom z předchozích článků.

Zkuste si tento mírně upravený program Hello World:

\uselanguage{czech} \font\a = "Century Schoolbook:mapping=tex-text" at 10dd \a Sbohem, krutý světe.\bye

Váš výstup by nyní měl vypadat takto (ve zmenšeném měřítku samozřejmě):

\uselanguage je šikovné makro, které nahrazuje \chyph csplainu. Toto makro aktivuje české schéma dělení slov. Jak to dělá, to vám zatím prozrazovat nechci. Však by se vám to ani nelíbilo (zkuste si v konzoli \show\uselanguage ;-) ). Pokud se ptáte, odkud se to makro vzalo, ptáte se správně (a máte ode mě pochvalu). Není totiž ve formátu plain a takových maker, které nejsou ve formátu plain a přesto existují, je víc. Implicitně je totiž připojuje samotný XeTeX… nevím odkud, domnívám se jak, ale to teď není podstatné.

\font je primitiv TeXu. Zde však lze říci, že je to primitiv XeTeXu, protože použitý mechanismus se od svého vzoru velmi liší. Fontům se budeme věnovat v následujícím dílu. Pro dnešek vám stačí, že řádka začínající \font deklaruje font Century Schoolbook (který bere z banky operačního systému) o velikosti 10 bodů jako \a. Od té řádky kdykoli TeX narazí na \a změní aktuální font na Century Schoolbook o velikosti 10 bodů.

O \bye si zatím (a asi i s konečnou platností) řekneme, že ukončuje činnost TeXu.

Potřeboval bych vědět, jesli vám tento článek něco přinesl a jestli má cenu pokračovat psaním dalších. Tento článek beru jako pilotní díl.