Hi Pablo,
I don’t claim to have a definitive answer here — I’ve simply been
experimenting over the past months, trying to understand what is
structurally involved, and I thought a small MWE prototype might help
clarify things.
What I currently have is very simple. In the running text, each
annotated word sends its information into one of several note channels
(for example: /critical/, /explanatory/, /translation/).
These notes are not printed immediately as footnotes; instead they are
stored (|location=text|). At the end of the textual unit, they are
printed under explicit headings:
*
Critique
*
Explicatif
*
Traduction
So the headings themselves are just empty containers: what fills them is
whatever has been collected earlier via |\critnote|, |\explnote|,
|\transnote| (or small wrapper macros around them).
Conceptually, this gives something like:
*
the main text = reading flow
*
several parallel annotation streams = editorial layers
*
a final “apparatus” that replays each stream separately
From there, moving toward a glossary seems to be only one extra step:
instead of (or in addition to) sending content into notes, the same data
can also be sent into a small Lua bucket (key → lemma + gloss), reset
per block, and printed as a local vocabulary list. That gives a “collect
→ print → reset → repeat” pattern, close to the glossary developed by
Steadman.
What strikes me, while experimenting, is the specific difficulty of
/short textual units/ (chapters, sections, passages). In that case the
glossary is not global by nature: it is local, temporary, and tightly
coupled to the immediately preceding text. This feels quite different
from classical registers, which assume long-range accumulation across a
whole document. So my tentative impression (very provisional) is that
these local reading aids solve a different problem than global indexes:
*
ordered by appearance,
*
scoped to a block,
*
frequently reset,
*
aimed at immediate pedagogical use.
Once this distinction is made, it becomes easier to see why standard
registers don’t quite fit this use case, and why a lightweight Lua layer
may help — though I’m still very much in exploration mode here.
See below the MWE file I’m playing with (I will deliver another MWE
later with a glossary extracted with Lua code).
Best,
JP
% notes-critiques-example-v2.tex
% Grec 1 colonne — notes multi-niveaux stockées (location=text)
% puis imprimées sous rubriques via \placenotes
\mainlanguage[agr]
\setuppapersize[A4]
\definefontfamily[mainface][serif][Libertinus Serif]
\setupbodyfont[mainface,11pt]
\setuplayout[
topspace=1.5cm,
backspace=2cm,
width=middle,
header=1cm,
footer=1.2cm,
height=middle,
]
\setupalign[hz,hanging]
\setuptolerance[verytolerant]
% --- Trois séries de notes
\definenote[critnote]
\definenote[explnote]
\definenote[transnote]
% IMPORTANT : on STOCKE les notes au fil du texte (pas en bas de page)
% pour pouvoir les imprimer ensuite en fin d'unité.
\setupnote[critnote] [location=text, number=no, style=\tfxx]
\setupnote[explnote] [location=text, number=no, style=\tfxx]
\setupnote[transnote][location=text, number=no, style=\tfxx]
% --- Macros : forme (#1), lemme (#2), glose (#3)
\unexpanded\def\Gcrit#1#2#3{#1\critnote{\emph{#1} (\emph{#2}).~#3}}
\unexpanded\def\Gexpl#1#2#3{#1\explnote{\emph{#1} (\emph{#2}).~#3}}
\unexpanded\def\Gtrans#1#2#3{#1\transnote{\emph{#1} (\emph{#2}).~#3}}
% --- Apparat final (fin d'unité) : ICI les rubriques se remplissent
\unexpanded\def\ApparatNotes{%
\blank[big]\hrule\blank[small]
{\bf Critique}\par
\placenotes[critnote]
\blank[small]
{\bf Explicatif}\par
\placenotes[explnote]
\blank[small]
{\bf Traduction}\par
\placenotes[transnote]
}
\starttext
\chapter{Exemple — Rubriques "critique", "explicatif", "traduction"}
τὰ \Gexpl{ὁμώνυμα}{ὁμώνυμος}{Même nom, mais définition (λόγος) différente.}
λέγεται, ὅταν τὸ \Gexpl{ὄνομα}{ὄνομα}{Le “nom” au sens de signifiant
commun.} μόνον κοινόν ᾖ,
ὁ δὲ τῆς \Gexpl{οὐσίας}{οὐσία}{Ici : “essence / être” selon le contexte
; terme philosophiquement chargé.}
\Gexpl{λόγος}{λόγος}{Souvent : formule définitionnelle (pas “raison” au
sens moderne).}
ἕτερος.
\blank[line]
τὰ δὲ \Gexpl{συνώνυμα}{συνώνυμος}{Même nom et même définition ;
opposition structurante avec ὁμώνυμα.}
ὧν καὶ τὸ ὄνομα κοινόν, καὶ ὁ τῆς οὐσίας λόγος ὁ αὐτός·
τὰ δὲ \Gexpl{παρώνυμα}{παρώνυμος}{Dérivés : mots formés à partir d’un
autre (nom → adjectif, etc.).}
ἀπὸ τῶν ὀνομάτων μετωνομασμένα.
% --- Critique (leçon / édition)
\Gcrit{ἕτερος}{ἕτερος}{Variante de leçon selon les éditions : à
harmoniser avec l’édition de référence.}
\Gcrit{μετωνομασμένα}{μετονομάζω}{Graphie/accents parfois divergents :
vérifier la normalisation polytonique adoptée.}
% --- Traduction (français)
\Gtrans{ὁμώνυμα}{ὁμώνυμος}{Souvent “homonymes”, mais la logique est
celle des “équivoques” (nom commun, définition différente).}
\Gtrans{λόγος}{λόγος}{Ici : “définition” ; ailleurs : “raison”,
“discours”, “compte”.}
\Gtrans{παρώνυμα}{παρώνυμος}{“Paronymes” est technique ; “dérivés” est
plus lisible selon le public.}
% --- Impression en fin d'unité : rubriques remplies
\ApparatNotes
\stoptext
Le 30/01/2026 à 18:45, Pablo Rodriguez via ntg-context a écrit :
On 1/30/26 10:47, Mikael Sundqvist wrote:
Hi Pablo,
Not sure I understand what you are after with the notes. Does this do
what you want?
Hi Mikael,
I‘m afraid I only get the same as with my sample.
I would like to have invidiual notes synced, such as with these body texts:
\definecolumnset
[parallel]
[n=1,
align={lesswidows,lessclubs,lessbroken,lessorphans}]
\definesubcolumnset[parallel][L][1]
\definesubcolumnset[parallel][R][2]
\startsetups balance:example
\balancetopskip \strutht
\balancebottomskip \strutdp
\stopsetups
\starttext
\page[even]
\startcolumnset[parallel]
\dorecurse{50}
{\startsubcolumnset[L]
\samplefile{knuth}
\stopsubcolumnset
\startsubcolumnset[R]
\samplefile{zapf}
\stopsubcolumnset
\flushsubcolumnsets[spread]}
\stopcolumnset
\stoptext
I wonder wether this is possible.
Many thanks for your help,
Pablo
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist :[email protected]
/https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage :https://www.pragma-ade.nl /https://context.aanhet.net (mirror)
archive :https://github.com/contextgarden/context
wiki :https://wiki.contextgarden.net
___________________________________________________________________________________
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : [email protected] /
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________