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 ___________________________________________________________________________________