From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/30848 Path: news.gmane.org!not-for-mail From: Aditya Mahajan Newsgroups: gmane.comp.tex.context Subject: Re: Missing \dddot and \ddddot Date: Fri, 15 Sep 2006 22:28:52 -0400 (EDT) Message-ID: References: <45094609.9090206@cs.com> <4509A537.8040402@wxs.nl> <450A56ED.2070808@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1158373775 25898 80.91.229.2 (16 Sep 2006 02:29:35 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 16 Sep 2006 02:29:35 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Sat Sep 16 04:29:32 2006 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by ciao.gmane.org with esmtp (Exim 4.43) id 1GOPvZ-00027m-4M for gctc-ntg-context-518@m.gmane.org; Sat, 16 Sep 2006 04:29:09 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id A06981FE55; Sat, 16 Sep 2006 04:29:08 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 25397-02-4; Sat, 16 Sep 2006 04:28:59 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id B6AC11FE4F; Sat, 16 Sep 2006 04:28:59 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 22B561FE4F for ; Sat, 16 Sep 2006 04:28:58 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 25397-02-3 for ; Sat, 16 Sep 2006 04:28:56 +0200 (CEST) Original-Received: from hackers.mr.itd.umich.edu (smtp.mail.umich.edu [141.211.14.81]) by ronja.ntg.nl (Postfix) with SMTP id BB6431FE4A for ; Sat, 16 Sep 2006 04:28:55 +0200 (CEST) Original-Received: FROM aditya.annarb01.mi.comcast.net (c-68-40-50-205.hsd1.mi.comcast.net [68.40.50.205]) BY hackers.mr.itd.umich.edu ID 450B6164.B6D89.21899 ; 15 Sep 2006 22:28:53 -0400 Original-To: mailing list for ConTeXt users In-Reply-To: X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.7 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:30848 Archived-At: On Fri, 15 Sep 2006, Aditya Mahajan wrote: > On Fri, 15 Sep 2006, Hans Hagen wrote: > >> Aditya Mahajan wrote: >>> On Thu, 14 Sep 2006, Hans Hagen wrote: >>> >>> >>>> Aditya Mahajan wrote: >>>> >>>>> On Thu, 14 Sep 2006, WN wrote: >>>>> >>>>> >>>>> >>>>>> Hello, >>>>>> I need to use \dddot and \ddddot in one of my documents, does anyone >>>>>> know how to >>>>>> define these math symbols. >>>>>> >>>>>> >>>>> The trouble is that most fonts do not contain these accents. >>>>> amsmath.sty gets over this definition by faking these symbols. It is >>>>> easy to port these definitions to context. >>>>> >>>>> amsmath.sty definition >>>>> >>>>> \newcommand{\dddot}[1]{% >>>>> {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ >>>>> \hbox{\normalfont ...}\vss}}}} >>>>> \newcommand{\ddddot}[1]{% >>>>> {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ >>>>> \hbox{\normalfont....}\vss}}}} >>>>> >>>>> >>>>> Converting to context >>>>> >>>>> %--------------------%<------------------------------------ >>>>> \unprotect >>>>> >>>>> % The true copy of amsmath definitions >>>>> \def\amsdddot {\limits^{\vbox to -1.4ex{\kern-2ex\hbox{\the\textfont\z@ ...}\vss}}} >>>>> \def\amsddddot{\limits^{\vbox to -1.4ex{\kern-2ex\hbox{\the\textfont\z@....}\vss}}} >>>>> >>>>> % I do not understand why you need to give negative height >>>>> >>>>> >>>> \setbox\scratchbox{..} \ht\scratchbox0pt \dp\scratchbox-2pt >>>> >>> >>> I was wondering why amstex definition does this, as the 1.4ex depth >>> was too big. Then I realized that it is not 1.4ex but 1.4\ex@ with >>> \ex@ as .2326ex. ughh....the ugly syntax of plain tex... >>> >>> So here is a more reliable reproduction of amstex dddot and ddddot >>> >>> \newdimen\amstexex >>> >>> \amstexex = .2326ex >>> >> what's this funny number based on, somehow related to interlinespace? >> >> one cannot define a measure globally this way, since an ex is font >> dependent,; >> >> \def\amstexex{\dimexpr.08\lineheight\relax} > > The latex package amsgen.sty define it more carefully > > \newdimen\ex@ > \addto@hook\every@math@size{\compute@ex@} > \def\compute@ex@{% > \begingroup > \dimen@-\f@size\p@ > \ifdim\dimen@<-20\p@ > \global\ex@ 1.5\p@ > \else > \advance\dimen@10\p@ \multiply\dimen@\tw@ > \edef\@tempa{\ifdim\dimen@>\z@ -\fi}% > \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@ > \advance\dimen@-\@m sp % fudge factor > \vfuzz\p@ > \def\do{\ifdim\dimen@>\z@ > \vfuzz=.97\vfuzz > \advance\dimen@ -\p@ > \@xp\do \fi}% > \do > \dimen@\p@ \advance\dimen@-\vfuzz > \global\ex@\p@ > \global\advance\ex@ \@tempa\dimen@ > \fi > \endgroup > } A bit of explaination incase someone is wondering what is going on % \begin{macro}{\ex@} % The \cs{ex@} variable provides a small unit of space for use in % math-mode constructions, that varies according to the current type % size. For example, the \cn{pmb} command uses \cs{ex@} units. % Since a macro or mu unit solution for the \meta{dimen} \cs{ex@} won't % work without changing a lot of current code in the \pkg{amsmath} % package, we set \cs{ex@} through the \cs{every@math@size} hook. % The value of \cs{ex@} is scaled nonlinearly in a range of roughly % 0.5pt to 1.5pt, by the function \cs{compute@ex@}. % \begin{macrocode} \newdimen\ex@ \addto@hook\every@math@size{\compute@ex@} % \end{macrocode} % \end{macro} % % \cs{compute@ex@} computes \cs{ex@} as a nonlinear scaling from 10pt % to current font size (\cs{f@size}). Using .97 as the multiplier makes 1 % |ex@| $\approx$ .9pt when the current type size is 8pt and 1 |ex@| % $\approx$ 1.1pt when the current type size is 12pt. % % The formula is essentially % \begin{displaymath} % \newcommand{\points}{\mbox{pt}} % \newcommand{\floor}[1]{\lfloor#1\rfloor} % 1\points \pm (1\points - (.97)^{\floor{\vert 10 - n\vert}}) % \end{displaymath} % where $n$ = current type size, but adjusted to differentiate % half-point sizes as well as whole point sizes, and there is a % cutoff for extraordinarily large values of \cs{f@size} ($>$ 20pt) % so that the value of \cs{ex@} never exceeds 1.5pt. % % \begin{macrocode} \def\compute@ex@{% \begingroup \dimen@-\f@size\p@ \ifdim\dimen@<-20\p@ % \end{macrocode} % Never make \cs{ex@} larger than 1.5pt. % \begin{macrocode} \global\ex@ 1.5\p@ \else % \end{macrocode} % Adjust by the reference size and multiply by 2 to allow for % half-point sizes. % \begin{macrocode} \advance\dimen@10\p@ \multiply\dimen@\tw@ % \end{macrocode} % Save information about the current sign of \cs{dimen@}. % \begin{macrocode} \edef\@tempa{\ifdim\dimen@>\z@ -\fi}% % \end{macrocode} % Get the absolute value of \cs{dimen@}. % \begin{macrocode} \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@ \advance\dimen@-\@m sp % fudge factor % \end{macrocode} % Here we use \cs{vfuzz} merely as a convenient scratch register % \begin{macrocode} \vfuzz\p@ % \end{macrocode} % Multiply in a loop. % \begin{macrocode} \def\do{\ifdim\dimen@>\z@ \vfuzz=.97\vfuzz \advance\dimen@ -\p@ %\message{\vfuzz: \the\vfuzz, \dimen@: \the\dimen@}% \@xp\do \fi}% \do \dimen@\p@ \advance\dimen@-\vfuzz \global\ex@\p@ \global\advance\ex@ \@tempa\dimen@ \fi \endgroup Aditya