Hi Aditya,

Aditya Mahajan <[EMAIL PROTECTED]> writes:

> 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}
>    [EMAIL PROTECTED]
>
> \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.

Have your changes been integrated into the ConTeXt code base yet?  If
not, how can I use your code?  Is it enough to just include the relevant
parts in my project's environment file?

Thanks,

Jesse

-- 
Jesse Alama ([EMAIL PROTECTED])
*60: Something remains to be proved in this case

___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to