From: Jesse Alama <alama@stanford.edu>
To: ntg-context@ntg.nl
Subject: Re: \overleftrightarrow
Date: Wed, 11 Jul 2007 11:33:00 -0700 [thread overview]
Message-ID: <m2tzsa7pur.fsf@calaveras.stanford.edu> (raw)
In-Reply-To: <alpine.WNT.0.999.0706282317540.3712@nqvgln>
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.
>
> \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.
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 (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
___________________________________________________________________________________
next prev parent reply other threads:[~2007-07-11 18:33 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 ` Jesse Alama [this message]
2007-07-11 18:42 ` \overleftrightarrow Aditya Mahajan
2007-07-11 18:57 ` \overleftrightarrow Jesse Alama
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=m2tzsa7pur.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).