[cstex] Jak na tvorbu harmonogramu (matematicke schema)?

Jaroslav Hajtmar hajtmar at gyza.cz
Wed Feb 4 23:34:44 CET 2015


Dobrý den.

Jistě jste zaznamenali, že mi pan Olšák zaslal jistou verzi řešení mého 
problému. Po sérii soukromých mailů mi pan Olšák velmi rychle vyrobil 
řešení "na míru", které vypadá přesně tak, jak jsem chtěl.
Rád bych proto nyní (po dohodě s ním) jeho řešení dal k dispozici i 
ostatním členům konference. Vzhledem k tomu, že chci jeho makro používat 
v ConTeXtu, je v makru obsažena (pro plain zbytečná) změna kategorie 
znaku &.

Níže nabízím ukázkové příklady v Plainu i v LaTeXu, makro ovšem funguje 
bezproblémově i v ConTeXtu.

Mnohokrát díky panu Olšákovi za pomoc. V tuto chvíli je to v podobě, ve 
které jsem to chtěl mít a na kterou jsem zvyklý já i moji studenti.
Vypadá to navíc moc pěkně a kompaktně. Navíc je možné např. do prvního 
či posledního řádku krásně vyznačit i výsledné znaménko podílu (součinu 
atd...) a následně to využít pro vyznačení monotonnosti resp. 
konvexnosti či konkávnosti funkce na daných intervalech. Z přiložených 
příkladů bude jistě vše jasné ...

Pan Olšák mi ušetřil spoustu práce s mým vlastním LUA řešením. Tu 
tabulku bych jistě udělal, ale na těch puntících bych si asi vylámal 
zuby (resp. mne nenapadá, jak bych to v tuhle chvíli vůbec udělal ...)

Věřím, že se řešení pana Olšáka bude hodit a sloužit i dalším 
matematikům ...


Ještě jednou mnohokrát díky a jsem s pozdravem celé konferenci
Jarda Hajtmar


% 
--------------------------------------------------------------------------------------------------------------------------
% Verze pro Plain:
% Makro pro sazbu harmonogramu
% Překlad: pdfcsplain

\newdimen\tcolw \tcolw=2em
\begingroup
\catcode`&=4
\gdef\tabule#1#2{\vbox{\offinterlineskip\halign{\hfil##\quad&##\hfil\crcr\tabuleA#2,:,%
\omit\tabuleR&\kern.2pt\tabuleS{.5\tcolw}\relax\tabuleE#1,\relax,\tabuleS{.5\tcolw}\relax\cr
    \noalign{\kern2pt}&\def~{}\kern1em\tabuleD#1,\relax,\cr}}}
\gdef\tabuleA#1:#2,{\cr\ifx,#1,\else 
$#1$&\tabuleB#2{}\expandafter\tabuleA\fi}
\gdef\tabuleB#1{\hbox to2em{\hss$#1$\hss}\tabuleC}
\gdef\tabuleC#1{\ifx,#1,\else\strut\vrule\kern-.4pt\hbox 
to2em{\hss$#1$\hss}\expandafter\tabuleC\fi}
\gdef\tabuleD#1#2,{\ifx\relax#1\else\hbox 
to2em{\hss$#1#2$\hss}\expandafter\tabuleD\fi}
\gdef\tabuleE#1#2,{\ifx\relax#1\else
     \ifx~#1\tabuleS\tcolw\circ \else\tabuleS\tcolw\bullet\fi 
\expandafter\tabuleE\fi}
\gdef\tabuleR{\leaders\vrule height2.8pt depth-2.4pt\hfil}
\gdef\tabuleS#1#2{\hbox to#1{\kern-.2pt\tabuleR \ifx\relax#2\else
    \kern-.7pt$#2$\kern-.7pt\tabuleR\fi\kern-.2pt}}
\endgroup
\let\harmonogram\tabule

Úloha: Určete definiční obor funkce $f: y = \sqrt{{x+2}\over{4x-6}}$

\bigskip

Řešení: ${{x+2}\over{4x-6}}\ge0 \quad \wedge \quad 4x-6\neq0$

\bigskip

Harmonogram pro zjištění znaménka zlomku:

\bigskip


\harmonogram{-2, ~3\over2}{x+2:-++,4x-6:--+, 
{{x+2}\over{4x-6}}:\oplus\ominus\oplus}

\bigskip

Výsledek:    $D(f)=\left(-\infty; -2\right\rangle \cup 
\left({{3}\over{2}};+\infty\right)$

\bigskip

\hrule

\bigskip

Harmonogram lze použít i pro popis monotonnosti funkce na daném intervalu:

\bigskip


\harmonogram{-2, ~3\over2}{ :\nearrow\searrow\nearrow, x+2:-++,4x-6:--+, 
{{x+2}\over{4x-6}}:\oplus\ominus\oplus}

\bigskip

\hrule

\bigskip

Nebo popis konvexnosti či konkávnosti funkce na daném intervalu:

\bigskip

\harmonogram{-2, ~3\over2}{ :\smile\frown\smile, x+2:-++,4x-6:--+, 
:\oplus\ominus\oplus}

\bye




% 
--------------------------------------------------------------------------------------------------------------------------
% Verze pro LaTeX:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{luainputenc}
\usepackage[T1]{fontenc}
\usepackage[czech,english]{babel}

% Makro pro sazbu harmonogramu
% Překlad: pdfcslatex

\newdimen\tcolw \tcolw=2em
\begingroup
\catcode`&=4
\gdef\tabule#1#2{\vbox{\offinterlineskip\halign{\hfil##\quad&##\hfil\crcr\tabuleA#2,:,%
\omit\tabuleR&\kern.2pt\tabuleS{.5\tcolw}\relax\tabuleE#1,\relax,\tabuleS{.5\tcolw}\relax\cr
    \noalign{\kern2pt}&\def~{}\kern1em\tabuleD#1,\relax,\cr}}}
\gdef\tabuleA#1:#2,{\cr\ifx,#1,\else 
$#1$&\tabuleB#2{}\expandafter\tabuleA\fi}
\gdef\tabuleB#1{\hbox to2em{\hss$#1$\hss}\tabuleC}
\gdef\tabuleC#1{\ifx,#1,\else\strut\vrule\kern-.4pt\hbox 
to2em{\hss$#1$\hss}\expandafter\tabuleC\fi}
\gdef\tabuleD#1#2,{\ifx\relax#1\else\hbox 
to2em{\hss$#1#2$\hss}\expandafter\tabuleD\fi}
\gdef\tabuleE#1#2,{\ifx\relax#1\else
     \ifx~#1\tabuleS\tcolw\circ \else\tabuleS\tcolw\bullet\fi 
\expandafter\tabuleE\fi}
\gdef\tabuleR{\leaders\vrule height2.8pt depth-2.4pt\hfil}
\gdef\tabuleS#1#2{\hbox to#1{\kern-.2pt\tabuleR \ifx\relax#2\else
    \kern-.7pt$#2$\kern-.7pt\tabuleR\fi\kern-.2pt}}
\endgroup
\let\harmonogram\tabule



\begin{document}

Úloha: Určete definiční obor funkce $f: y = \sqrt{{x+2}\over{4x-6}}$

\bigskip

Řešení: ${{x+2}\over{4x-6}}\ge0 \quad \wedge \quad 4x-6\neq0$

\bigskip

Harmonogram pro zjištění znaménka zlomku:

\bigskip


\harmonogram{-2, ~3\over2}{x+2:-++,4x-6:--+, 
{{x+2}\over{4x-6}}:\oplus\ominus\oplus}

\bigskip

Výsledek:    $D(f)=\left(-\infty; -2\right\rangle \cup 
\left({{3}\over{2}};+\infty\right)$

\bigskip

\hrule

\bigskip

Harmonogram lze použít i pro popis monotonnosti funkce na daném intervalu:

\bigskip


\harmonogram{-2, ~3\over2}{ :\nearrow\searrow\nearrow, x+2:-++,4x-6:--+, 
{{x+2}\over{4x-6}}:\oplus\ominus\oplus}

\bigskip

\hrule

\bigskip

Nebo popis konvexnosti či konkávnosti funkce na daném intervalu:

\bigskip

\harmonogram{-2, ~3\over2}{ :\smile\frown\smile, x+2:-++,4x-6:--+, 
:\oplus\ominus\oplus}


\end{document}





Dne 1.2.2015 v 20:00 Jaroslav Hajtmar napsal(a):
> Dobrý den.
> Děkuji za odpověď ...
> Koukal jsem na to a vypadá to dost dobře ... bohužel chci sázet 
> ConTeXtem a balíček mfpic pravděpodobně ConTeXt neschroustá ... 
> (narozdíl asi od plainovských maker...)
> Zkusím na to mrknout. Pokud to budu muset vysázet LaTeXem (což se může 
> stát, že takový požadavek bude), pak je to pro mne dobrý tip ...
> Díky za radu a přeji pěkný den.
> Jarda Hajtmar
>
>
> Dne 1.2.2015 v 18:57 Kuben Jaromír napsal(a):
>> Dobrý den.
>>
>> Osobně bych to řešil vhodně napsaným makrem pro balíček mfpic, to by 
>> mi dalo určitě nejméně práce a výsledek by vypadal tak, jak bych chtěl.
>>
>> Potřeboval jsem vyrobit desítky malých obrázků, které zobrazovaly 
>> znaménka různých funkcí a dodávaly další informace (monotonii atd.). 
>> Makrům se zadávalo minimum informací, zbytek dopočítala. Podobně 
>> snadno by šly udělat Vaše tabulky. Čáry se vytvoří snadno, puntíky 
>> nebo kolečka se dají, kam potřebujete, a příkaz \tlabel umístí popis 
>> kam chcete.
>>
>> Pokud byste se chtěl podívat na ukázku, najdete ji na 
>> https://moodle.unob.cz/course/view.php?id=356
>> v textu Differential Calculus např. na str. 208, 384, 406, 444 a jinde.
>>
>> Zdraví
>>    Jaromír Kuben
>>
>> Dne 1. 2. 2015 v 18:37 Jaroslav Hajtmar napsal(a):
>>> Dobrý den.
>>> Díky za odpověď ...
>>> V tuto chvíli nechci vymýšlet opravdu nic sofistikovaného. Nezáleží 
>>> mi totiž dokonce ani na "poměrech" v jakých budou puntíky dělit tu 
>>> základní čáru. Navíc plánuju udělat samostatná makra pro jeden 
>>> nulový bod, dva nulové body, tři a snad i čtyři... víc ani ne.. 
>>> Napadlo mne to udělat nějakou vhodnou tabulkou, ale v tuto chvíli 
>>> řeším, jak do ní napozicovat ty puntíky a umístit popisy těch 
>>> puntíků tak, aby to trochu vypadalo ...
>>> Uvažoval jsem i o Tikz, tam je takových podobných věcí dost, ale 
>>> napadlo mne nejprve zkusit konferenci, zda už se někdo něčím 
>>> podobným nezabýval, než se do toho pustím...
>>>
>>> Ještě jednou díky.
>>> Jarda Hajtmar
>>>
>>>
>>> Dne 1.2.2015 v 18:27 Zdenek Wagner napsal(a):
>>>> Dobrý večer,
>>>>
>>>> LaTeX sice má nějaké matematické balíčky, ale nebylo by to jednodušší
>>>> v LUA? Z toho by pak šlo vyplodit i ConTeXtový kód. Kdybych LUA uměl,
>>>> šel bych touto cestou, jinak bych si nejspíš udělal preprocesor v
>>>> perlu.
>>>> Zdeněk Wagner
>>>> http://hroch486.icpf.cas.cz/wagner/
>>>> http://icebearsoft.euweb.cz
>>>>
>>>>
>>>> Dne 1. února 2015 17:30 Jaroslav Hajtmar <hajtmar at gyza.cz> napsal(a):
>>>>> Dobrý den.
>>>>> Chci se zeptat, zda náhodou někdo neřešil např. v LaTeXu, ale obecně
>>>>> čímkoliv podobný problém, ať nevymýšlím kolo...
>>>>>
>>>>> Jde mi o tip na nějaké jednoduché makro, které by dokázalo vysázet 
>>>>> schéma -
>>>>> harmonogram pro zjištění znaménka výrazu na daném intervalu. Rád 
>>>>> bych aby to
>>>>> vypadalo podobně jako tohle:
>>>>> http://tempfiles.hajtmar.com/files/harmonogram.jpg
>>>>>
>>>>> Lze to asi udělat různě, ale rád bych to co nejvíce zautomatizoval 
>>>>> - čeká
>>>>> mne sazba většího počtu takových schémat...
>>>>> Osobně mám zájem to nakonec nějak naportovat do ConTeXtu ale 
>>>>> nepohrdnu
>>>>> jakýmkoliv nápadem na automatizaci ...
>>>>>
>>>>> Díky za případný tip a jsem s pozdravem všem v konferenci...
>>>>>
>>>>> Zdraví Jarda Hajtmar
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> csTeX mailing list
>>>>> csTeX at cs.felk.cvut.cz
>>>>> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>> _______________________________________________
>>>> csTeX mailing list
>>>> csTeX at cs.felk.cvut.cz
>>>> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>
>>> _______________________________________________
>>> csTeX mailing list
>>> csTeX at cs.felk.cvut.cz
>>> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>>
>> _______________________________________________
>> csTeX mailing list
>> csTeX at cs.felk.cvut.cz
>> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex




More information about the csTeX mailing list