Aditya Mahajan <[EMAIL PROTECTED]> writes:

> On Wed, 11 Jul 2007, Jesse Alama wrote:
>
>> 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.
>
>               Cut Here
> ------------------%< ----------------------------
>
>>> \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]
>>>
>
> ------------------------------%<-----------------------------------------
>                  To Here
>
>>> $\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?
>
> Hi Jesse,
>
> They have not been integrated into context yet. While changing one of 
> the core macros, one needs to test that it does not break existing 
> documents. I have been busy for the last two weeks and have not been 
> able to do that.
>
> In order to use these macro right now, cut between the two lines above 
> (you will need to remove the quotes, or cut from the previous message) 
> and put them in your environment file. Then you can use 
> \overrightarrow in your documents.
>
> I will send an updated math-ext in about a week.

Your suggestion worked out just fine -- 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