I, too, am struggling with external (and internal) references. I have created (and sent to Hans) a MWE that seems to identify two bugs:
1) External references: in a single product, some of these work, and *some* do not render the numbers (using \in{} [ref], for example). They are, however, identified as known or "verified". 2) Internal references: all render but *some* get "missing link target" errors (in the PDF viewer). I have not been able to get anywhere with the (lua) code, myself. Alan On Sun, 29 Jan 2023 19:03:32 +0300 Yaroslav Beltukov via ntg-context <ntg-context@ntg.nl> wrote: > Dear Hans and all contributors, > > I really appreciate ConTeXt for the right way to obtain high quality > documents. I'm a theoretical physicist and I'm going to write a book. > I think ConTeXt is the right choice to work with a number of formulas, > figures and cross-references. The visual quality of formulas is > better than in regular LaTeX. The new feature with formula > autosplitting looks also very promising. For me it is important to > obtain the high quality without a lot of manual tweaks of each > formula for each given document format and figure placement. > > However, I have found a problem with references if I compile one > component only. The references to formulas in other components have > wrong prefixes, e.g. (2.1) instead of (3.1). Needless to say, the > right formula references are very important. > > I started looking into this issue. The references to other components > are taken from the whole product as from an external document. It > turned out that this is a general problem with references with > prefixes to external documents. The prefix is stored in a tuc file as > a reference to a section as a sequential number of the header in the > document. As a result, the prefix from the external document is > calculated using the structure of the current document. > > Here is the MWE, which consists of two files: > foo.tex: > > \defineenumeration[remark][prefix=yes, prefixsegments=chapter:section] > > \starttext > > Equations: \in[eq1], \in[eq2], \in[eq3], \in[eq4] > > Sections: \in[sec1], \in[sec2], \in[sec3], \in[sec4] > > Chapters: \in[chap1], \in[chap2], \in[chap3], \in[chap4] > > Remarks: \in[remark1], \in[remark2] > > \startbodymatter > > \chapter[chap1]{Chapter} > \placeformula[eq1]\startformula x = y\stopformula > \chapter[chap2]{Chapter} > \section[sec1]{Section} > \section[sec2]{Section} > \placeformula[eq1]\startformula x = y\stopformula > \placeformula[eq2]\startformula x = y\stopformula > > \stopbodymatter > > \startappendices > > \chapter[chap3]{Chapter} > \section[sec3]{Section} > \placeformula[eq3]\startformula x = y\stopformula > \section[sec4]{Section} > \startremark[remark1]\stopremark > \placeformula[eq4]\startformula x = y\stopformula > \startremark[remark2]\stopremark > \chapter[chap4]{Chapter} > > \stopappendices > > \stoptext > > > bar.tex: > > \starttext > > Equations: \in[foo::eq1], \in[foo::eq2], \in[foo::eq3], \in[foo::eq4] > > Sections: \in[foo::sec1], \in[foo::sec2], \in[foo::sec3], > \in[foo::sec4] > > Chapters: \in[foo::chap1], \in[foo::chap2], \in[foo::chap3], > \in[foo::chap4] > > Remarks: \in[foo::remark1], \in[foo::remark2] > > % any chapters and sections here > > \stoptext > > It is expected to have the same first page on these documents: > > Equations: 1.1, 2.2, A.1, A.2 > Sections: 2.1, 2.2, A.1, A.2 > Chapters: 1, 2, A, B > Remarks: A.2.1, A.2.2 > > However, the bar.tex produces wrong prefixes to formulas and remarks. > The output depends on the document structure of bar.tex, not foo.tex. > > I started looking into the source code. Thanks to lua, it is not a > big deal to track the problem. The prefixdata is complemented by the > sectiondata after the loading the tuc file. So, the question is: is > it possible to store the full prefixdata with all necessary prefix > numbers in the tuc file? Here is my proposal to change the source > code: > > --- strc-lst-old.lmt 2023-01-29 11:30:15.610309948 +0300 > +++ strc-lst.lmt 2023-01-29 12:10:08.864228923 +0300 > @@ -266,6 +266,16 @@ > if r and not r.section then > r.section = structures.sections.currentid() > end > + -- store sectiondata in prefixdata (necessary for external files) > + if t.prefixdata and r.section then > + local sectiondata = structures.sections.collected[r.section] > + if sectiondata then > + for k, v in next, sectiondata do > + t.prefixdata[k] = v > + end > + end > + end > + -- > local b = r and t.block > if r and not b then > local s = r.section > > --- strc-ref-old.lmt 2023-01-29 11:30:15.823643904 +0300 > +++ strc-ref.lmt 2023-01-29 12:07:45.697109862 +0300 > @@ -2318,7 +2318,17 @@ > if data then > numberdata = lists.reordered(data) -- data.numberdata > if numberdata then > - helpers.prefix(data,prefixspec) > + -- helpers.prefix(data,prefixspec) > + -- use the actual numbers from prefixdata > + local prefixdata = data.prefixdata > + if prefixdata then > + -- adapted from helpers.prefix (not sure) > + if (prefixspec and prefixspec == no) or > prefixdata.prefix == no then > + prefixdata = false > + end > + sections.typesetnumber(prefixdata,"prefix", > prefixspec or false, prefixdata) > + end > + -- > > sections.typesetnumber(numberdata,"number",numberspec,numberdata) > else > local useddata = data.useddata > > After this small change, all the references are correct. However, I'm > quite new to ConTeXt, so maybe here are some caveats. It would be > great to fix the references to formulas, especially for the > forthcoming document about maths. > > Best regards, > Yaroslav Beltukov -- Alan Braslau 816 West Mountain Avenue Fort Collins, CO 80521 USA mobile: (970) 237-0957 Conserve energy! ;-) ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net ___________________________________________________________________________________