From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/35189 Path: news.gmane.org!not-for-mail From: Aditya Mahajan Newsgroups: gmane.comp.tex.context Subject: Re: \overleftrightarrow Date: Thu, 28 Jun 2007 23:31:32 -0400 (EDT) Message-ID: References: Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1183087920 20334 80.91.229.12 (29 Jun 2007 03:32:00 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 29 Jun 2007 03:32:00 +0000 (UTC) Cc: Mojca Miklavec To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Fri Jun 29 05:31:57 2007 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 lo.gmane.org with esmtp (Exim 4.50) id 1I47D8-0005LZ-P0 for gctc-ntg-context-518@m.gmane.org; Fri, 29 Jun 2007 05:31:54 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 087EA20018; Fri, 29 Jun 2007 05:31:53 +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 19200-01; Fri, 29 Jun 2007 05:31:43 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 734451FFE0; Fri, 29 Jun 2007 05:31:42 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 7C6A51FFE0 for ; Fri, 29 Jun 2007 05:31:40 +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 14310-06-5 for ; Fri, 29 Jun 2007 05:31:36 +0200 (CEST) Original-Received: from skycaptain.mr.itd.umich.edu (smtp.mail.umich.edu [141.211.93.160]) by ronja.ntg.nl (Postfix) with ESMTP id 7B3C91FFDC for ; Fri, 29 Jun 2007 05:31:35 +0200 (CEST) Original-Received: FROM aditya.hsd1.il.comcast.net. (c-24-13-179-215.hsd1.il.comcast.net [24.13.179.215]) BY skycaptain.mr.itd.umich.edu ID 46847D15.BC801.24863 ; 28 Jun 2007 23:31:33 -0400 In-Reply-To: X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.9 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:35189 Archived-At: On Thu, 28 Jun 2007, Jesse Alama wrote: > I'm preparing a geometry course using ConTeXt and am impressed with the > system so far. One thing I need is to do is typeset various geometrical > symbols. It looks like ConTeXt already has the \overleftarrow and > \overrightarrow commands, but one thing I'd like to have is > \overleftrightarrow, for typesetting the symbol customarily used to > denote the line determined by two points. It seems, though, that this > isn't available in ConTeXt, or, at least, it is not available by > default. I tried looking on the contextgarden and google, but didn't > come across anything. Is the \overleftrightarrow command already > available? Actually just adding overleftrightarrow is easy, but better will be an interface to easily define such commands. So .... > If not, what can I do so that I can use it? ConTeXt uses overleftarrow and overrightarrow as defined in plain tex. This does not work in subscripts. $\overleftarrow{A}$ $\overleftarrow{ABC}$ $a_{\overleftarrow{A}}$ $b_{\overleftarrow{ABC}}$ Here is a solution. First we patch math-ext so that arrowfills take a style. \unprotect \def\mtharrowfill#1#2#3#4#5#6#7#8% AM: Added #8 (for displaystyle) {$\mathsurround 0pt \thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip \relax#8#5% \mkern-#1mu \cleaders\hbox{$#8\mkern -#2mu#6\mkern -#3mu$}\hfill \mkern-#4mu#7$} %D Now we need to make sure that the extensible arrows do not get %D affected. So... \def\domthxarr#1#2#3#4#5% hm, looks like we do a double mathrel {\begingroup \def\mtharrfactor{1}% \def\mtharrextra {0}% \processaction[#1] % will be sped up [ \v!none=>\def\mtharrfactor{0}, \v!small=>\def\mtharrextra{10}, \v!medium=>\def\mtharrextra{15}, \v!big=>\def\mtharrextra{20}, \v!normal=>, \v!default=>, \v!unknown=>\doifnumberelse{#1}{\def\mtharrextra{#1}}\donothing]% \mathsurround\zeropoint \muskip0=\thirdoffourarguments #2mu \muskip2=\fourthoffourarguments #2mu \muskip4=\firstoffourarguments #2mu \muskip6=\secondoffourarguments #2mu \muskip0=\mtharrfactor\muskip0 \advance\muskip0 \mtharrextra mu \muskip2=\mtharrfactor\muskip2 \advance\muskip2 \mtharrextra mu \setbox0\hbox{$\scriptstyle \mkern\muskip4\relax \mkern\muskip0\relax #5\relax \mkern\muskip2\relax \mkern\muskip6\relax $}% \setbox4\hbox{#3\displaystyle}% AM: Added displaystyle \dimen0\wd0 \ifdim\wd4>\dimen0 \dimen0\wd4 \fi \setbox2\hbox{$\scriptstyle \mkern\muskip4\relax \mkern\muskip0\relax #4\relax \mkern\muskip2\relax \mkern\muskip6\relax $}% \ifdim\wd2>\dimen0 \dimen0\wd2 \fi \setbox4\hbox to \dimen0{#3\displaystyle}% AM: added dislaystyle \mathrel{\mathop{\hbox to \dimen0{\hss\copy4\hss}}\limits^{\box0}_{\box2}} \endgroup} \let\domthxarrsingle\domthxarr %D Now, for defining overarrows. \def\definemathoverarrow {\dotripleargument\dodefinemathoverarrow} \def\dodefinemathoverarrow[#1][#2][#3]% {\ifthirdargument \setvalue{#1}{\dohandlemathoverarrow[#2][#3]}% \else \setvalue{#1}{\dohandlemathoverarrow[\zeropoint][#2]}% \fi} \def\dohandlemathoverarrow[#1][#2]% {\mathpalette{\dodohanglemathoverarrow{#1}{#2}}} % Note: math-pln has \kern-\onepoint, amsmath does not. I keep the % kern amount as an option. This is useful with overharpoons. \def\dodohanglemathoverarrow#1#2#3#4% {\vbox{\ialign{##\crcr #2#3\crcr \noalign{\kern#1\nointerlineskip} $\m@th\hfil#3#4\hfil$\crcr}}} \protect \definemathoverarrow [overleftarrow] [\leftarrowfill] \definemathoverarrow [overrightarrow] [\rightarrowfill] \definemathoverarrow [overleftrightarrow] [\leftrightarrowfill] $\overleftarrow{A}$ $\overleftarrow{ABC}$ $a_{\overleftarrow{A}}$ $b_{\overleftarrow{ABC}}$ $\overleftrightarrow{A}$ $\overleftrightarrow{ABC}$ $a_{\overleftrightarrow{A}}$ $b_{\overleftrightarrow{ABC}}$ As an added bonus: \definemathoverarrow [overtwoheadrightarrow] [\twoheadrightarrowfill] \definemathoverarrow [overtwoheadleftarrow] [\twoheadleftarrowfill] \definemathoverarrow [overrightharpoondown] [1pt] [\rightharpoondownfill] \definemathoverarrow [overrightharpoonup] [\rightharpoonupfill] \definemathoverarrow [overleftharpoondown] [1pt] [\leftharpoondownfill] \definemathoverarrow [overleftharpoonup] [\leftharpoonupfill] $\overtwoheadrightarrow {XYZ}$ $\overtwoheadleftarrow {XYZ}$ $\overrightharpoondown {XYZ}$ $\overrightharpoonup {XYZ}$ $\overleftharpoondown {XYZ}$ $\overleftharpoonup {XYZ}$ There are also underarrows, which will not be too hard to do. I will patch math-ext with both overarrows and underarrows. I think that there needs to be some "italic correction" for the arrow. It is centered on the math box, but the math box is tilted to the right. Any way to determine the "correct" horizontal skip that should be added. Mojca, I remember that you had some trouble with overharpoons. Does this take care of that? Aditya ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________