# [NTG-context] need defaults for \definehighlight

Hans Hagen pragma at wxs.nl
Sat Feb 7 13:53:08 CET 2015

On 2/7/2015 2:07 AM, Idris Samawi Hamid ادريس سماوي حامد wrote:
> Dear gang,
>
> Thinking of present and future documents (maximum flexibility in
> converting from format to format), I'm moving from the standard {\em
> text} to something like \definehighlight[emph][style=italic]. Here's the
> question:
>
> Does ConTeXt contain some default highlights that need not be defined by
> the user? It seems that some of the basic ones should have presets. This
> helps with at least two things:
>
> 1. Document portability (independent of a given style or env file);
> 2. Editor setups.
>
> As an example of the latter: If I select text in Notepad++ I can do
>
> Right-Click -> ConTeXt Typography -> Emphasize
>
> where Emphasize is defined as {\em }
>
> Right now, whenever I release an update to the N++ editor package (now
> years overdue, I know) any user can depend upon this right-click
> feature. But if I define
>
> \definehighlight[emph][style=italic]
>
> and set up the editor to implement it; then there is no guarantee that
> other users will use the same definition.
>
> As issues of conversion from one format to another become ever more
> urgent and common, it makes more sense to use tagged and exportable
> versions of the common typographical functions and to standardize a few.
> So my suggestion is that we develop a set of default or "official"
> highlights for commonly used cases, with a list made available somewhere
> such as the wiki. Perhaps redefine some existing 1-parameter typography
> commands (\emph, \bold, \scap, etc.) as highlights. Some of these should
> be kept short (such as \emph, \bold) given their very frequent use.

Well, if you talk about automatic injection of commands 'short' is
irrelevant and also likely to clash.

Anyway, the problem with predefined highlights is that we won't overload
existing commands by default, so redefining is not an option in the core.

An option is to provide a set like:

\unprotect

\definehighlight[\v!italic    ][\c!command=\v!no,\c!style=\v!italic]
\definehighlight[\v!bold      ][\c!command=\v!no,\c!style=\v!bold]
\definehighlight[\v!bolditalic][\c!command=\v!no,\c!style=\v!bolditalic]
\definehighlight[\v!mono]      [\c!command=\v!no,\c!style=\v!mono]
\definehighlight[\v!monobold]  [\c!command=\v!no,\c!style=\v!monobold]

\definehighlight[important]    [\c!command=\v!no,\c!style=\v!bold]
\definehighlight[unimportant]  [\c!command=\v!no,\c!color=darkgray]
\definehighlight[warning]
[\c!command=\v!no,\c!style=\v!bold,\c!color=darkblue]
\definehighlight[error]
[\c!command=\v!no,\c!style=\v!bold,\c!color=darkred]

\protect

\starttext

\highlight[italic]     {italic}
\highlight[bolditalic] {bolditalic}
\highlight[bold]       {bold}
\highlight[mono]       {mono}
\highlight[monobold]   {monobold}
\highlight[important]  {important}
\highlight[unimportant]{unimportant}
\highlight[warning]    {warning}
\highlight[error]      {error}

\stoptext

Keep in mind that coding in terms of 'emph' is rather useless with
respect to highlights. Highlights relate to structure (while \it
doesn't) so you need tags like 'important' and so.

Also, by defining highlights with the command = no option will provide a
bit more protection.

But we need to agree on some kind of reasonable set first.

Hans

-----------------------------------------------------------------