ó
    �®žjI6  ã                  óT  • S SK Jr  S SKrS SKrS SKJr  S SKJrJrJ	r	  S SK
Jr  S SKJrJrJrJrJrJrJr  S SKJrJrJrJr  \(       a  S SKJrJr  S S	KJr  S S
KJr  S SKJ r J!r!   S SK"J#r#J$r$  \RL                  " \'5      r(\RR                  " S5      r* " S S5      r+g! \% a     N7f = f)é    )ÚannotationsN)ÚPath)ÚTYPE_CHECKINGÚOptionalÚcast)ÚCodeLanguageLabel)ÚCodeMetaFieldÚDocItemLabelÚDoclingDocumentÚ
FormattingÚ
GroupLabelÚNodeItemÚPictureMeta)ÚENV_LISTÚENV_MATHÚ	ENV_QUOTEÚENV_THEOREM)ÚFutureÚThreadPoolExecutor)ÚAny©ÚTectonicEngine)ÚBaseBackendOptionsÚLatexBackendOptions)ÚLatexEnvironmentNodeÚLatexMacroNodez\\end\s*\{\s*tikzpicture\s*\}c                  ó�  • \ rS rSr% \(       aG  S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'      S           SS jjrSS jrS S jrSS jr	S!S jr
S"S#S jjr   S$         S%S jjr   S$         S%S jjrS&S jrS"S'S jjr   S$         S%S jjr   S$         S%S jjr  S(       S)S jjrSrg)*ÚEnvironmentHandlerMixiné+   r   ÚoptionsÚstrÚlatex_preambler   Úpath_or_streamzTectonicEngine | NoneÚ_tectonic_enginezThreadPoolExecutor | NoneÚ_tikz_executorzlist[Future[Any]]Ú_tikz_futuresc                ó   • g ©N© )ÚselfÚnodesÚdocÚparentÚ
formattingÚ
text_labels         Úh/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/latex/handlers/environments.pyÚ_process_nodesÚ&EnvironmentHandlerMixin._process_nodes4   s   € ð ó    c                ó   • g r(   r)   ©r*   Ú	latex_strÚenv_names      r0   Ú_clean_mathÚ#EnvironmentHandlerMixin._clean_math<   s   € ÀSr3   c                ó   • g r(   r)   ©r*   Únodes     r0   Ú_parse_tableÚ$EnvironmentHandlerMixin._parse_table=   s   € °#r3   c                ó   • g r(   r)   r5   s      r0   Ú_extract_verbatim_contentÚ1EnvironmentHandlerMixin._extract_verbatim_content>   s   € ÐSVr3   c                ó   • g r(   r)   r;   s     r0   Ú_extract_macro_argÚ*EnvironmentHandlerMixin._extract_macro_arg?   s   € ¸r3   c                óZ  • Ub  US:”  a  g U GH  n[        U[        5      (       a  UR                  S:X  a  Us  $ [        US5      (       a;  UR                  (       a*  U R                  UR                  US-   5      nU(       a  Us  $ [        US5      (       d  MŒ  UR                  (       d  MŸ  [        UR                  SS 5      nU(       d  M¿  U HU  n[        US5      (       d  M  UR                  (       d  M)  U R                  UR                  US-   5      nU(       d  MQ  Us  s  $    GM     g )Né
   ÚdocumentÚnodelisté   ÚnodeargdÚargnlist)Ú
isinstancer   ÚenvnameÚhasattrrH   Ú_find_document_envrJ   Úgetattr)r*   r+   Údepthr<   ÚresultrK   Úargs          r0   rO   Ú*EnvironmentHandlerMixin._find_document_envA   sâ   € Ø‰=˜E B›JØÜˆDÜ˜$Ô 4×5Ñ5¸$¿,¹,È*Ó:TØ’Ü�t˜Z×(Ñ(¨T¯]¯]Ø×0Ñ0°·±ÀÈÁ	ÓJ�ÞØ!’MÜ�t˜Z×(Ó(¨T¯]¯]©]Ü" 4§=¡=°*¸dÓC�ß�8Û'˜Ü" 3¨
×3Ó3¸¿¿¹Ø%)×%<Ñ%<¸S¿\¹\È5ÐSTÉ9Ó%U˜Fß%˜vØ'-¤ô	  (ñ ð r3   Nc                ó˜  • UR                   S:X  a  U R                  UR                  X#XE5        g UR                   S:X  a/  UR                  USSS9  U R                  UR                  X#XE5        g UR                   R	                  SS5      [
        ;   aJ  U R                  UR                  5       UR                   5      nUR                  U[        R                  US9  g UR                   S	:X  aJ  U R                  UR                  5       UR                   5      nUR                  U[        R                  US9  g UR                   S
:X  a  U R                  UR                  X#XE5        g UR                   R	                  SS5      [        ;   ak  UR                   R	                  SS5      R                  5       nUR                  U[        R                  SU S3S9  U R                  UR                  X#XE5        g UR                   S:X  aƒ  UR                  U[        R                  SS9  U R                  UR                  X#XE5        U(       a  UR                  5       OSnSU;  a'  SU;  a   UR                  U[        R                  SS9  g g g UR                   [        ;   a  U R                  UR                  X#XE5        g UR                   [        ;   a  U R!                  XX4U5        g UR                   S:X  a)  U R#                  U5      n	U	(       a  UR%                  X9S9  g g UR                   S;   a  U R                  UR                  X#XE5        g UR                   S;   a  U R'                  XX4U5        g UR                   S:X  a  U R)                  XX4U5        g UR                   S;   aJ  U R+                  UR                  5       UR                   5      n
UR                  U[        R,                  U
S9  g UR                   S:X  a$  UR                  USSS9  U R/                  XX45        g UR                   S;   a  g U R                  UR                  X#XE5        g )NrG   ÚabstractÚAbstractrI   )r-   ÚtextÚlevelÚ*Ú )r-   ÚlabelrX   ÚmathÚsubequationsz**z.**Úproofz*Proof.*z\qedz
\qedsymbolu   â—»Útabular)r-   Údata)Útableztable*)Úfigurezfigure*Útikzpicture)ÚverbatimÚ
lstlistingÚmintedÚthebibliographyÚ
References)Úfilecontentszfilecontents*)rM   r1   rH   Úadd_headingÚreplacer   r8   Úlatex_verbatimÚadd_textr
   ÚFORMULAr   Ú
capitalizeÚTEXTr   r   Ú_process_listr=   Ú	add_tableÚ_process_figureÚ_process_tikzpicturer@   ÚCODEÚ_process_bibliography)r*   r<   r,   r-   r.   r/   Ú	math_textÚ	env_titleÚ
body_latexÚ
table_dataÚ	code_texts              r0   Ú_process_environmentÚ,EnvironmentHandlerMixin._process_environmentU   sŒ  € ð �<‰<˜:Ó%Ø×Ñ §¡¨s¸JÕSà�\‰\˜ZÓ'Ø�O‰O 6°
À!ˆOÑDØ×Ñ §¡¨s¸JÕSà�\‰\×!Ñ! # rÓ*¬hÓ6Ø×(Ñ(¨×)<Ñ)<Ó)>ÀÇÁÓMˆIØ�L‰L ¬l×.BÑ.BÈˆLÒSà�\‰\˜VÓ#Ø×(Ñ(¨×)<Ñ)<Ó)>ÀÇÁÓMˆIØ�L‰L ¬l×.BÑ.BÈˆLÒSà�\‰\˜^Ó+Ø×Ñ §¡¨s¸JÕSà�\‰\×!Ñ! # rÓ*¬kÓ9ØŸ™×,Ñ,¨S°"Ó5×@Ñ@ÓBˆIØ�L‰LØÜ"×'Ñ'Ø˜)˜ CÐ(ð ñ ð
 ×Ñ §¡¨s¸JÕSà�\‰\˜WÓ$Ø�L‰LØÜ"×'Ñ'Øð ñ ð
 ×Ñ §¡¨s¸JÔSÞ26˜×,Ñ,Ô.¸BˆJØ˜jÓ(¨]À*Ó-LØ—‘Ø!Ü&×+Ñ+Ø!ð ò ð .MÐ(ð �\‰\œYÓ&Ø×Ñ §¡¨s¸JÕSà�\‰\œXÓ%Ø×Ñ˜t¨&¸jÕIà�\‰\˜YÓ&Ø×*Ñ*¨4Ó0ˆJÞØ—‘ V�Ò=ð ð �\‰\Ð0Ó0Ø×Ñ §¡¨s¸JÕSà�\‰\Ð2Ó2Ø× Ñ  ¨FÀ
ÕKà�\‰\˜]Ó*Ø×%Ñ% d°ÀZÕPà�\‰\ÐAÓAØ×6Ñ6Ø×#Ñ#Ó% t§|¡|óˆIð �L‰L ¬l×.?Ñ.?ÀiˆLÒPà�\‰\Ð.Ó.Ø�O‰O 6°ÀAˆOÑFØ×&Ñ& t°&ÕEà�\‰\Ð>Ó>Øð ×Ñ §¡¨s¸JÕSr3   c                óŒ  • U R                  U5      nUc3  [        R                  S5        U R                  UR                  X#XE5        g [        SU R                  5      nUR                  S:X  aõ   SSKJ	n  U R                  c   U" UR                  UR                  S9U l
        UR                  US9n	S n
U R                  nS n[        U R                   ["        5      (       a  U R                   R$                  nU R&                  (       aF  U R&                  R)                  U
U R                  UU	UU5      nU R*                  R-                  U5        g U
" U R                  XiX¼5        g UR                  US9n	[1        [3        U[4        R6                  S
9S9U	l        g ! [.         a"  n[        R                  S	U 35         S nAN[S nAff = f)NzCtikzpicture extraction failed, using recursive environment fallbackr   Útectonicr   r   )ÚtimeoutÚallow_shell_escape)r-   c                óÐ   ^^• UU4S jn U R                  TX4S9nU(       a  UTl        g U" 5         g ! [         a)  n[        R	                  SU 35        U" 5          S nAg S nAff = f)Nc                 óN   >• [        [        T[        R                  S9S9T l        g )N©rX   Úlanguage©Úcode)r   r	   r   ÚTIKZÚmeta)Úpicture_itemÚraw_tikzs   €€r0   Úset_code_fallbackÚ\EnvironmentHandlerMixin._process_tikzpicture.<locals>.render_task.<locals>.set_code_fallbackÉ   s$   ø€ Ü,7Ü!.Ø%-Ü):×)?Ñ)?ñ"ñ-˜Õ)r3   )ÚpreambleÚsource_rootz!Async Tectonic rendering failed: )ÚrenderÚimageÚ	ExceptionÚ_logÚwarning)ÚenginerŒ   r‹   r�   r�   r�   Úimg_refÚes    ``     r0   Úrender_taskÚAEnvironmentHandlerMixin._process_tikzpicture.<locals>.render_taskÈ   sg   ù€ öð,Ø"(§-¡-Ø$¨xð #0ð #˜ö #Ø18˜LÕ.ñ .Õ/øÜ$ó ,ÜŸ™Ð'HÈÈÐ%LÔMÙ)×+Ñ+ûð,ús   ‹2 ª2 ²
A%¼A Á A%z%Failed to setup Tectonic async task: r…   r‡   )Ú_extract_tikzpicture_atomicr”   r•   r1   rH   r   r    Útikz_engineÚ&docling.backend.latex.engines.tectonicr   r$   Útikz_engine_timeoutÚtikz_engine_allow_shell_escapeÚadd_picturer"   rL   r#   r   r-   r%   Úsubmitr&   Úappendr“   r   r	   r   r‰   rŠ   )r*   r<   r,   r-   r.   r/   Útikz_rawÚoptsr   Úpicr™   r�   r�   Úfuturer˜   s                  r0   ru   Ú,EnvironmentHandlerMixin._process_tikzpicture«   s¯  € ð ×3Ñ3°DÓ9ˆØÑÜ�L‰LØUôð ×Ñ §¡¨s¸JÔSØäÐ)¨4¯<©<Ó8ˆØ×Ñ˜zÓ)ð5JÝQà×(Ñ(Ñ0Ù,:Ø $× 8Ñ 8Ø+/×+NÑ+Nñ-�DÔ)ð
 —o‘o¨V�oÐ4�ò,ð,  ×.Ñ.�Ø"�Ü˜d×1Ñ1´4×8Ñ8Ø"&×"5Ñ"5×"<Ñ"<�KØ×&×&Ø!×0Ñ0×7Ñ7Ø#Ø×-Ñ-Ø ØØ Ø#ó�Fð ×&Ñ&×-Ñ-¨fÔ5ð
 ñ  Ø×-Ñ-¨x¸hôð ð �o‰o VˆoÐ,ˆÜÜØÜ*×/Ñ/ññ
ˆ�øô	 ó JÜ—‘ÐDÀQÀCÐH×IÑIûðJús   Á/CF ÅF Æ
GÆ!F>Æ>Gc                ó˜   • UR                  5       n[        R                  U5      c  g U R                  UR                  S5      (       d  g U$ )Nr   )rm   Ú_TIKZ_END_PATTERNÚsearchÚ_validate_tikz_nodelistrH   )r*   r<   Úraws      r0   r›   Ú3EnvironmentHandlerMixin._extract_tikzpicture_atomicü   sC   € Ø×!Ñ!Ó#ˆÜ×#Ñ# CÓ(Ñ0ØØ×+Ñ+¨D¯M©M¸1×=Ñ=ØØˆ
r3   c                ó‚  • Uc  gUS:”  a  gU GH-  n[        U[        5      (       a8  UR                  S:X  a(  UR                  5       n[        R                  U5      c    g[        US5      (       a3  UR                  b&  U R                  UR                  US-   5      (       d    g[        US5      (       d  M¨  UR                  (       d  M»  [        UR                  SS 5      nU(       d  MÛ  U HL  n[        US5      (       d  M  UR                  c  M%  U R                  UR                  US-   5      (       a  MK      g   GM0     g)	NTé2   Frd   rH   rI   rJ   rK   )rL   r   rM   rm   r©   rª   rN   rH   r«   rJ   rP   )r*   r+   rQ   r<   Ú
nested_rawrK   rS   s          r0   r«   Ú/EnvironmentHandlerMixin._validate_tikz_nodelist  s  € Ø‰=ØØ�2‹:ØäˆDÜ˜$Ô 4×5Ñ5¸$¿,¹,È-Ó:WØ!×0Ñ0Ó2�
Ü$×+Ñ+¨JÓ7Ñ?Ù ä�t˜Z×(Ñ(¨T¯]©]Ñ-FØ×3Ñ3°D·M±MÀ5È1Á9×MÑMÙ ä�t˜Z×(Ó(¨T¯]¯]©]Ü" 4§=¡=°*¸dÓC�ß�8Û'˜Ü" 3¨
×3Ó3¸¿¹Ó8PØ#'×#?Ñ#?Ø #§¡¨e°a©i÷$ó $ò (-ô  (ñ ð( r3   c                ó|   • UR                  US[        R                  S9nU R                  UR                  X&XE5        g )Nrc   ©r-   Únamer\   )Ú	add_groupr   ÚSECTIONr1   rH   )r*   r<   r,   r-   r.   r/   Úfigure_groups          r0   rt   Ú'EnvironmentHandlerMixin._process_figure   s<   € ð —}‘}Ø ´
×0BÑ0Bð %ð 
ˆð 	×Ñ˜DŸM™M¨3¸jÕUr3   c           	     ó4  • UR                  US[        R                  S9n/ n/ nUR                  b¦  UR                   H–  n	[	        U	[
        5      (       am  U	R                  S:X  a]  U(       a  UR                  U5        / nU	R                  (       a0  U	R                  R                  (       a  UR                  U	5        M�  Mƒ  M…  UR                  U	5        M˜     U(       a  UR                  U5        U H$  n
U R                  U
UUU[        R                  S9  M&     g )NÚlistr³   Úitem©r/   )rµ   r   ÚLISTrH   rL   r   Ú	macronamer¢   rJ   rK   r1   r
   Ú	LIST_ITEM)r*   r<   r,   r-   r.   r/   Ú
list_groupÚitemsÚcurrent_itemÚnÚ
item_nodess              r0   rr   Ú%EnvironmentHandlerMixin._process_list-  så   € ð —]‘]¨&°vÄZÇ_Á_�]ÐUˆ
àˆØˆà�=‰=Ñ$Ø—]”]�Ü˜a¤×0Ñ0°Q·[±[ÀFÓ5JÞ#ØŸ™ \Ô2Ø#%�Là—z—z a§j¡j×&9×&9Ø$×+Ñ+¨AÖ.ñ ':‘zð !×'Ñ'¨Ö*ñ #ö Ø�L‰L˜Ô&ãˆJØ×ÑØØØØÜ'×1Ñ1ð  ó ò  r3   c           	     ó6  • UR                  US[        R                  S9n/ n/ nSnUR                  bw  UR                   Hg  n	[	        U	[
        5      (       a>  U	R                  S:X  a.  U(       a  UR                  X‡45        / nU R                  U	5      nMV  UR                  U	5        Mi     U(       a  UR                  X‡45        U HQ  u  p«U
(       a$  UR                  U[        R                  SU
 S3US9  U R                  UUUU[        R                  S9  MS     g )	NÚbibliographyr³   r[   ÚbibitemÚ[z] )r-   r\   rX   r.   r¼   )rµ   r   r½   rH   rL   r   r¾   r¢   rC   rn   r
   r¿   r1   )r*   r<   r,   r-   r.   Ú	bib_grouprÁ   rÂ   Úcurrent_keyrÃ   ÚkeyrÄ   s               r0   rw   Ú-EnvironmentHandlerMixin._process_bibliographyR  s  € ð —M‘MØ ´j·o±oð "ð 
ˆ	ð ˆØˆØˆà�=‰=Ñ$Ø—]”]�Ü˜a¤×0Ñ0°Q·[±[ÀIÓ5MÞ#ØŸ™ kÐ%@ÔAØ#%�LØ"&×"9Ñ"9¸!Ó"<’Kà ×'Ñ'¨Ö*ñ #ö Ø�L‰L˜+Ð4Ô5ã$‰OˆCÞØ—‘Ø$Ü&×0Ñ0Ø˜S˜E ˜Ø)ð	 ñ ð ×ÑØØØØÜ'×1Ñ1ð  ó ò  %r3   )r$   )...)r+   r   r,   r   r-   r   r.   r   r/   r   ÚreturnÚNone)r6   r!   r7   r!   rÎ   r!   )r<   r   rÎ   r   )r<   r   rÎ   r!   )r   )rQ   Úint)NNN)
r<   r   r,   r   r-   úNodeItem | Noner.   úFormatting | Noner/   zDocItemLabel | None)r<   r   rÎ   z
str | None)rQ   rÐ   rÎ   Úbool)NN)r<   r   r,   r   r-   rÑ   r.   rÒ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r1   r8   r=   r@   rC   rO   r}   ru   r›   r«   rt   rr   rw   Ú__static_attributes__r)   r3   r0   r   r   +   så  ‡ ÞØ#Ó#ØÓØÓØ/Ó/Ø1Ó1Ø(Ó(ð Ø!Ø!ð	àð	ð ð	ð ð		ð
 ð	ð ð	ð õ	ô 	IÜ5ÜVÜ;öð0 #'Ø(,Ø*.ðTTà"ðTTð ðTTð  ð	TTð
 &ðTTð (õTTðt #'Ø(,Ø*.ðO
à"ðO
ð ðO
ð  ð	O
ð
 &ðO
ð (õO
ôböð@ #'Ø(,Ø*.ðVà"ðVð ðVð  ð	Vð
 &ðVð (õVð" #'Ø(,Ø*.ð#à"ð#ð ð#ð  ð	#ð
 &ð#ð (õ#ðR #'Ø(,ð+à"ð+ð ð+ð  ð	+ð
 &÷+ð +r3   r   ),Ú
__future__r   ÚloggingÚreÚpathlibr   Útypingr   r   r   Údocling_core.types.docr   Údocling_core.types.doc.documentr	   r
   r   r   r   r   r   Údocling.backend.latex.constantsr   r   r   r   Úconcurrent.futuresr   r   r   r�   r   Ú!docling.datamodel.backend_optionsr   r   Úpylatexenc.latexwalkerr   r   ÚImportErrorÚ	getLoggerrÔ   r”   Úcompiler©   r   r)   r3   r0   Ú<module>rè      s�   ðõ #ã Û 	Ý ß 0Ñ 0å 4÷÷ ñ ÷ WÓ Væß=ÝåE÷ð
	ßKð ×Ò˜Ó"€Ø—J’JÐ?Ó@Ð ÷Rò Røð ó 	Ùð	ús   Á'B ÂB'Â&B'