Label problems with \definelabel and \defineenumeration, in and out of footnotes
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. \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
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.
\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
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
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
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
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
This does nothing to address the issues with \definelabel, but \defineenumeration, together with "don't do that" for paragraph starts, may now suffice.
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
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
On 1/12/2018 10:31 PM, Rik Kabel wrote:
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? something tex ... one starts a group at the start of a paragraph while not yet in par/hmode .. \dontleavehmode forces hmode (a paragraph)
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 2018-01-12 17:46, Hans Hagen wrote:
On 1/12/2018 10:31 PM, Rik Kabel wrote:
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? something tex ... one starts a group at the start of a paragraph while not yet in par/hmode .. \dontleavehmode forces hmode (a paragraph) Understood. I was just wondering if there is a downside to using it everwhere one places an enumeration by putting it into the before key.
-- Rik
participants (2)
-
Hans Hagen
-
Rik Kabel