Follow-up 2:

The 24 remaining complaints are caused by nesting

\startparagraph
This 
\startformula
1+1=2
\stopformula
is true.
\stopparagraph

Not a big deal either.

Fingers crossed, I have my first compliant PDF. The structure I can see in 
Acrobat looks good, too.

Matthias

> On Aug 13, 2025, at 2:03 PM, Matthias Weber <matthiaswebe...@gmail.com> wrote:
> 
> Follow-up: The 66 complaints come from \startsection .. \stopsection pairs 
> (and \startsubsection .. \stopsubsection).
> Adding just one of them increases the number of complaints by two.
> 
> Instead of your
> 
> \setupheads
>  [section,subsection]
>  [color=darkred]
> 
> \setuphead
>  [section]
>  [style=\bfb]
> 
> \setuphead
>  [subsection]
>  [style=\bfa]
> 
> 
> 
> I use 
> 
> \setuphead[subsection][number=yes,
>                               page=yes,
>                               before={\noindentation\hairline\blank},
>                               
> after={\nowhitespace\hairline\blank[line]\indentation}]
>                               
>                               
> \setuphead[section][number=yes,
>                               page=yes,
>                               before={\noindentation\hairline\blank},
>                               
> after={\nowhitespace\hairline\blank[line]\indentation}]
> 
> 
> which is causing trouble somehow. No big deal.
> 
> Matthias
> 
> 
>> On Aug 13, 2025, at 1:40 PM, Matthias Weber <matthiaswebe...@gmail.com> 
>> wrote:
>> 
>> Thank you so much Hans & Mikhael!
>> 
>> I tested one of my lecture notes and get two complaints from VeraPDF:
>> (90 failed checks and 577444 passed checks…)
>> 
>> 
>> Specification: ISO 32005:2023, Clause: Table 5. P-Div, Test number: 1        
>> <P> shall not contain <Div>  Failed
>> 24 occurrences       Hide
>> SEDiv        
>> parentStandardType != 'P'    
>> root/document[0]/StructTreeRoot[0](231 0 obj PDStructTreeRoot)/K[0](239 0 
>> obj SEDocument document)/K[0](240 0 obj SEPart documentpart)/K[21](605 0 obj 
>> SESect section)/K[1](611 0 obj SEDiv sectioncontent)/K[3](1770 0 obj SESect 
>> section)/K[1](1775 0 obj SEDiv sectioncontent)/K[4](1876 0 obj SEP 
>> paragraph)/K[2](1885 0 obj SEDiv formula)
>> 
>> 
>> and
>> 
>> Specification: ISO 14289-2:2024, Clause: 8.2.2, Test number: 1       
>> Content that is not considered real shall be an artifact     Failed
>> 66 occurrences       Hide
>> SESimpleContentItem  
>> isTaggedContent == true || parentsTags.contains('Artifact') == true  
>> root/document[0]/pages[1](2 0 obj PDPage)/contentStream[0](407 0 obj 
>> PDSemanticContentStream)/content[3]/contentItem[0]
>> 
>> 
>> I am absolutely clueless about these two. Is there a way to find out what 
>> the problem is and how I can fix it?
>> 
>> Thanks again,
>> 
>> Matthias
>> 
>> 
>> 
>> 
>> 
>>> On Aug 13, 2025, at 11:12 AM, Hans Hagen via ntg-context 
>>> <ntg-context@ntg.nl> wrote:
>>> 
>>>     Hi,
>>> 
>>> Due to some pressure on this list we have been looking into reasonable 
>>> mapping from context structure onto what pdf sees as structure as of 2025. 
>>> This is not without risk as the pdf standard, tools, interpretations, 
>>> whatever are in constant flux. We don't fall into the target audience so 
>>> our decisions are guess work at best.
>>> 
>>> That said, we now do the following. If you enable tagging
>>> 
>>> \setuptagging[state=start]
>>> 
>>> you get normal tagging, without so called rolemapping. This can work out ok 
>>> with (future) more clever parsers of the content stream (think llm). It 
>>> doesn't pollute the pdf too much but of course bloats it.
>>> 
>>> Then, if you want to go fuzzy, you can say
>>> 
>>> \setupbackend
>>> [format=pdf/ua-2]
>>> 
>>> \setuptagging
>>> [state=start]
>>> 
>>> This gives some basic mapping. Then there is a basic mapping that or with 
>>> Mikael figured out and tested on lecture notes and a math book. Of course 
>>> runtime increases (so the book now needs 14 sec instead of 8 but so be it 
>>> we might be able to improve that a little bit but all that math ... it's 
>>> not like one tags all day).
>>> 
>>> \setuptagging
>>> [state=start,
>>> preset=basic,
>>> % preset={basic,\jobname},
>>> comment={just a basic test document}]
>>> 
>>> You can kick in your own mappings, e.g. which could already be done with 
>>> commands but we now prefer using an "imp" file as hard pdf mapping doesn't 
>>> belong in a document setup. You, as user / author knows best what mapping 
>>> is nneeded and can work. There is tagging-basic.tex document that explains 
>>> this.
>>> 
>>> We advise to delay tagging (if needed at all, which in my case is never) to 
>>> when a document is finished (maybe by wrapping in a mode tagging) so that 
>>> no runtime is wasted during writing / designing.
>>> 
>>> You can test / check some with
>>> 
>>> mtxrun --script pdf --structure [--detail --save]  yourdocument
>>> mtxrun --script pdf --validate  [--interaction]    yourdocument
>>> 
>>> where the second one calls for verapdf, or simply test with
>>> 
>>> mtxrun --script pdf --check yourdocument
>>> 
>>> this is only for testing purposes; we might add some to it depending on our 
>>> own or user demand. The possibly generated file serves no other purpose 
>>> (and obeys crap-in-crap-out).
>>> 
>>> Of course, different versions of verapdf can result in different results
>>> 
>>> By default we ignore interaction because that is a mess in tagged pdf but 
>>> you can use option=interaction to get something if needed. We think that 
>>> when a document validates with exception of link/references no one is 
>>> harmed.
>>> 
>>> After the context meeting we will freeze the basic mapping but one can of 
>>> course always modulate on it,
>>> 
>>> Hans & Mikael
>>> 
>>> (who will now pick up on more rewarding and fun things that we'd put in the 
>>> hold)
>>> 
>>> -----------------------------------------------------------------
>>>                                        Hans Hagen | PRAGMA ADE
>>>            Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>>>     tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
>>> -----------------------------------------------------------------
>>> 
>>> ___________________________________________________________________________________
>>> If your question is of interest to others as well, please add an entry to 
>>> the Wiki!
>>> 
>>> maillist : ntg-context@ntg.nl / 
>>> https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
>>> webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
>>> archive  : https://github.com/contextgarden/context
>>> wiki     : https://wiki.contextgarden.net
>>> ___________________________________________________________________________________
>> 
> 

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to