DŮLEŽITÉ UPOZORNĚNÍ!
Policie České republiky se zajímá o IP-adresy osob, které komentují tento blog. Ve vlastním zájmu zde proto nic nepopírejte, nezpochybňujte, neschvalujte, neospravedlňujte, nikoho a nic nehanobte, nepodporujte a nepropagujte, a pokud se přesto rozhodnete komentář přidat, pak se, prosím, ničemu nedivte.
Aktuálně: Výnos sbírky pro Vlastimila Pechance dosáhl ke dni 6. 10. 2016 částky 59 416 Kč.
Výtěžek prvního benefičního koncertu, který se uskutečnil dne 12. 3. 2016, činil 13 500 Kč.

úterý 6. ledna 2015

Dvé drobností v TeXu

Minulé dva týdny, nemaje nic lepšího na práci, věnoval jsem se snaze zvládnout TeX (o bolestném přechodu na kterýž jsme psali zde) na vyšší úrovni, resp. doučit se v něm vše, co jsem dosud neovládal a ovládnout toužil. Po roce a čtvrt užívání jsem se stal z uživatele spokojeného uživatelem nadšeným, přesvědčeným o tom, že v TeXu se dá pracovat daleko lépe než v jakémkoli textovém procesoru (promiň, LibreOffice Writere!), ale co víc, že mnohé věci, které v něm standardně provádím, by nezvládly ani sázecí systémy, včetně těch nejdokonalejších. Dokument v TeXu není pouhým textem doplněným formátovacím markupem, ale je to plnohodnotný počítačový program.

Dva příklady (k nimž přiberme pro demonstraci tento, po stránce obsahu čtenářům již arci dobře známý dokument):

1. Lidem aspoň minimálně orientovaným v programování nemusím vysvětlovat, že mnohé z toho, co se jeví být obsahem podání, je generováno z databasí nebo z maker uvedených na začátku dokumentu: název a adresa soudu a účastníků, judikáty, včetně citací v originále i v překladu, latinské frase, ustálené obraty typu ve znění pozdějších předpisů atd.

Automatisovaně se generuje i tabulka příloh na konci dokumentu. Stačí, když do příslušného místa v textu napíšu příkladmo \evide{nesmyslný dopis úředníka \zd06012015, \čj MS-6/Blb/2015}, a TeX vygeneruje jak tabulku důkazů (kam doplní – v příloze), tak vloží dokument do závěrečného číslovaného seznamu příloh.

Ale co se situací, když je v tabulce kursiva, např. originál obrazu Alfonse Muchy Princesna Hyacintha, bez rámu? Kdysi ve Writeru to bylo neřešitelné, v TeXu jsem si naprogramoval, že značka kursivy v takové situaci přepne na normální písmo, jak to má podle typografických zásad být. A celé to je naprogramováno jako stavový automat, takže mohu kursivu zapínat a vypínat, v kolika chci úrovních, a mohu kombinovat různé stupně vyznačování: třeba aby první \bf zapnul polotučné písmo, druhý ho změnil na tučné: obsahuje-li judikát kursivou vyznačenou citaci, mohu ji bez problémů použít i v kursivou provedené části, bude z ní obyčejná antikva, a pokud chci zdůraznit část judikátu polotučně, vytvořím si na to zvláštní značku, kterou si podle momentálně potřeby buď zapnu nebo vypnu.

2. Jiným problémem je správné umisťování odkazů na poznámky pod čarou. Pokud po odkazu následuje interpunkční znaménko (přesněji čárka, tečka, dvojtečka nebo středník), mělo by se podle typografického usu a bontonu číslu poznámky předsazovat. To není problém, pokud se značka zapisuje ručně, ale většina poznámek pod čarou v mých dokumentech je generována jako součást odkazu na judikát, jedinou dvojicí maker. Např. napíšu rozhodnutí \judAF\judrl, a TeX vyhledá judikát a vypíše mi rozhodnutí ze dne 24. dubna 2013, sp. zn. 30 Cdo 3279/2012, ECLI:CZ:NS:2013:30.CDO.3279.2012.1 (včetně toho, že dvojtečky a tečky v kodu ECLI budou umožnovat dělení na konci řádku, s tím, že se – na rozdíl od běžného spojovníku – na novém řádku zopakují) a připojí odkaz na poznámku pod čarou s příslušným hyperlinkem.

A teď to podstatné: pokud za tímto textem bude následovat jeden z oněch čtyř znaků, TeX ho automaticky číslu předřadí a jde-li o čárku nebo tečku, ještě navíc posune odkaz na poznámku vlevo, takže bude fakticky nad ní.

Ač jsem původně pochyboval, že by něco takového šlo, zjistil jsem, že pro TeXovské makro není ani takové zadání neřešitelnou úlohou:


Výsledkem je správně vysázený odkaz: a ani to nebolelo, jen to chtělo chvíli přemýšlení. A teď, moji milí, sem s textovými procesory nebo sázecími programy, které to také umějí!

13 komentářů:

  1. No výborně! A teď to celé vezměte a vysvětlete sekretářce:)
    BTW, vše nejlepší v Novém roce

    cnemo

    OdpovědětVymazat
    Odpovědi
    1. Sekretářka je díky TeXu už dávno na úřadu práce.

      Všechno nejlepší i vám!

      Vymazat
  2. Mate muj respekt, jste jeden z mala lidi, ktere znam, kdo pise v cistem TeXu (jestli to tedy chapu spravne a pouzivate cisty TeX). Ty makra atd. mate udelana solidne, dokonce i vykopirovani textu z toho pdf docela dobre funguje, cehoz obcas neni tak snadne docilit. Sam obycejne pouzivam LaTeX, protoze TeX je na me prilis "hardcore". Ovsem i tak s nim obcas zapasim, treba nedavno problem s cestinou a \cline. To je proste dan za obvykle bezproblemove pouzivani, s kterou se musim smirit.

    OdpovědětVymazat
    Odpovědi
    1. Mate muj respekt, jste jeden z mala lidi, ktere znam, kdo pise v cistem TeXu (jestli to tedy chapu spravne a pouzivate cisty TeX).

      Děkuji. Používám plain, což je zřejmé i z ukázky: \rlap je plainovské makro. V úplně čistém TeXu se píšou jen formáty, není k tomu jinak důvod, protože plain vás v ničem neomezuje (což je rozdíl oproti LaTeXu) a \rlap nebo \vglue by si člověk stejně dopsal v podstatě identickým způsobem.

      Ty makra atd. mate udelana solidne, dokonce i vykopirovani textu z toho pdf docela dobre funguje, cehoz obcas neni tak snadne docilit.

      Tak to má zrovna XeTeXový driver nedotažené, protože specifikace PDF podporuje již několik versí sémantiku, mj. kvůli copy-and-paste, a není využívána. Ale i tak je to podstatně lepší než u nejmenovaných konkurenčních produktů, včetně komerčních, které vám zkopírují i soft hypheny.

      Vymazat
  3. Jee tady se teď píše Španělsky nebo Latinsky či co?! Né Vážně respektuji že se v compiuter world vynate.Pro mě je to Španěská vesnice. Jinak pane

    OdpovědětVymazat
  4. "jak to má podle typografických zásad být" a kde jsou napsány ty zasády?

    OdpovědětVymazat
    Odpovědi
    1. V knihách o typografii. Vyšla jich i česky řada.

      Vymazat
    2. Ještě si prosím opravte onu "diakritiku" ve formě teček, čárek, dvojteček a středníků na interpunkci, abychom ty knihy nemuseli začít pálit nebo zakazovat, nebo nedejbože znalecky zkoumat.

      Vymazat
  5. A programování v Latexu pana Pecinu natolik vytížilo, že již ničehož jiného nestačí vytvářet ��

    Petr V

    OdpovědětVymazat
    Odpovědi
    1. Je čas rodit se a čas umírat, čas sázet a čas sadbu vytrhat, čas zabíjet a čas uzdravovat, čas bořit a čas budovat, čas plakat a čas se smát, čas rmoutit se a čas tancovat, čas házet kamení a čas kamení sbírat, čas objímat a čas objímání zanechat, čas hledat a čas pozbývat, čas chovat a čas odmítat, čas trhat a čas sešívat, čas mlčet a čas povídat, čas milovat a čas nenávidět, čas boje a čas pokoje.

      K čemuž dodávám: čas psát na blog a čas pracovat.

      Vymazat
    2. To jste někde zkopíroval, že jo :-) ?

      Petr V

      Vymazat
    3. no jo, přiznávám... blbej comment :-( (tak asi smazat pls)...
      Petr V

      Vymazat

Kursiva: <i>text</i>
Tučně (když už to musí být…): <b>text</b>
Odkaz: <a href = "http://adresa">název odkazu</a>, tedy <a href = ""></a>