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

Rik Kabel context at rik.users.panix.com
Fri Jan 12 22:31:28 CET 2018


On 2018-01-12 15:50, Hans Hagen wrote:
> On 1/12/2018 8:24 PM, Rik Kabel wrote:
>> 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.
>
> maybe putting a \dontleavehmode in front helps

Indeed. Thank you. Adding it to the before key of \defineenumeration 
appears to have no unwanted side effects. Can you think of a reason not 
to do that?

-- 
Rik


More information about the ntg-context mailing list