Balík souborů (texinput) na generování formátu csplain ****************************************************** * Petr Olšák Verze: září 1996 * říjen 1998 Formát csplain je skoro shodný s klasickým formátem plain. Rozdíl je jedině v tom, že místo CM fontů se pracuje s CS-fonty, což umožňuje zavést v tomto kódování fontů vzory dělení pro český a slovenský jazyk. Pomocí formátu csplain je možno nahradit originální formát plain, tj. pro anglické dokumenty se oba formáty chovají (skoro) stejně. Nepatrné odlišnosti, vyplývající z použití CS-fontů místo CM fontů, viz soubor cs-fonts.doc. Potřebné soubory **************** Pro vygenerování formátu csplain je potřeba: 1. v /tfm mít metriky CS-fontů (např. csr10.tfm), 2. v /texinput mít následující soubory: csplain.ini ... hlavní soubor pro vygenerování formátu plain.tex ... Knuthův plain csfonts.tex ... makro pro zavedení CS-fontů il2code.tex ... makro pro práci s kódem CS-fontů (ISO-8859-2) hyphen.lan ... řídicí soubor k zavední vzorů dělení různých jazyků hyphen.tex ... základní vzory dělení pro US (součástí plainu) hyphen.ex ... slovník výjimek pro US czhyphen.tex ... vzory dělení pro češtinu czhyphen.ex ... slovník výjimek pro češtinu skhyphen.tex ... vzory dělení pro slovenštinu skhyphen.ex ... slovník výjimek pro slovenštinu plaina4.tex ... makro upravující výhozí rozměr zrcadla pro A4 3. pokud předpokládáte vstupní soubory v jiném kódování, než ISO-8859-2, potřebujete navíc a) při použití emTeXu -- příslušnou *.tcp tabulku b) při využití encTeXu -- příslušný soubor enc-?.tex Generování formátu ****************** Generování formátu csplain je závislé na implementaci TeXu. V UNIX like systémech (odvozených z implementace web2c) použijte příkaz: initex csplain.ini nebo v novější verzi web2c: tex -ini csplain.ini Vstupní kódování bude rovno vnitřnímu kódování ISO-8859-2. Předpokláte-li kódování vstupních textů v jiném kódování, než ISO-8859-2 a navíc máte implementaci binárního programu TeX obsahující encTeX (to poznáte podle druhého řádku v soborech *.log), pak si vyberte jedno z písmen: w=CP1250, k=Kamenicti, p=PC Latin2 (CP852), u=UTF8 a inicializujte formát takto: tex -ini \let\enc=? \input csplain.ini kde ? je jedno z písmen w, k, p nebo u charakterizující vstupní kódování. Na příkazovém řádku v UNIXu musíte každý znak "\" psát dvakrát, například: tex -ini \\let\\enc=k \\input csplain.ini Potřebujete-li implementovat vstupní kódování, které zde není uvedeno, zvolte si pro ně nějaké další písmeno a editujte příslušný soubor enc-?.tex. V DOSu (emTeXu) můžete volit vstupní kódování pomocí *TCP tabulek. Např. pro kódování Kamenických napíšete: tex[386] /i /8 -cKAMENIC.TCP csplain.ini Můžete si ověřit správnost instalace csplainu testem cstrip. Viz soubor cstripm.dvi nebo cstripm.ps Použití češtiny a slovenštiny ***************************** csplain je inicializován tak, aby se implicitně choval jako plain. To znamená, že je nastaveno anglické dělení slov a sekvence \v, \' expandují na primitiv \accent. Rovněž je aktivní \nonfrenchspacing. Rozdíl je jen ve velikosti implicitního rozměru zrcadla sazby, které je v csplainu nastaveno pro palcové okraje při formátu A4, zatímco v plainu je nastaveno pro palcové okraje formátu Letter. Pro sazbu v českém nebo slovenském jazyce NEMUSÍTE volat styl czech.sty. Stačí použít na začátku dokumentu tyto sekvence: \chyph % nebo \shyph : inicializuje české/slovenské dělení slov % a \frenschpacing \csaccents % způsobí jiné chování sekvencí \' \v a \r, které od této % chvíle expandují na znaky podle CSfontů % návrat k původnímu nastavení: \ehyph % americké dělení a \nonfrenchspacing \cmaccents % \, \v expandují na primitiv \accent Od verze csplainu je sekvence pro uvozovky \uv{cosi} zanesena do formátu. Verze csplainu. *************** csplain zavádí do \everyjob hlášení o datu posledního zásahu do zdrojových textů csplainu (viz soubor csplain.ini). Pokud tam takové hlášení není, máte verzi csplainu z r. 1994 nebo starší. Jednotlivé verze označujeme datem změny zdrojového textu a nikoli číslem. Odlišnosti novějších verzí než jsou uvedeny přímo v souboru csplain.ini. Odlišnosti verze z roku 1994 od jsou uvedeny níže. V čem se liší csplain z csTeXu94 od verze ***************************************************** 1. plain.tex. Místo verze 3.0 je použita verze 3.14159. 2. csfonts.tex. Navíc přidána vlastnost \font\preloaded = nezaváděj žádný font. Důsledek: Po načtení formátu plain.tex je zavedeno pouhých 16 základních fontů proti dřívějším 50. Důvod: Při dnešních rychlostech počítačů už asi neoceníme, že je nějaký font dopředu zaveden ve formátu. Navíc máme více místa pro nové fonty. Odchylka: Kromě nepatrného zdržení při zavádění (dříve \preloaded) fontů není žádný jiný rozdíl. 3. il2code.tex (dříve extcode.tex). Kromě původních definic \catcode, \lccode a \uccode obsauje další makra závislá na kódování. a) makro \csaccents předefinuje makra \v, \', ... tak, že expandují přímo do znaků podle CS-fontů. Výhody: * Po \csaccents lze načíst vzory dělení ve tvaru nezávislém na kódování. * Po \csaccents budou správně rozdělena i slova zapsaná t\'imto zp\r usobem. Také na ně bude správně fungovat primitiv \uppercase (výjimku tvoří případ, kdy je \'i psáno "postaru", tj. jako \'\i). * \v d a \v t vede na ď a ť (s apostrofy, nikoly s háčky). Výchozí chování formátu csplain je z důvodu nutné kompatibility se standardním plainem nastaveno na původní význam maker \v, \'. Příkazem \csaccents se inicializuje nový význam a příkazem \cmaccents se vše vrací do původního stavu. Inicializace je navíc lokální vrámci skupiny. Pokud bude někdo často přepínat \csaccents, \cmaccents, pak může potlačit hlášky na terminálu a do .logu předefinováním příkazu \csaccentsmessage, \cmaccentsmessage. b) Jsou doplněny definice sekvencí, které jsou závislé na kódování CS-fontů. Tj. uvozovky \clqq, \crqq, \flqq, \frqq, \ogonek, \promile. Dále je definován příkaz \extrahyphens, který inicializuje \hyphenchar do alternativního znaku v CS-fontu pro základní desetibodové textové fonty. Tím např. "je-li" nebude rozděleno. Bohužel vzniká zobrazovací zádrhel: při hláškách "Overfull" TeX zobrazuje na terminál místo znaku - znak ^^9c. V emTeXu stačí mírně upravit tabulku tcp a směrovat do ^^9c nějaký náhradní a podobný semigrafický symbol (viz přiložená tabulka kamenic.tcp). 4. hyphen.lan. * Na začátku má \csaccents, aby zavedl vzory dělení napsané pomocí sekvencí a na konci vrací \cmaccents. * Místo hyphen.cz a hyphen.czx zavádí czhyphen.tex a czhyphen.ex (z důvodu kompatibility s makrem pro češtinu v LaTeXu 2e). Podobně pro další jazyky. * Místo původních \righthyphenmin=2 je pro \chyph a \shyph zavedeno \righthyphenmin=3 (což je podle normy). Sází-li uživatel do úzkých sloupců, může si to změnit například takto: \chyph \righthyphenmin=2 * Při volání czhyphen.tex, skhyphen.tex je \let\global=\relax, aby nedošlo ke změně \everyjob\message. Skutečnost, jaké dělení slov je zavedeno, lze zjistit z verze csplainu , tj. není potřeba jmenovat nějaké konkrétní lidi v \everyjobu. 5. czhyphen.tex je kompletně jiné (zřejmě lepší), než v původním csTeXu. Je použito dělení, které (po mírném pomršení) dal k dispozici Pavel Ševeček TeXovské veřejnosti pro použití v nekomerčním světě zdarma. 6. czhyphen.ex je zmenšeno o věci, které už czhyphen.tex umí správně a zbytek je přepsán do sekvencí nezávislých na kódování. 7. skhyphen.tex je pravděpodobně stejné, jako bylo (nezkoumal jsem to). Stejně tak zůstává skhyphen.ex. Je použito dělení ručně vyrobené Jankou Chlebíkovou. 8. csplain.ini. * Změněno pořadí volání extcode.tex * Změněn text \everyjob\message. 9. czech.sty * Na začátku zařazena větvička \if Formát=LaTeX2e \input lczech.sty \endinput \fi * Zařazen nově test na \ifx\chyph\undefined \message{Warning...} * Zařazen test na použití CS-fontů podle prvních dvou písmen v názvu fontu \tenrm. Pokud CS-fonty jsou zavedeny a přitom není definován \clqq (případ starý csformát, nový czech.sty), pak se definují některé sekvence analogicky, jako v bodě 3b). * Do příkazů \czechTeX, resp. \originalTeX je vloženo \csaccents, resp. \cmaccents, tj. styl czech aktivuje \csaccents. * Vše, co bylo řečeno pro czech.sty platí analogicky pro slovak.sty