# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: OpenMDW-1.1 """Strict rich_tabular_v3 reverse reader. Other LaTeX uses the legacy parser.""" import html,re TAGS={'textstrong':'b','textem':'i','textbf':'b','textit':'i','underline':'u','sout':'s', 'textsuperscript':'sup','textsubscript':'sub'} LITERALS={'textbackslash':'\\','textasciitilde':'~','textasciicircum':'^', 'textless':'<','textgreater':'>'} def split_top(text,delimiter): parts=[];start=0;depth=0;i=0 while i=len(text) or text[pos]!='{':raise ValueError('expected_braced_argument') start=pos+1;depth=1;pos+=1 while pos'] if not rows or len(rows)>4096 or columns>512:raise ValueError('generated_grid_size') for r,row in enumerate(rows): out.append('');c=0 for part in split_top(row,'&'): rs,cs,content,header=cell_parts(part) if rs<1 or cs<1 or r+rs>len(rows) or c+cs>columns:raise ValueError('invalid_generated_span') if (r,c) in occupied: if content or header or rs!=1:raise ValueError('nonempty_span_placeholder') if any((r,cc) not in occupied for cc in range(c,c+cs)):raise ValueError('invalid_span_placeholder') c+=cs;continue if any((rr,cc) in occupied for rr in range(r,r+rs) for cc in range(c,c+cs)): raise ValueError('overlapping_generated_span') tag='th' if header else 'td' out.append('<'+tag+' rowspan="'+str(rs)+'" colspan="'+str(cs)+'">'+content+'') for rr in range(r,r+rs): for cc in range(c,c+cs):occupied.add((rr,cc)) c+=cs if c!=columns:raise ValueError('generated_column_count') out.append('') return ''.join(out)+''