[NTG-context] Last attempt: numbered margin notes in ConTeXt?

Aditya Mahajan adityam at umich.edu
Fri Jun 6 00:30:59 CEST 2008


On Thu, 5 Jun 2008, Joachim Kreimer-de Fries wrote:

>
> In friendly and helpfully answering to my late night question
>
>>> How to create _numbered_ margin notes in ConTeXt?
>
> Hans Hagen wrote 05.06.2008 at 10:04:
>> quick and dirty command (instead one can use enumerations and do some
>> complex setup)
>
> Before ending this day, I want to thank you for your endeavour (also
> for Taco's attentive regret).
>
> Dear Hans, you know what your code produces:
>
> - indeed, the marginal notes are numbered (I can live with the fact
> that this is not the kind numbering of notes (cf. footnotes) one -
> the reader - expects);
>
> - indeed the notes are no longer printed one over the other.
>
> BUT:
>
> - the accent sign ( ´ ) placed in the text body before the next word
> following that wich is explained in the marginal note will not be
> accepted and understood by the readers. It must, of course, be a
> superscripts number (the same number as in the referencing marginal
> note).

A slight bug in Hans's code. See below.

> AND:
>
> You won't really expect that someone outside the circle of you
> programmers who have developed ConTeXt, i. e. a simple (beginning)
> user of ConTeXt - even if highly willing to learn, is able to change
> this code in a way to get the wanted results (which I had illustrated
> with the pdf-file produced under extremly frustrating formating
> effort with OpenOffice Writer).
>
>
> With two exceptions (\def and \setupinmargin) I did not find any of
> the used commands documented in "ConTEXt - the manual" or the
> "commands" quick reference of 2001. I could not verify in the http://
> texshow.contextgarden.net/
> because not available - as almost everytime. But from my last
> remember, when it - for once - was available, they are not in there,
> neither.

The user manual is for already existing features. In order to understand 
how to *extend* context, you need to know how the internals work. See
http://wiki.contextgarden.net/Inside_ConTeXt


Let me try to explain the code (slightly adapted). First the adapted code:

\newcounter\MyMarginalNote

\def\mnote{\dosingleempty\domnote}

\def\domnote[#1]#2%
   {\doglobal\increment\MyMarginalNote
    \high{\MyMarginalNote}%
    \inmargin
       {\MyMarginalNote:
        \doifsomething{#1}
         {\expanded{\textreference[#1]{\MyMarginalNote}}}#2}}



Now the explaination:

\newcounter\MyMarginalNote

Defines a new counter called MyMarginalNode. Hans did not use this because 
he knows how \increment works internally, but explicitly stating this 
helps in understanding.

\def\mnote{\dosingleempty\domnote}

This is the standard method in context of dealing with optimal arguments. 
See http://wiki.contextgarden.net/Commands_with_optional_arguments

\def\domnote[#1]#2%

#1 is the optional argument (in square brackets), and #2 is the required 
arugment (in curly brackets)

   {\doglobal\increment\MyMarginalNote

Increment the counter MyMaginalNote. The \doglobal is there so that the 
counter is incremented even when the mnote occurs inside a group, for 
example, something like

\startframedtext
   blah blah\mnote{abc}
\stopfamedtext

    \high{\MyMarginalNote}%

Place the number as a superscript.

    \inmargin

Place the contents in the margin

       {\MyMarginalNote:

Place margin note number followed by colon

        \doifsomething{#1}
         {\expanded{\textreference[#1]{\MyMarginalNote}}}

if #1 is something (that is, #1 is not empty) create a textreference #1 
with the text \MyMarginNote. The expanded is there so that the reference 
is to the value of MyMarginNote when the margin note was created and not 
want the value of text reference was asked.

        #2}}

Place #2, that is the contents of the note.


> On the one hand I have still the impression, that ConTeXt is a highly
> adaptable and flexible typesetting system within TeX (probably my
> intents with marginal notes as help for understanding texts could
> find a solution),
>
> on the other hand I'm almost giving up with my intention, because the
> only program/system with wich I a had hope to resolve this problem is
> not configurable for me, because ... I'm not a programmer or software
> developer, because you ConTeXt-developers don't care enough about
> usable, applicable documentation, because the cultural, didactical
> value of the old (hand-)  typesetting technique of marginal notes has
> come out of fashion, what ever...

This is not configurable because it was more like a proof of concept 
solution. There is no documentation because of the same reason.

> N. B. I recommend the provision in ConTeXt for marginal notes in my
> intented sense warmly to you: they are an acquirement of civilization
> with big possibilities for the future and no other - at least no word
> processing program - is able to handle them yet in a acceptable manner!

Hans, would it be too difficult to incorporate marginal notes in the core, 
so that one could define \definenote[mnote][location=margin]. Most of the 
pieces are already there.

> Nevertheless, be it pure curiousness or still persistant hope in
> acquiring the skills for ConTeXt, I would like to know:
>
> 1.
> in your sample code, Hans:
> between \starttext and \stoptext you write once (the first time of
> occurrence):
>> bla bla bla \mnote{xxx} bla bla
>
> but in the second time:
>> bla bla bla \mnote[foo]{xxx} bla bla bla
>
> and then again:
>
>> bla bla bla \mnote{xxx}
>
> Has the [foo] after the first \mnote any relevance and which?

This is the standard approach in ConTeXt of providing a means to reference 
the notes later if you want. As you observed

> 2.
> the last row of your "document" text is:
>
>> in \in {note} [foo]
>
> in my pdf-output this appears as :
>
> "in note 2"
>
> This is not reasonable and desired (it should not appear). Was it a
> "slip of the pen" on your side or any purpose, if yes, which one?

one can use \in {note} [foo] to recall the number of the note. In case you 
do not need it, simply do not type it.


More information about the ntg-context mailing list