Hi, Attached is a new version of math-ext - multiple columns - alignment per column See examples in source (mixed &|cr and NC|NR is no longer supported). That's all the math for this week. Hans
sjoerd siebinga wrote:
On 17 Jan 2006, at 23:54, Hans Hagen wrote:
does {\it blabla} give italic?
Yes it does. But when I place the \uchar{1}{01} inbetween the bla bla's the glyph remains regular.
Are you in math mode, by any chance? An very small example with wrong versus right would be very helpful. Cheers, Taco
Hi Taco, I am not in math mode. I am not sure what happened, but somehow I must have send my reply to the wrong thread. I have since send it to the correct thread, see \uchar and italics question. Sorry for the inconvenience, Sjoerd On 18 Jan 2006, at 08:47, Taco Hoekwater wrote:
sjoerd siebinga wrote:
On 17 Jan 2006, at 23:54, Hans Hagen wrote:
does {\it blabla} give italic?
Yes it does. But when I place the \uchar{1}{01} inbetween the bla
bla's
the glyph remains regular.
Are you in math mode, by any chance? An very small example with wrong versus right would be very helpful.
Cheers, Taco
<--- On Jan 17, Hans Hagen wrote --->
Hi,
Attached is a new version of math-ext
- multiple columns - alignment per column
See examples in source (mixed &|cr and NC|NR is no longer supported).
Thanks a lot. This takes care of 95% of my math needs, and I have finally started using context for a project. I did a bit of testing of the code and things work as expected. Once it is included in the main distribution, I will write an entry on the wiki. I am not sure of what is distance supposed to do when we specify the columns as n=something. Consider the following example for the source. I changed distance=0pt to distance=5cm and see no change. \startbuffer \placeformula \startformula \startalign[n=5,distance=5cm] x &= yy &= xx &= yy &= zz \\ a &= b &= p &= q &= w \\ \stopalign \stopformula \stopbuffer \typebuffer \getbuffer Thanks Aditya -- Aditya Mahajan, EECS Systems, University of Michigan http://www.eecs.umich.edu/~adityam || Ph: 7342624008
Aditya Mahajan wrote:
<--- On Jan 17, Hans Hagen wrote --->
Hi,
Attached is a new version of math-ext
- multiple columns - alignment per column
See examples in source (mixed &|cr and NC|NR is no longer supported).
Thanks a lot. This takes care of 95% of my math needs, and I have finally started using context for a project. I did a bit of testing of the code and things work as expected. Once it is included in the main distribution, I will write an entry on the wiki.
I am not sure of what is distance supposed to do when we specify the columns as n=something. Consider the following example for the source. I changed distance=0pt to distance=5cm and see no change.
\startbuffer \placeformula \startformula \startalign[n=5,distance=5cm] x &= yy &= xx &= yy &= zz \\ a &= b &= p &= q &= w \\ \stopalign \stopformula \stopbuffer
\typebuffer \getbuffer
it's only used when m is set Hans
Hans et al, I am going to assume that all of this is saved as math-ext.tex. None of it goes anywhere else at the moment. Correct? Also, I assume that: \ifx\startalign\undefined \input math-ext.tex \fi still needs to go into cont-new.tex. Correct? On Jan 17, 2006, at 5:50 AM, Hans Hagen wrote:
Hi,
Attached is a new version of math-ext
- multiple columns - alignment per column
See examples in source (mixed &|cr and NC|NR is no longer supported).
That's all the math for this week.
Hans %D \module %D [ file=math-ext, %D version=2006.01.14, %D title=\CONTEXT\ Math Macros, %D subtitle=Extra Macros, %D author={Hans Hagen \& Taco Hoekwater}, %D date=\currentdate, %D copyright=\PRAGMA] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details.
%D This will go into core-mat
%M \ifx\startalign\undefined \input math-ext.tex \fi
% some simple math constructs (based on user requests) % % preliminary
\unprotect
% adapted stuff
% we need to make this plain code a bit more 'readable'
\def\openup {\afterassignment\dopenup\scratchdimen=}
\def\dopenup {\advance\lineskip \scratchdimen \advance\baselineskip \scratchdimen \advance\lineskiplimit\scratchdimen}
\def\jot{.25\bodyfontsize} % plain tex: 3 pt (todo: better name)
\newif\ifdt@p
\def\displ@y % \presetdisplayspacing or so {\global\dt@ptrue \openup\jot \mathsurround\zeropoint \everycr{\noalign{% \ifdt@p \global\dt@pfalse \ifdim\prevdepth>-\thousandpoint \vskip-\lineskiplimit \vskip\normallineskiplimit \fi \else \penalty\interdisplaylinepenalty \fi}}}
% context (hooks)
\let\normaldispl@y\displ@y
\def\displ@y{\resetdisplaymatheq\normaldispl@y}
\let\presetdisplaymath\displ@y
% plain tex value: \centering = 0pt plus 1000pt minus 1000pt % plain tex valye: \jot = 3pt
% n>1 #### needed, strange # interaction (maybe we need a toks in recurse ane no macro)
\def\buildeqalign {\scratchtoks\emptytoks \dorecurse{\mathalignparameter\c!m} {\ifnum\recurselevel>\plusone \appendtoks \tabskip\mathalignparameter\c!distance&\tabskip\zeropoint \to\scratchtoks \fi \expanded{\scratchtoks{\the\scratchtoks\the\!!toksa}}% \dorecurse{\numexpr\mathalignparameter\c!n-\plusone\relax} {\expanded{\scratchtoks{\the\scratchtoks\the\!!toksb}}}}% \expanded{\scratchtoks{\the\scratchtoks\the\!!toksc}}}
\def\forgetalign {\tabskip\zeropoint\everycr\emptytoks}
\let\firstineqalign\empty \let\nextineqalign \empty \let\leftofeqalign \empty \let\rightofeqalign\empty
\def\mathineqalign#1{$\forgetalign\displaystyle{{}#1{}}$} \def\textineqalign#1{$\forgetalign#1$}
\def\eqalign#1% why no halign here, probably because of displaywidth {\!!toksa{\strut\hfil$\displaystyle{##}$}% \!!toksb{&$\displaystyle{{}##{}}$\hfil}% \!!toksc\emptytoks \buildeqalign \null\,\vcenter {\openup\jot \mathsurround\zeropoint \expandafter \ialign \expandafter {\the\scratchtoks\crcr#1 \crcr}% }\,}
% preamble is scanned for tabskips so we need the span to prevent an error message
\def\prepareeqalignno {\!!toksa{\strut\firstineqalign\hfil\leftofeqalign\span \mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% \!!toksb{&\nextineqalign\leftofeqalign\span\mathineqalign{##} \rightofeqalign\tabskip\zeropoint}% \!!toksc{\hfil\tabskip\centering&\llap{\span\textineqalign{##}} \tabskip\zeropoint}% \buildeqalign \presetdisplaymath \tabskip\centering}
\def\prepareleqalignno {\!!toksa{\strut\firstineqalign\hfil\leftofeqalign\span \mathineqalign{##}\rightofeqalign\tabskip\zeropoint}% \!!toksb{&\nextineqalign\leftofeqalign\span\mathineqalign{##} \rightofeqalign\tabskip\zeropoint}% \!!toksc{\hfil\tabskip\centering&\kern-\displaywidth\rlap{\span \textineqalign{##}}\tabskip\displaywidth}% \buildeqalign \presetdisplaymath \tabskip\centering}
\chardef\eqalignmode=1
\def\eqalignno#1% {\prepareeqalignno \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA {\the \scratchtoks\crcr#1\crcr}}
\def\leqalignno#1% {\prepareleqaligno \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA {\the \scratchtoks\crcr#1\crcr}}
\def\aligneqalignno {\prepareeqalignno \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA \bgroup \the\scratchtoks\crcr}
\def\alignleqalignno {\prepareleqalignno \halign \ifcase\eqalignmode \or to \displaywidth \fi \@EA \bgroup \the\scratchtoks\crcr}
\def\finishalignno {\crcr\egroup}
\definesystemvariable{eq}
\def\setupmathalign {\dodoubleempty\dosetupmathalign}
\def\dosetupmathalign[#1][#2]% {\ifsecondargument \getparameters[\??eq#1][#2]% \else \getparameters[\??eq][#1]% \fi}
\let\currentmathalign\empty
\def\mathalignparameter#1% {\executeifdefined{\??eq\currentmathalign#1}{\executeifdefined{\?? eq#1}\empty}}
\setupmathalign [\c!n=2, \c!m=1, \c!distance=1em]
\def\numberedeqalign {\doifelse\@@fmlocation\v!left\alignleqalignno\aligneqalignno}
\def\doxxdoubleempty#1#2% {\ifx#2[\expandafter\dodoxxdoubleempty\else\expandafter \noxxdoubleempty\fi#1#2}
\def\dodoxxdoubleempty#1[#2]#3% {\ifx#3[\else\expandafter\nonoxxdoubleempty\fi#1[#2]#3}
\def\noxxdoubleempty #1{#1[][]} \def\nonoxxdoubleempty#1[#2]{#1[#2][]}
\newcount\eqaligncolumn
\def\firstineqalign{\global\eqaligncolumn\plusone} \def\nextineqalign {\global\advance\eqaligncolumn\plusone} \def\leftofeqalign {\getvalue{\??eq:\v!left :\number\eqaligncolumn}} \def\rightofeqalign{\getvalue{\??eq:\v!right:\number\eqaligncolumn}}
\def\doseteqaligncolumn#1% {\letvalue{\??eq:\v!left :\number\eqaligncolumn}\empty \letvalue{\??eq:\v!right:\number\eqaligncolumn}\empty \doif{#1}\v!left {\letvalue{\??eq:\v!right:\number \eqaligncolumn}\hfill}% \doif{#1}\v!right {\letvalue{\??eq:\v!left :\number \eqaligncolumn}\hfill}% \doif{#1}\v!middle{\letvalue{\??eq:\v!right:\number \eqaligncolumn}\hfill \letvalue{\??eq:\v!left :\number \eqaligncolumn}\hfill}}
\def\dodoalignNC {\gdef\doalignNC##1{#1}}
\def\doalignNR[#1][#2]% {\doifsomething{#1} {\doifelse{#1}{+} {\doformulanumber[][#2][]{}} {\doformulanumber[#1][#2][]{}}}% \crcr}
\def\dostartmathalign[#1][#2]% {\pushmacro\doalignNC \edef\currentmathalign{#1}% \doifassignmentelse{#2}{\setupmathalign[#1][#2]}\donothing \def\NC{\doalignNC}% \global\let\doalignNC\dodoalignNC \def\EQ{&=}% \def\NR{&\global\let\doalignNC\dodoalignNC\doxxdoubleempty \doalignNR}% % amstex compatibility mode: (ugly) \def\notag{\def\\{&\crcr}}% \doifelse{#2}{*}{\def\\{&\crcr}}{\def\\{&\doalignNR[+][]\crcr}}% % end of compatibility mode \eqaligncolumn\zerocount \processcommacommand[\mathalignparameter\c!align]{\advance \eqaligncolumn\plusone\doseteqaligncolumn}% % the real action \global\eqaligncolumn\plusone \numberedeqalign}
\def\dostopmathalign {\finishalignno \popmacro\doalignNC}
\def\definemathalign {\dodoubleempty\dodefinemathalign}
\def\dodefinemathalign[#1]% [#2]% {\setvalue{\e!start#1}{\dodoubleempty\dostartmathalign[#1]}% \setvalue{\e!stop #1}{\dostopmathalign}% \setupmathalign[#1]}% [#2]
\definemathalign[align] % default case
% \def\startsplit % {\startalign[*]} % no number by default % % \def\stopsplit % {&\doalignNR[+][]\crcr % for a number on last line % \stopalign}
%D \startbuffer %D \placeformula \startformula \eqalignno { %D a &= b & \formulanumber \cr %D c &= d \cr %D &= e \cr %D &= f & \formulanumber %D } \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign %D \NC a \EQ b \NR[+] %D \NC c \EQ d \NR %D \NC \EQ f \NR[for:demo-a-1] %D \NC \EQ g \NR[for:demo-a-2][a] %D \NC \EQ h \NR[for:demo-a-3][b] %D \NC \EQ i \NR %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign %D \NC a \EQ b \NR[+] %D \NC c \EQ d \NR %D \NC \EQ f \NR %D \NC \EQ g \NR %D \NC \EQ h \NR %D \NC \EQ i \NR[+] %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign %D a &= b \\ %D c &= d \notag \\ %D &= e \notag \\ %D &= f \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign %D \NC a \NC \eq b \NR[+] %D \NC c \NC \neq d \NR %D \NC \NC \neq f \NR[for:demo-b-1] %D \NC \NC \geq g \NR[for:demo-b-2][a] %D \NC \NC \leq h \NR[for:demo-b-3][b] %D \NC \NC \neq i \NR %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[*] %D a &= b \\ %D c &= d \\ %D &= e \\ %D &= f \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign %D x &= y \\ %D a &= b \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[m=3] %D x &= y & x &= y & z &= t \\ %D a &= b & p &= q & w &= s \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[m=3,distance=0pt] %D x &= y &= x &= y &= z &= t \\ %D a &= b &= p &= q &= w &= s \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[n=5,distance=0pt] %D x &= yy &= xx &= yy &= zz \\ %D a &= b &= p &= q &= w \\ %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[n=3,align= {left,middle,right}] %D \NC l \NC = \NC r \NR %D \NC left \NC = \NC right \NR %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[n=3,align= {right,middle,left}] %D \NC l \NC = \NC r \NR %D \NC left \NC = \NC right \NR %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula \startformula \startalign[n=3,align= {middle,middle,middle}] %D \NC l \NC = \NC r \NR %D \NC left \NC = \NC right \NR %D \stopalign \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer
% BEGIN OF PATCH (CORE-MAT.TEX)
\def\doplaceformula[#1][#2]% #2 = dummy, gobbles spaces {\def\redoplaceformula {\bgroup \ifx\next\bgroup \egroup \@EA\moreplaceformula % [ref]{} \else \def\nextnext{$}% \ifx\next\nextnext \egroup \@EAEAEA\dispplaceformula % [ref]$$ \else \egroup \@EAEAEA\dodoplaceformula % [ref]\start \fi \fi[#1]{}}% \futurelet\next\redoplaceformula}
\long\def\moreplaceformula[#1]#2#3#4% #2 dummy #4 gobbles spaces {\def\redoplaceformula {\bgroup \def\nextnext{$}% \ifx\next\nextnext \egroup \@EA\dispplaceformula % [ref]$$ \else \egroup \@EA\dodoplaceformula % [ref]\start \fi [#1]{#3}}% \futurelet\next\redoplaceformula#4}
% END OF PATCH
\def\startformulas#1\stopformulas {\bgroup \forgetdisplayskips \startdisplaymath \setlocalhsize \long\def\startformula##1\stopformula{\advance\scratchcounter \plusone}% \scratchcounter\zerocount #1% preroll \divide \hsize \scratchcounter \hbox to \localhsize \bgroup \hss \def\normalstartformula{\vskip-\strutdepth$$}% i hate this \def\normalstopformula {$$}% % \def\jot{0pt}% \def\startformula{$\vcenter\bgroup\normalstartformula}% \def\stopformula {\normalstopformula\egroup$\hss}% #1% \egroup \stopdisplaymath \egroup}
%D \startbuffer %D \placeformula %D \startformula %D \startalign[n=3,align={middle,middle,middle}] %D \NC a \NC = \NC b \NR[+] %D \NC 2a \NC = \NC 2b \NR %D \stopalign %D \stopformula %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula %D \startformulas %D \setupmathalign[n=3,align={middle,middle,middle}]% %D \startformula %D \startalign %D \NC a \NC = \NC b \NR[+] %D \NC 2a \NC = \NC 2b \NR %D \stopalign %D \stopformula %D \startformula %D \startalign %D \NC a \NC = \NC b \NR[+] %D \NC 2a \NC = \NC 2b \NR %D \stopalign %D \stopformula %D \stopformulas %D \stopbuffer %D %D \typebuffer \getbuffer %D %D \startbuffer %D \placeformula %D \startformulas %D \dorecurse{5}{\startformula %D \startalign[n=3,align={middle,middle,middle}] %D \NC a \NC = \NC b \NR[+] %D \NC 2a \NC = \NC 2b \NR %D \stopalign %D \stopformula} %D \stopformulas %D \stopbuffer %D %D \typebuffer \getbuffer
\protect \endinput _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
David Arnold wrote:
Hans et al,
I am going to assume that all of this is saved as math-ext.tex. None of it goes anywhere else at the moment. Correct?
Also, I assume that:
\ifx\startalign\undefined \input math-ext.tex \fi
still needs to go into cont-new.tex.
Correct?
till you update, because on my machine the code is now in core-mat so it's part of the core Hans
Does this mean if I update I will have it in the core and I can get rid of the line in cont-new.tex? On Jan 23, 2006, at 1:51 PM, Hans Hagen wrote:
David Arnold wrote:
Hans et al,
I am going to assume that all of this is saved as math-ext.tex. None of it goes anywhere else at the moment. Correct?
Also, I assume that:
\ifx\startalign\undefined \input math-ext.tex \fi
still needs to go into cont-new.tex.
Correct?
till you update, because on my machine the code is now in core-mat so it's part of the core
Hans _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
participants (5)
-
Aditya Mahajan
-
David Arnold
-
Hans Hagen
-
sjoerd siebinga
-
Taco Hoekwater