ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
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

             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).