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 ___________________________________________________________________________________