[NTG-context] Label problems with \definelabel and \defineenumeration, in and out of footnotes

Rik Kabel context at rik.users.panix.com
Fri Jan 12 20:24:16 CET 2018


On 2018-01-12 13:27, Hans Hagen wrote:
> On 1/12/2018 6:58 PM, Rik Kabel wrote:
>> Bump.
>>
>> On 2015-08-11 14:45, Rik Kabel wrote:
>>> The example below documents the problems. In short, \definelabel 
>>> suppresses paragraph indent when the label is at the beginning of a 
>>> paragraph and fails to print the label or generate references with 
>>> alternative=inmargin (or inright, or inleft) when in a footnote.
>>>
>>> \defineenumeration fails to work in a footnote.
>
> use
>
> \ID ... \par
>
> as it has to know where it ends which is a paragraph end
>
> or use
>
> \startID ... \stopID
>
>>>
>>>     \setupindenting[yes,small]
>>>     \definelabel   [ID][
>>>     %\defineenumeration[ID][
>>>        text=,
>>>        after=,
>>>        before=,
>>>        headcolor=red,
>>>        alternative=inright,
>>>       ]
>>>     \starttext
>>>     \starttitle[title={Label testing}]
>>>     \startsubject[title={Problems with \tex{definelabel}}]
>>>
>>>       This is a test. It is only a test.
>>>
>>>       \ID[id1]This paragraph should be indented, with an ID number
>>>         in the margin. When \tex{ID} is placed at the beginning of the
>>>         paragraph, as it is here, the paragraph is not indented.
>>>
>>>       This paragraph has a footnote.\footnote{%
>>>           \ID[id2]The ID number is not printed in the margin with
>>>             {\tt alternative=inright}, {\tt alternative=inmargin},
>>>             or {\tt alternative=inleft}. Without any {\tt
>>>             alternative} the ID number is printed where the macro
>>>             appears. The positioning is unsatisfactory using {\tt
>>>             alternative=right}.%
>>>         } The footnote has an ID number which should be printed in the
>>>         right margin.
>>>
>>>       This \ID[id3]paragraph has an ID, but it is not at the beginning
>>>         of the paragraph and the paragraph is properly indented. The
>>>         value of the ID number indicates that \tex{ID} in the footnote
>>>         of the previous paragraph incremented the associated counter,
>>>         but the failure of the references (\tex{in} and \tex{at}) to 
>>> id2
>>>         suggests that there are other problems.
>>>
>>>       \dorecurse{3}{
>>>         ID id#1 is \in[id#1] and is on page \at[id#1].\par}
>>>
>>>       References for footnotes are generated without \tt{alternative=}.
>>>
>>>     \stopsubject
>>>     \startsubject[title={Problems with \tex{defineenumeration}}]
>>>
>>>       When \tex{definelabel} is changed to \tex{defineenumeration},
>>>         the example fails to compile. It does not properly handle
>>>         the \tex{ID} in the footnote, complaining of an extra \} or
>>>         forgotten \tex{endgroup}.
>>>
>>>     \stopsubject
>>>     \stoptitle
>>>     \stoptext
>>>
>>> -- 
>>> Rik
Thank you Hans.

With \defineenumeration, adding an explicit \par for the footnote allows 
the index to print in the margin, and it works as well with 
multi-paragraph footnotes using \epar and \bpar.

However, this does not address the failure to indent when the ID starts 
a paragraph.

This does nothing to address the issues with \definelabel, but 
\defineenumeration, together with "don't do that" for paragraph starts, 
may now suffice.

-- 
Rik




More information about the ntg-context mailing list