abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    17.4. 17:55 | IT novinky

    Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.

    Ladislav Hagara | Komentářů: 3
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (20%)
    Celkem 562 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    TeX – 13 (matematická sazba)

    25. 3. 2014 | Petr Olšák | Různé | 5144×

    Matematici po staletí využívají plochu papíru k zaznamenání svých abstraktních myšlenek daleko kreativněji, než poskytuje běžná textová sazba: používají větší množství abeced, velikostí, značné množství speciálních značek. Vzájemné umístění znaků na papíře není vždy jen na jediném řádku. Sazárny účtovaly matematickou sazbu podle centimetru čtverečního (na rozdíl od počtu znaků v textu) a tato sazba byla drahá. Na památku toho ji ve zdrojovém textu TeXu vyznačujeme pomocí dolarů.

    Knuth si dal velmi záležet na tom, aby TeX zvládal matematickou sazbu co nejlépe. Ukážeme si, s čím se potýkal a jak to vyřešil.

    Obsah

    Zdrojový text

    link

    K zápisu matematického vzorečku v TeXu stačí znát názvy použitých značek a výraz zhruba zapsat tak, jak bychom ho anglicky přečetli. Závorky {} nebudou v sazbě vidět a vyznačují úseky, které jsou samy „lokálním“ vzorečkem. Pomocí znaků ^_ se vyznačují exponenty a indexy. Celý vzorec je třeba obklopit do dolarů : $...$ nebo dvojdolarů $$...$$. V prvém případě budeme mít vzoreček uvnitř odstavce, ve druhém na samostatném řádku. Například

    $$ \int_0^\infty e^{-x^2} {\rm d}x = {\sqrt\pi \over 2} $$
    

    dá tento výsledek:

    math1.jpg

    Matematici si na TeXový zápis poměrně rychle zvykli. Často píšou svoje myšlenky přímo do počítače v TeXu bez potřeby vidět, jak vzoreček dopadne, a vyměňují si v této notaci své názory například v emailech.

    Za pozornost v předchozí ukázce stojí zápis zlomku ve tvaru {čitatel \over jmenovatel}, ve kterém závorky {} vyznačují hranici zlomku a \over odpovídá myšlence „napsat vzorec tak, jak bychom ho anglicky přečetli“. Často se místo tohoto klasického TeXového zápisu zlomku setkáváme spíš s užitím makra \frac{čitatel}{jmenovatel}, což působí více programátorsky a strukturovaněji. Makro \frac je definováno jednoduše:

    \def\frac#1#2{{#1\over#2}}
    

    Matematická kurzíva

    link

    Nejčastěji se ve vzorci vyskytuje proměnná nebo písmenem označený libovolný matematický objekt (množina, funkce, prvek, vrchol). Takové písmeno musí být v kurzívě, zatímco ostatní znaky (operátory, relace, číslice, závorky) musejí být v antikvě. O to se stará TeX sám, takže stačí napsat $$a+b=c$$ a máme proměnné v kurzívě a znaky plus, rovná se v antikvě. Tedy:

    math2.jpg

    Někdy se ve vzorečku setkáme místo kurzívy s antikvou i pro písmena. Například při sazbě zkratek funkcí, operací nebo při psaní fyzikálních jednotek.

    $$\sin^2 x + \cos^2 x = 1,\quad   a = b \pmod c,\quad   E = mc^2\ [{\rm J}]$$
    

    math3.jpg

    Pro kurzívu v matematických vzorcích Knuth vytvořil v písmu Computer Modern speciální font (1) cmmi, který se liší od textové kurzívy (2) cmti tím, že je mírně širší a v matematických vzorcích čitelnější. Neškolené oko ale moc nepozná rozdíl.

    math4.jpg

    Ačkoli je ta kurzíva odlišná, je vytvořena ze stejných zdrojů jen vhodně odlišnou parametrizací v Metafontu. Je-li použita jiná rodina písma než Computer Modern, není obvykle speciální kurzíva přístupná, takže je třeba i v matematických vzorcích použít běžnou textovou kurzívu tohoto písma.

    Deklarace písma pro matematiku se provádí v souboru maker a je pro laika poměrně komplikovaná, protože nabízí poměrně velké možnosti. PlainTeX implicitně zavádí písmo z rodiny Computer Modern. CSplain nabízí soubory maker ams-tex.tex pro rozšířenou sadu Computer Modern a tx-math.tex pro zavedení TX fontů. LaTeX má na zavedení matematických fontů desítky různých makrobalíčků.

    Operátory a další znaky

    link

    Jen málo matematických operátorů či dalších znaků najdeme přímo na klávesnici (plus, mínus, rovná se). Vesměs všechny další se zapisují pomocí vyhrazených názvů.

    \pm, \times, \circ, \cap, \cup, \oplus, \leq, \geq, \sim, \in, \subset, \cdots, \ldots
    

    math5.jpg

    Toto je jen příklad. Ve skutečnosti jsou k dispozici stovky znaků, bez nichž se složitější sazba neobejde. V uživatelských příručkách k TeXu najdeme tabulky těchto znaků.

    Všechny matematické znaky v TeXu jsou deklarovány na úrovni makrojazyka pomocí „mathkódů“. Ty vyznačují, ze kterého fontu a slotu je třeba znak vyzvednout, a dále, jakého typu znak je: obyčejný objekt, binární operátor, relace, otevírací/zavírací závorka atd. Podle typu znaku TeX pozná, jaké má vložit mezi znaky mezery. Například ve vzorci $1+1=2$ TeX pozná, že čísla jsou obyčejné objekty, plus je binární operátor a rovnítko je relace. Na základě toho vloží kolem binárního operátoru mírné mezery a kolem relace mírně větší mezery (1). Uživatel toto mezerování neřeší, výsledek dopadne stejně, když napíše $1+1=2$$1 + 1 = 2$, protože vstupní mezery mezi dolary TeX ignoruje. Na druhé straně, bez použití dolarů (v textovém módu) dopadne ten vzoreček v obou případech mizerně: buď tam nemáte žádné mezery (2), nebo tam jsou velké mezery (3).

    math6.jpg

    Některé operátory (suma, integrál) se nazývají „velké operátory“. Ve vzorci uvnitř odstavce jsou menší a na samostatném řádku větší. Indexy a exponenty v tomto případě fungují jako popisky k operátorům, které se v sazbě umisťují typicky nad a pod operátor:

    $$ \sum_{k=0}^\infty {1\over 2^k} = 2 $$
    

    math7.jpg

    Povšimněte si, že je rozdíl, když napíšete znak mínus mezi dolary: $-1$ a bez dolarů: -1. V prvém případě (1) dostanete správně mínus, ve druhém (2) nesprávně spojovník, který svědčí o tom, že to vysázel nějaký diletant, který nerozpozná spojovník od mínusu.

    math8.jpg

    Matematické abecedy

    link

    Při označování všeho možného matematikům záhy dojdou písmena latinské abecedy. V takovém případě použijí alternativní abecedy, mezi kterými je nejčastěji využita abeceda řecká (1) $\alpha\beta\gamma$, pak kaligrafické znaky (2) $\cal ABC$ nebo (3) $\script ABC$, dále fraktura (4) $\frak ABC$ a zdvojené znaky (5) $\bbchar ABC$.

    math9.jpg

    Při návrhu matematického fontu tedy nestačí připravit stovky až tisíce různých značek, ale též tyto další matematické abecedy. Vše musí mít pro zvolenou rodinu textového písma jednotný ráz. Dlouhou dobu neexistovala jiná úplná výbava písma pro matematiku než Computer Modern, protože udělat pořádný matematický font není žádná legrace. TeX sice řeší nastavení fontu pro textovou sazbu a pro matematiku zcela nezávisle, ale vyměnit jen sazbu textů za jiné písmo a ponechat matematiku v Computer Modern skoro jistě povede k paskvilu. Je to tím, že většina písem je odvozena z dynamické nebo přechodové antikvy, zatímco Computer Modern je statická antikva, která se k dynamické vůbec nehodí.

    Později vznikly varianty matematického písma Euler, LucidaTimes. Dnes je k dispozici několik dalších matematických rodin písma: TXfonts (pro Times), TeXgyre math fonts (Pagella, Termes, Bonum), XITS (pro Times), Asana, Cambria math, Minion.

    Různé velikosti

    link

    Pro indexy resp. exponenty se používá sazba typicky zmenšená na 70 % a pro indexy indexů resp. exponenty exponentů (a další možné kombinace) je vhodné písmo zmenšit na 50 % základní velikosti. Další zmenšování už se neužívá, tj. indexy indexů indexů už mají stejnou velikost jako indexy indexů.

    Pomocí maker TeXu se pro indexy a indexy indexů (resp exponenty) zavádějí fonty zcela zvlášť a mohou mít velikost nastavenu libovolně. Navíc to mohou být fonty, které nezmenšují svou velikost jen tupě geometricky, ale jsou pro menší sazbu speciálně uzpůsobeny (zejména s ohledem na lepší čitelnost v malých velikostech). Například pro základní sazbu matematické kurzívy v 10pt je v plainTeXu zaveden font (1) cmmi10, pro indexy (2) cmmi7 a pro indexy indexů (3) cmmi5. Jsou to různé fonty, což poznáme, když je všechny geometricky zvětšíme na společnou velikost (4). V Metafontu jsou všechny tyto fonty vykresleny společným programem jen s odlišnou parametrizací.

    math10.jpg

    Podobně Knuth připravil rozdílně vykreslené fonty pro různé velikosti vesměs všech řezů písma Computer Modern (antikva, textová kurzíva, tučný, bezserifový atd.). Je to inspirováno praxí z původní ruční sazby. Dnes se k této myšlence některé OpenType fonty znovu vracejí a zavádějí feature „Optical size“. Jen to musejí písmomalíři pro každou velikost nakreslit zvlášť, zatímco Knuth vytvořil celkem zhruba 90 fontů rodiny Computer Modern vesměs ze společných parametrizovaných popisů znaků v Metafontu.

    Osa vzorce a další metrické údaje

    link

    Zatímco v textové sazbě je opticky nejdůležitější účaří a střední dotažnice, v matematické sazbě je významná jiná vodorovná linka, která prochází středem znaků plus, mínus, je osou většiny operátorů a přesně půlí všechny závorky ve všech velikostech. Tato matematická osa je mírně výše než účaří a celý vzorec ji musí respektovat. Například v tomto vzorečku

    $$ {\bi A} = {1\over2} \pmatrix {a&b&c\cr d&e&f} \cdot \pmatrix {x\cr y\cr z} $$
    

    math11.jpg

    si spíše všimneme matematické osy (procházející rovnítkem, zlomkovou čarou a tečkou) než účaří. V matematickém fontu musí tedy být uložen metrický údaj o vzdálenosti matematické osy od účaří.

    Kromě toho matematický font obsahuje čtrnáct dalších metrických údajů: posun exponentu nahoru ve volném (1) nebo stísněném režimu (2), posun indexu dolů, tloušťka zlomkové čáry, mezerování kolem zlomkové čáry, kolem velkých operátorů atd. V TeXooku v dodatku G je pak přesně popsáno, jak TeX s těmito metrickými údaji pracuje, aby vytvořil matematický vzorec. Uživatel to nepotřebuje vědět, mu stačí, že vzorec vypadá dobře.

    math12.jpg

    Pečlivý uživatel může vzorec dále doladit vkládáním různých dodatečných mezírek (kladných nebo záporných), ale není to obvyklé.

    Zvětšovací objekty

    link

    Vnořené závorky se v matematice rozlišují podle velikostí:

    $$ \alpha \bigl(f(x)+f(y)\bigr) = f(\alpha x) + f(\alpha y) $$
    

    math13.jpg

    Závorky musejí také vždy na výšku obklopit výraz, který uzavírají. Ve zdrojovém textu je nutné obklopovaný výraz vyznačit znaky \left...\right. Například:

    $$
      \|f\| = \left(\int_0^1 f^2(x) {\rm d}x\right)^{1\over2},\quad
      \left\|\sum_{i=1}^k f_i\right\| \leq \sum_{i=1}^k \|f_i\|.
    $$
    

    math14.jpg

    V matematické sadě fontů musí být připraven speciální font se zvětšovacími objekty, jako jsou závorky různých druhů. Zvětšování není spojité, ale po skocích. Ve fontu je sada připravených velikostí včetně komponentů, ze kterých lze v případě potřeby poskládat závorku libovolné větší velikosti. Jednotlivé velikosti jsou ve fontu vzájemně propojeny odkazy. TeX se po použití \left...\right o výběr správné velikosti stará sám.

    math15.jpg

    Kromě závorek jsou ve speciálním fontu připraveny různě velké znaky pro véčko odmocniny, přitom vodorovnou čáru TeX doplní automaticky dle šířky výrazu.

    $$\sqrt{1+\sqrt{1+\sqrt{1+\sqrt{1-x}}}}$$
    

    math16.jpg

    Konečně jsou v TeXu připraveny různé matematické akcenty, které mají možnost se pro změnu natahovat ve vodorovném směru.

    $$
      \overrightarrow{x+y} = \vec x + \vec y, \qquad
      n^k = \underbrace{n\cdot n\cdots n}_{k\times}
    $$
    

    math17.jpg

    Někdy se matematik potřebuje rozšoupnout:

    math18.jpg

    Tato poslední ukázka byla vytvořena pomocí makrobalíčku XYpic, pěkný návod vytvořil Aaron Lauda.

           

    Hodnocení: 88 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    25.3.2014 01:04 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Vynikající článek, děkuji.

    Miloslav Ponkrác
    1.4.2014 01:07 Miroslav Ponkrác
    Rozbalit Rozbalit vše Re: Miroslav Ponkrác
    Miroslav Ponkrác.

    Miroslav Ponkrác
    25.3.2014 07:24 K>
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Dotaz na autora: Proč je jednou použito slovo 'font', a jednou 'písmo'? Má to nějaké významové rozlišení?
    pavlix avatar 25.3.2014 09:14 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    V textu je i slovo řez ;).
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    25.3.2014 09:36 K>
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    rozdíl mezi řezem a písmem znám. je písmo třeba Times New Roman, a jeho řezy jsou např. kurzíva, polotučné písmo, tučné, tučná kurzíva, kapitálky...
    olsak avatar 25.3.2014 17:39 olsak | skóre: 29
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Proč je jednou použito slovo 'font', a jednou 'písmo'? Má to nějaké významové rozlišení?
    Font chápu jako písmo implementované v počítači. Pokud mluvím výhradně o počítačích (jako zde), je možné ta dvě slova brát jako synonyma a jejich střídání má pouze zvýšit pestrost při vyjadřování (to znáte ze slohových cvičení ze školy).

    Řez je varianta dané rodiny písma. Rodina se skládá z více řezů (variant), např. antikva, kurzíva, tučné. Chápu, že jsem nyní uvedl definici kruhem, ale snad si rozumíme.
    pavlix avatar 25.3.2014 17:56 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Tam je právě zajímavý ten vývoj slova font, které se postupně zobecňovalo.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    skunkOS avatar 25.3.2014 07:25 skunkOS | skóre: 27 | blog: Tak nějak
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Krása.
    http://martinrotter.github.io
    25.3.2014 08:36 honzas
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Výborný článek.

    Pro nalezení toho správného TeXového zápisu matematických symbolů je výborné: http://detexify.kirelabs.org/classify.html . Stačí symbol nakreslit a hned víte, jak to do TeXu zapsat...
    Karry avatar 25.3.2014 10:47 Karry | skóre: 10
    Rozbalit Rozbalit vše Plugin pro IM
    Nejen v mailech, existuje plugin do Kopete, ktery text uzavreny mezi dolary zobrazi jako vzorec v okne konverzace... Kdyz jsem se ucil na algebru protekly pres jabber servery stovky vzorcu :-) Skoda ze podobny plugin neni soucasti KDE Telepathy.

    Dekuji autorovi za clanek.
    unzip; strip; touch; grep; finger; mount; fsck; more; yes; umount; sleep
    25.3.2014 23:08 TyPo
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Děkuji za článek a těším se na další :)

    Mám zkušenosti pouze s Computer Modern pro matematiku. Máte zkušenosti s těmi alternativními matematickými fonty? Jsou všechny bezproblémové a obsahují kompletní znakovou sadu jako Computer Modern? Které se vám opticky líbí a jsou dobře čitelné (kromě CM)? Jsou někde nějaké vzorové dokumenty vysázené těmi různými matematickými fonty?
    26.3.2014 00:45 robertK | skóre: 26 | blog: Klokanuv_blog | Brno
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Ukazky: 1, 2
    egg avatar 26.3.2014 10:43 egg | skóre: 20 | Praha
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    26.3.2014 15:38 TyPo
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Díky.
    31.3.2014 20:03 Petr Ježek
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    Podle umírající měny? :)
    olsak avatar 31.3.2014 22:05 olsak | skóre: 29
    Rozbalit Rozbalit vše Re: TeX – 13 (matematická sazba)
    No, v době, kdy Knuth rozhodl, že bude matematickou sazbu značit pomocí dolarů (1978), se nám tady v Československu vůbec nejevila ta měna jako umírající...

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.