Radkovy rejstrik a sazba rovnic

Antonin Strejc STREJC at vc.cvut.cz
Mon Oct 5 19:22:13 CEST 1998


Jakub Zlamal pise:
>
>  Snazim se o dodrzeni radkoveho rejstriku. Je to vsechno v poradku,
>ale jak vlozim rovnici tak se za rovnici radkovy rejstrik rozhodi.

Zkusil jsem neco uplacat, pokud to neni uplne ciste a nekdo najde
jednodussi reseni, predem jeho vyhrady prijimam :-).

Skipy kolem rovnice se vypocitavaji tak, aby rovnice vcetne techto
skipu merila na vysku n*\baselineskip. Rovnice se zmeri ve \vboxu
pri nulovych skipech, vyska se zaokrouhli nahoru a zvetsi jeste
o \baselineskip. Pak se vypoctou nutne skipy (\abovedisplayshortskip
je zmensen o \baselineskip, aby se pri kratkem vychodovem radku
predchoziho odstavce rovnice posunula o radek nahoru).

Problem nastava, pokud ma posledni radek pred rovnici nenulovou
hloubku. Tu by sice bylo mozno zjistit z \prevdepth po ukonceni
odstavcoveho modu, odstavec ale nelze ukoncit pred rovnici, ma-li se
rovnice chovat podle vychodoveho radku. Obesel jsem to tak, ze napred
zmerim vychodovy radek pomoci \predisplaysize v prazdne rovnici,
kterou vysazim s takovymi skipy, aby se aktualni bod sazby ocitl
zpet na zacatku vychodoveho radku. Pak zahajim odstavcovy mod a udelam
\kern delky vychodoveho radku. Tim je nasimulovan novy vychodovy radek
se stejnou sirkou ale s nulovou hloubkou. Potom nasleduje zminene
mereni rovnice, vypocet skipu, vlastni sazba rovnice a podpery vysky
\baselineskip na zacatku dalsiho odstavce, aby zustal zachovan radkovy
rejstrik.

%------------------
\lineskip=0pt
\def\setskips#1{\abovedisplayskip=#1\belowdisplayskip=#1%
    \abovedisplayshortskip=#1\belowdisplayshortskip=#1}
\newdimen\tmp
\def\rovnice#1{\setskips{-\baselineskip}%
    $$\global\tmp=\predisplaysize$$\advance\tmp-2em
    \noindent\kern\tmp\setskips{0pt}\setbox1=\vbox{$$#1$$}\tmp=0pt
    \loop\advance\tmp\baselineskip\ifdim\tmp<\ht1\repeat
    \advance\tmp-\ht1\advance\tmp\baselineskip
    \setskips{.5\tmp}\advance\abovedisplayshortskip-\baselineskip
    $$#1$$\vrule width0pt height\baselineskip}

% demo:
Text odstavce pred rovnici.
\rovnice{1+1=2}
Zde pokracuje dalsi text.
%------------------

S pozdravem
Antonin Strejc

---------------------------------------------------------------------
Ing. Antonin Strejc                            Phone: +420-2-24352938
---------------------------------------------------------------------
Czech Technical University in Prague                 Computing Centre
Czech Republic                               Zikova 4, 166 35 Praha 6
---------------------------------------------------------------------



More information about the csTeX mailing list