From: Christopher Creutzig <christopher@creutzig.de>
Subject: more nath patches
Date: Tue, 26 Oct 2004 15:08:08 +0200 [thread overview]
Message-ID: <417E4C38.1060107@creutzig.de> (raw)
Salvete,
I finally managed to make t-nath work with \eqalign and \eqalignno. (I
assume I was not the only one having trouble there?) As it appears,
nath gets really confused when subformulas are enclosed in {} and
contain some form of delimiters. Therefore, the original definitions
just don't work, but these modifications do, at least in some sense of
“work”:
\def\eqalignno#1%
{\displ@y
\tabskip\centering
\vcenter{%
\openup\jot\m@th
\halign to \displaywidth
{\hfil{\startnathdmath\@lign ##\stopnathdmath}\tabskip\z@skip
&{\startnathdmath\@lign {}##\stopnathdmath}\hfil\tabskip\centering
&\llap{$\@lign##$}\tabskip\z@skip\crcr
#1\crcr}}}
\def\eqalign#1%
{\null
\,%
\vcenter
{\openup
\jot\m@th
\ialign
{\strut\hfil{\startnathdmath ##\stopnathdmath}&%
{\startnathdmath {}##\stopnathdmath}\hfil\crcr
#1\crcr}}%
\,}
And I've got another snippet I'd like to share, which helps displaying
continued fractions in a linear format, using the “best” way of doing so
I've met so far:
\def\contfrac#1#2{%
% To get the lines at the top right and bottom left
% at the correct lengths, we need to know the final heights
% of both top and bottom. Since styles ``C-up'' and ``C-down''
% are used only in generalized fractions, we need a trial
% typesetting run for this.
\begingroup
\setbox\!!boxa\hbox{\trialtypesettingtrue\o@math\dcurrstyle@
{\setbox\nathbox\currstyle@hbox{%\vrule\!!depth .7\mex\!!width 0pt
\botrestricted@false #1}%
\!!dimena=\ht\nathbox \advance\!!dimena-\ht\sizebox@
\global\htdecrement@=\!!dimena
% \!!dimena=\dp\nathbox \advance\!!dimena .5ex \dp\nathbox=\!!dimena
\global\!!dimend=\dp\nathbox
\box\nathbox
\above\fracrulethickness@
\setbox\nathbox\currstyle@hbox{%\vrule\!!height 2\mex\!!width 0pt
\toprestricted@false #2}%
\!!dimenb=\dp\nathbox \advance\!!dimenb-\dp\sizebox@
\global\dpdecrement@=\!!dimenb
% \!!dimenb=\ht\nathbox \advance\!!dimenb .5ex \ht\nathbox=\!!dimenb
\global\!!dimene=\ht\nathbox
\box\nathbox
}%
\o@math}%
%
%
%% See the TeXbook, page 444 f., for what is happening here.
\ifcase\mathcount@
\!!dimenf=\fontdimen8\textfont2
\!!dimeng=\fontdimen11\textfont2
\!!dimenh=3\fracrulethickness@
\!!dimeni=\fontdimen22\textfont2
\or
\!!dimenf=\fontdimen9\scriptfont2
\!!dimeng=\fontdimen12\scriptfont2
\!!dimenh=\fracrulethickness@
\!!dimeni=\fontdimen22\scriptfont2
\else
\!!dimenf=\fontdimen9\scriptscriptfont2
\!!dimeng=\fontdimen12\scriptscriptfont2
\!!dimenh=\fracrulethickness@
\!!dimeni=\fontdimen22\scriptscriptfont2
\fi
%
\!!dimenj=\dimexpr(\!!dimenf-\!!dimend)-
(\!!dimeni+0.5\fracrulethickness@)\relax
\ifdim\!!dimenj<\!!dimenh
\advance\!!dimenf by \dimexpr(\!!dimenh-\!!dimenj)\relax
\fi
\!!dimenj=\dimexpr(\!!dimeni-0.5\fracrulethickness@)-
(\!!dimene-\!!dimeng)\relax
\ifdim\!!dimenj<\!!dimenh
\advance\!!dimeng by \dimexpr(\!!dimenh-\!!dimenj)\relax
\fi
%
\advance\!!dimenf by\dimexpr(-\!!dimeni)\relax
\advance\!!dimeng by\dimexpr(+\!!dimeni)\relax
%
\setbox\!!boxa\hbox{%
\o@math\dcurrstyle@
{\setbox\nathbox\currstyle@hbox{%\vrule\!!depth .7\mex\!!width 0pt
\botrestricted@false #1}%
\ifdim\ht\nathbox<1.6ex
\ht\nathbox=1.6ex
\fi
\!!dimena=\ht\nathbox \advance\!!dimena-\ht\sizebox@
\global\htdecrement@=\!!dimena
\setbox\!!boxb\hbox{%
\vrule
\!!depth\!!dimenf
\!!height\ht\nathbox
\!!width\fracrulethickness@
}%
\dp\!!boxb=0pt
\hfill\,
\box\nathbox
\,\hfill
\hskip\fracrulethickness@\box\!!boxb
\above\fracrulethickness@
\setbox\nathbox\currstyle@hbox{%\vrule\!!height 2\mex\!!width 0pt
\toprestricted@false #2}%
\ifdim\dp\nathbox<.4ex
\dp\nathbox=.4ex
\fi
\!!dimenb=\dp\nathbox \advance\!!dimenb-\dp\sizebox@
\global\dpdecrement@=\!!dimenb
\setbox\!!boxb\hbox{%
\vrule
\!!depth\dp\nathbox
\!!height\!!dimeng
\!!width\fracrulethickness@
}%
\ht\!!boxb=0pt
\box\!!boxb\hskip\fracrulethickness@
\hfill\,
\box\nathbox
\,\hfill
}%
\o@math}%
\setbox\nathbox\copy\!!boxa
\iftoprestricted@ \else
\!!dimenb=\ht\nathbox \advance\!!dimenb .4\mex \ht\nathbox=\!!dimenb
\fi
\ifbotrestricted@ \else
\!!dimenb=\dp\nathbox \advance\!!dimenb .5\mex \dp\nathbox=\!!dimenb
\fi
\box\nathbox % print
\!!dimena=\ht\!!boxa \advance\!!dimena-\htdecrement@
\ht\!!boxa=\!!dimena
\!!dimena=\dp\!!boxa \advance\!!dimena-\dpdecrement@
\dp\!!boxa=\!!dimena
\global\setbox\sizebox@\copy\!!boxa
\endgroup
\resizebox@{\sizebox@}}
I do assume the whole thing could be done with about half as many
lines of code, but I was glad to finally understand how TeX typesets
fractions and just ignored beautifying the code. Also note that the
snippet uses \fracrulethickness@ from t-nath.tex, while I honestly
consider using \fontdimen8\textfont3 or whichever font size is in use
for the fraction. Well, work in progress.
regards,
Christopher Creutzig
next reply other threads:[~2004-10-26 13:08 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-26 13:08 Christopher Creutzig [this message]
2004-10-26 14:16 ` Hans Hagen
2004-10-26 15:36 ` Christopher Creutzig
2004-10-26 15:55 ` Hans Hagen
2004-10-26 16:18 ` Maurice Diamantini
2004-10-27 3:50 ` David Arnold
2004-10-27 6:22 ` Maurice Diamantini
2004-10-27 7:13 ` Hans Hagen
2004-10-27 11:11 ` Nikolai Weibull
2004-10-27 12:15 ` Hans Hagen
2004-10-27 14:43 ` Re[2]: " Giuseppe Bilotta
2004-10-26 14:21 ` Giuseppe Bilotta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=417E4C38.1060107@creutzig.de \
--to=christopher@creutzig.de \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).