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