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
___________________________________________________________________________________

Reply via email to