LaTeX & TeX, speciální sazba

Pokud Vám činily potíže příklady z předchozích cvičení, zde najdete komplet řešení. :o)

V dnešním cvičení si ukážeme dvě věci: přípravu kompletního dokumentu včetně stylu a progamování maker.

K samotné přípravě stylu bude na cvičení obsáhlý výklad, rovněž samotné zdrojové texty jsou podrobně komentované. Konkrétně si řekneme, jak ke zdrojovému textu dokuentu připravit balíček popisující výsledný vzhled, aby vznikl takový dokument. (Není příliš hezký, protože záměr vytvořit hezký dokument jde proti záměru ukázat v něm co nejvíce fines.)

Ti, co mají o TeX hlubší zájem, se pak mohou pustit do následující kapitoly. Ostatní mohou experimentovat s výše uvedeným balíčkem a předělat ho tak, aby vznikl skutečně hezký dokument.

TeX, makra

Tentokrát nejde ani tak o napodobení dokumentu, jako spíše o definici maker. Finální sazba jednotlivých zadání by měla vypadat asi takto. Kód maker je k nahlédnutí zde, ale jako obvykle platí, pokuste se na všechno příjít sami.

  1. Makra, která budeme definovat, poběží v LaTeXu stejně dobře jako v PlainTeXu. Abychom si vyzkoušeli něco nového, budeme ale tentokrát pracovat v Plain TeXu. Nastavte (pracujete-li ve WinShellu) v Program Calls volání TeXu na csplain.exe (ostatní parametry zůstávají stejné jako u cslatex.exe) a přeložte si jednoduchý dokument:

    Hello world!
    \bye
    
  2. Změňte parametry TeXu \leftskip, \parindent a \parskip tak, abychom mohli sázet výčty způsobem

    \indent\hbox to 2em{---\hfil} První položka - nějaký dlouhý odstavec.
    \indent\hbox to 2em{---\hfil} Druhá položka - nějaký jiný dlouhý odstavec.
    \indent\hbox to 2em{---\hfil} Třetí položka - nějaký ještě jiný dlouhý odstavec.
    

    Pozn: příkaz \indent je nutný. Kdybychom ho nezadali, TeX by zařadil hbox do hlavního vertikálního seznamu strany, do odstavcového režimu by se přepnul až po přečtení prvního písmene odstavce. Příkaz \indent přepne do odstavcového režimu okamžitě; zároveň standardně vloží na začátek odstavce zařážku definovanou registrem \parindent. Pokud odstavcovou zarážku vkládat nechceme, mohli bychom použít alternativní příkaz \noindent.

  3. Využijte přiřazení \everypar={...} a předchozí příklad modifikujte tak, aby aby se pomlčka na začátku řádku psala automaticky.

  4. Definujte nový čítač (\newcount\citac) a modifikujte předchozí příklad tak, aby se místo pomlčky vypisovalo číslo (hodnota čítače se vypíše pomocí \the\citac, jeho hodnota se zvýší pomocí \advance\citac by 1).

  5. Definujte makra \beginvycet a \endvycet tak, abychom mohli výčet pohodlně zapsat jako
    \beginvycet
    První položka - nějaký dlouhý odstavec.
    
    Druhá položka - nějaký jiný dlouhý odstavec.
    
    Třetí položka - nějaký ještě jiný dlouhý odstavec.
    \endvycet
    
  6. Vysaďte slovo Text orámované linkou tloušťky 1 pt. Využijte k tomu příkazy \hbox pro sestavení horizontálního boxu, \vbox pro sestavení vertikálního boxu, \hrule height ... depth ... width ... pro (vodorovnou) linku v prostředí vbox, \vrule height ... depth ... width ... pro (svislou) linku v prostředí hbox.

  7. Využijte předchozí příklad k definování makra oramuj. Pak vysázíme orámovaný text jednoduše jako \oramuj{Text}

  8. Modifikujte makro z předchozího příkladu tak, aby mezi textem a orámováním byla mezírka 3 pt (ve vodorovném i svislém směru).

  9. Vyzkoušejte vícečetné orámování. Funguje vám konstrukce \oramuj{\oramuj{\oramuj{Text}}}?

  10. Pomocné zadání: pomocí cyklu \loop ... \repeat vypište čísla od 1 do 99.
    Opravdové zadání: zkuste vícečetné zarámování udělat cyklem. Využijte k tomu registr typu box. Pro připomenutí, takový registr se vytvoří pomocí \newbox\mujbox, něco do něj přiřadíme pomocí \setbox\mujbox=\hbox{...} nebo \setbox\mujbox=\vbox{...}, box umístíme na stranu pomocí \box\mujbox nebo \copy\mujbox (druhá možnost umístí box na stranu, aniž by zrušila obsah registru).

  11. Zadání pro labužníky: vytvořte kód, který vykreslí šachovnici o n řádcích a m sloupcích.