ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Jesse Alama <alama@stanford.edu>
To: ntg-context@ntg.nl
Subject: Re: \overleftrightarrow
Date: Wed, 11 Jul 2007 11:57:08 -0700	[thread overview]
Message-ID: <m2ps2y7oqj.fsf@calaveras.stanford.edu> (raw)
In-Reply-To: <alpine.WNT.0.999.0707111437480.4084@nqvgln>

Aditya Mahajan <adityam@umich.edu> writes:

> On Wed, 11 Jul 2007, Jesse Alama wrote:
>
>> Hi Aditya,
>>
>> Aditya Mahajan <adityam@umich.edu> 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}
>>>    $\m@th\hfil#3#4\hfil$\crcr}}}
>>>
>>> \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 (alama@stanford.edu)
*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	other threads:[~2007-07-11 18:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-29  0:50 \overleftrightarrow Jesse Alama
2007-06-29  3:31 ` \overleftrightarrow Aditya Mahajan
2007-06-30  8:47   ` \overleftrightarrow Mojca Miklavec
2007-07-01 16:29     ` \overleftrightarrow Hans Hagen
2007-07-19  7:01     ` \overleftrightarrow Aditya Mahajan
2007-07-19 15:42       ` overleftrightarrow Aditya Mahajan
2007-07-11 18:33   ` \overleftrightarrow Jesse Alama
2007-07-11 18:42     ` \overleftrightarrow Aditya Mahajan
2007-07-11 18:57       ` Jesse Alama [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2ps2y7oqj.fsf@calaveras.stanford.edu \
    --to=alama@stanford.edu \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).