El vie, 22 de ene. de 2021 a la(s) 17:39, Wolfgang Schuster (wolfgang.schuster.lists@gmail.com) escribió:
Jairo A. del Rio schrieb am 22.01.2021 um 23:14:
> How strange. I guess you don't have your modules installed. In such a
> case, you could install them from modules.contextgarden.net
> <http://modules.contextgarden.net> and put content under texmf-modules
> so after mtxrun --generate and context --make examples work.

The core function of the annotation module (custom environment
with key-val-arguments) is part of ConTeXt but it doesn't create
new environment commands.

\defineuserdata
   [zzz]
   [alternative=zzz,
    after={\blank[10mm]}]

\defineuserdataalternative[zzz][renderingsetup=userdata:zzz]

\startsetups[userdata:zzz]
     \hrule
     \doifsomething{\userdataparameter{title}}
       {\bold{\strut\userdataparameter{title}}
        \blank}
     \strut\getuserdata
\stopsetups

\starttext

\startuserdata[zzz]
\input weisman
\stopuserdata

\startuserdata[zzz][title=Ward]
\input ward
\stopuserdata

\stoptext


 > Another possibility is to use \do...empty and such, but it feels odd
 > when a module for that is already available.

No \do...empty (LMTX only):

\tolerant\protected\def\startzzz#=%
   {\hrule
    \doifsomething{#1}{\bold{\strut#1}\blank}}

\protected\def\stopzzz
   {\blank[10mm]}

\starttext

\startzzz
\input weisman
\stopzzz

\startzzz{Ward}
\input ward
\stopzzz

A nicer way to go, indeed.
 
\stoptext


Wolfgang


Jairo