[NTG-context] Using \overloaded

Wolfgang Schuster wolfgang.schuster.lists at gmail.com
Sun Jan 24 10:33:52 CET 2021


Rik Kabel schrieb am 24.01.2021 um 05:13:
> Hans and all,
> 
> Preparing my standard environments for future strict enforcement of 
> overloading prevention, I have run into one issue.
> 
> I had been using the following construction to change the formatting of 
> URLs:
> 
>     \let\OrigHyphenatedurl\hyphenatedurl
>     \starttexdefinition hyphenatedurl #URL
>        \begingroup
>          \URLfont\OrigHyphenatedurl{#URL}
>        \endgroup
>     \stoptexdefinition


You can use a hook to change the font for \hyphenatedurl.

\starttext

\hyphenatedurl{https://wiki.contextgarden.net/Main_Page}

\appendtoks
   \it
\to \everyhyphenatedurl

\hyphenatedurl{https://wiki.contextgarden.net/Main_Page}

\stoptext


> This results in the following warning about overloading \hyphenatedurl:
> 
>     csname overload > warning, protection level 3, control sequence
>     'hyphenatedurl', properties 'permanent protected', file
>     'env_layout.mkvi', line 1
> 
> I have tried adding \overloaded to indicate the intentional overloading, 
> but \overloaded cannot be used with \starttexdefinition, so I rewrote it as:
> 
>     \let\OrigHyphenatedurl\hyphenatedurl
>     \overloaded\define[1]\hyphenatedurl{%
>        \begingroup%
>          \URLfont\OrigHyphenatedurl{#1}%
>        \endgroup}%
> 
> but that (and also with \overloaded\def\hyphenatedurl#1...) gives the 
> same (except for the line number) warning:
> 
>     csname overload > warning, protection level 3, control sequence
>     'hyphenatedurl', properties 'permanent protected', file
>     'env_layout.mkvi', line 822
> 
> So, what is the proper way to indicate intentional overloading? Or 
> should this redefinition be done in another way?


The best solution is *to not* overload commands because there are either
alternative ways to achieve the desired result or other commands which
can be used.


\overloadmode=4

\starttext

\permanent\def\mycommand#1{[#1]}

\mycommand{Old definition}

\pushoverloadmode

\aliased\let\originalmycommand\mycommand

\permanent\def\mycommand#1%
   {{\it\originalmycommand{#1}}}

\popoverloadmode

\mycommand{New definition}

\stoptext


Wolfgang


More information about the ntg-context mailing list