
    =pj?                         S SK r S SKrS SKJr  SSKJrJrJrJr   " S S\\\\5      r	 " S S\\5      r
 " S	 S
\\5      rg)    N)Path   )BaseCVResult
LatexMixinMarkdownMixin	WordMixinc                   j   ^  \ rS rSrSU 4S jjrU 4S jrSS\4S jjrS rSS jr	S r
SS	 jrS
rU =r$ )MarkdownResult   returnc                    > [         TU ]  U5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        g)z@Initializes a new instance of the class with the specified data.N)super__init__r   r   r   selfdata	__class__s     p/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/pipelines/pp_doctranslation/result.pyr   MarkdownResult.__init__   s:    t$4 D!    c                 $  > [         TU ]  5       nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU$ N
page_index_languager   _get_input_fngetr   stemsuffixr   fnpage_idxfpr   r    r   r   s          r   r   MarkdownResult._get_input_fn       W"$t44HAbB77BII&68*VH-BT22H?bB77BII&68*VH-B	r   c                     U $ N )r   prettyshow_formula_numbers      r   _to_markdownMarkdownResult._to_markdown*       r   c                     [        S5      e)NzAMarkdownResult generates Word output directly via save_to_word().NotImplementedErrorr   s    r   _to_wordMarkdownResult._to_word-   s    !O
 	
r   c                 j  ^
^^^ SSK Jm
  [        U R                  5       5      n[        U5      nXR                   S3-  nU R                  SS5      n SS jmS mU
4S jmU
UUU4S	 jnSS
KJn  U" 5       n	U" XU5        [        R                  " USS9  U	R                  UR                  5       5        g )Nr   BeautifulSoupz.docxmarkdown_texts c                     SSK Jn  SSKJn  SSKJnJn  U R                  (       a  U R                  S   OU R                  5       n	SU	R                  l
        U	R                  R                  R                  R                  U" S5      S5        U" U5      U	R                  l        Xl        U(       a  U" U6 U	R                  R"                  l        US:X  a  UR&                  U l        g US	:X  a  UR*                  U l        g UR,                  U l        g )
Nr   WD_PARAGRAPH_ALIGNMENT)qn)PtRGBColorzTimes New Romanz
w:eastAsiau   宋体centerright)docx.enum.textr<   docx.oxml.nsr=   docx.sharedr>   r?   runsadd_runfontname_elementrPrrFontssetsizeboldcolorrgbCENTER	alignmentRIGHTLEFT)
	paragraphrN   align	font_sizerO   r<   r=   r>   r?   runs
             r   set_paragraph_style8MarkdownResult.save_to_word.<locals>.set_paragraph_style<   s     >'0 (1~~)..#9;L;L;NC-CHHMLL##''<(8(CyMCHHMH%-u%5" &<&C&C	#'!&<&B&B	#&<&A&A	#r   c                 f   SSK Jn  SSKJn  [        R
                  R                  U5      (       a@   U" US-  S-  5      nU R                  5       nUR                  XS9  UR                  U l
        g U R                  S	U S35        g ! [         a  nU R                  SU S35         S nAg S nAff = f)
Nr   r;   )Inchesd   g      @)widthz[fail load image: ]z[image not exist: )rB   r<   rD   r\   ospathexistsrF   add_picturerQ   rR   	Exception)rU   srcwidth_percentr<   r\   width_in_inchesrX   es           r   	add_image.MarkdownResult.save_to_word.<locals>.add_imageR   s    =*ww~~c""C&,]S-@3-F&GO#++-COOCO?*@*G*GI' !!$6se1"=> ! C%%(:3%q&ABBCs   >B 
B0B++B0c                   > T" US5      nUR                  S5      nU(       d  gUR                  S5      nU(       d  g[        S U 5       5      nU R                  [	        U5      US9nSUl        [        U5       Hw  u  pxUR                  SS	/5      n	[        U5       HP  n
U
[	        U	5      :  a(  X   R                  S
S9nXR                  Xz5      l
        M:  SUR                  Xz5      l
        MR     My     g)z$
Parsing HTML table and add to Word
html.parsertableNtrc              3   Z   #    U  H!  n[        UR                  S S/5      5      v   M#     g7f)tdthN)lenfind_all).0rows     r   	<genexpr>AMarkdownResult.save_to_word.<locals>.add_table.<locals>.<genexpr>o   s%     Kds3s||T4L9::ds   )+)rowscolsz
Table Gridrp   rq   Tstripr9   )findrs   max	add_tablerr   style	enumeraterangeget_textcelltext)document
table_htmlsoup	table_tagrx   max_colsrm   iru   cellsjr   r7   s               r   r~   .MarkdownResult.save_to_word.<locals>.add_tablea   s     !];D		'*I%%d+D KdKKH&&CIH&EE&EK#D/dD\2xA3u:~$x00t0<04

1(-02

1(- ) *r   c                 2  > UR                  5       R                  S5      nU GHp  nUR                  5       nU(       d  M  SnUR                  S5      (       a  U R                  USS  5      nT" USSS9  MS  UR                  S5      (       a  U R                  US	S  5      nT" USS
S9  M  UR                  S5      (       a  U R                  USS  5      nT" USSS9  M  UR                  S5      (       a  U R                  USS  5      nT" USSS9  M  UR                  S5      (       a  U R                  USS  5      nT" USSS9  GM$  UR                  S5      (       Ga  SU;   Ga  T" US5      nUR	                  S5      nU(       d  GMf  UR
                  (       at  UR
                  n	U	R                  S5      n
U	R                  SS5      R                  SS5      nU(       a  [        U5      OSnU R                  5       nT" Xb SU
 3U5        GM  UR                  (       a  T" U [        U5      5        GM  UR                  SS9nU(       a  U R                  U5      nT" USS US!9  GMD  GMG  S"U;   a  T" X5        GMX  U R                  U5      nT" US
S#9  GMs     g )$N
)r   r      #####    T
   )rN   rW   ####       ###       ## r      #       <divtext-align: centerrl   divre   r^   z100%%r9   r]   /rz   r@   )rN   rV   rO   <table)rW   )r{   split
startswithadd_paragraphr|   imgr   replacefloatrm   strr   )r   md_textoutput_pathlineslinetitle_colorpr   r   r   re   
width_attrrf   r   r7   ri   r~   rY   s                 r   process_md_page4MarkdownResult.save_to_word.<locals>.process_md_page|   sQ    MMO))$/Ezz|)??8,, ..tABx8A'C__W-- ..tABx8A'C__V,, ..tABx8A'C__U++ ..tABx8A'C__T** ..tABx8A'C __V,,1E1M(}=D))E*C ww!gg!ggen%(WWWf%=%E%Ec2%N
=Gj(9S$224!!}AcU%;]K!(CH5"||$|7 ( 6 6t <A/ !HK   %h- !..t4A'R8i r   )DocumentTexist_ok)Fleftr   N)bs4r7   r   r   r   r   docxr   r`   makedirssaveas_posix)r   	save_pathargskwargsr"   	save_filer   r   r   r   r7   ri   r~   rY   s             @@@@r   save_to_wordMarkdownResult.save_to_word3   s    %$$$&'O	77)5 11	((+R0 FJ	B,	?	368	9 8	9t 	":95
I-i((*+r   c                     [        S5      e)NzCMarkdownResult generates LaTeX output directly via save_to_latex().r0   r2   s    r   	_to_latexMarkdownResult._to_latex   s    !Q
 	
r   c                   ^^^^^ SSK Jm  [        U R                  5       5      n[        U5      nXR                   S3-  nS[
        S[
        4S jmSS jmS[
        4UU4S jjmS[
        S[
        4U4S	 jjmS
[
        S[
        4UUUUU4S jjn/ SQnU R                  SS5      nUR                  5        H  n	UR                  U" X5      5        M     UR                  S5        [        R                  " USS9  [        UR                  5       SSS9 n
U
R                  SR                  U5      5        S S S 5        g ! , (       d  f       g = f)Nr   r6   z.texsr   c                 ,  ^ U (       d  g/ mU4S jn[         R                  " S[         R                  5      nUR                  X5      nUR	                  SS5      R	                  SS5      R	                  SS	5      R	                  S
S5      R	                  SS5      R	                  SS5      R	                  SS5      R	                  SS5      R	                  SS5      R	                  SS5      n[        T5       H  u  pEUR	                  SU S3U5      nM     U$ )z<
Escape LaTeX special characters while preserving formulas.
r9   c                 h   > TR                  U R                  S5      5        S[        T5      S-
   S3$ )Nr   	@@FORMULA   @@)appendgrouprr   )mplaceholderss    r   replPMarkdownResult.save_to_latex.<locals>.escape_latex_outside_formula.<locals>.repl   s3    ##AGGAJ/"3|#4Q#6"7r::r   z-(\$\$.*?\$\$|\$.*?\$|\\\[.*?\\\]|\\\(.*?\\\))\z\textbackslash{}&z\&r   z\%$z\$#z\#r   z\_{z\{}z\}~z\textasciitilde{}^z\textasciicircum{}r   r   )recompileDOTALLsubr   r   )r   r   formula_pattmpr   fr   s         @r   escape_latex_outside_formulaBMarkdownResult.save_to_latex.<locals>.escape_latex_outside_formula   s     L;
 **@"))K //$*C D"56e$e$e$e$e$e$e$2334  ",/kkIaS"3Q7 0Jr   c                 J   [         R                  " SU 5      nU(       a3  [        UR                  S5      5      n[	        S[        US-  S5      5      $ [         R                  " SU 5      nU(       a3  [        UR                  S5      5      n[	        S[        US-  S5      5      $ U$ )z"
Parse the image width attribute.
zwidth\s*=\s*["\']?(\d+)%?["\']?r   g{Gz?g      Y@g      ?zwidth\s*:\s*(\d+)%)r   searchintr   r}   min)r   default_ratior   valm2s        r   get_image_width_from_md_lineBMarkdownResult.save_to_latex.<locals>.get_image_width_from_md_line   s     		<dCA!''!*o4S5[#!6770$7B"((1+&4S5[#!677  r   c           
      L  > SU ;   aw  T" U S5      n/ nUR                  S5       HV  n/ nUR                  SS/5       H)  nUR                  SS9nUR                  T" U5      5        M+     UR                  U5        MX     O_U R                  5        VVs/ s HB  nUR	                  5       (       d  M  UR                  S5       Vs/ s H  nT" U5      PM     snPMD     nnnU(       d  g	[        S
 U 5       5      nU V	s/ s H  oS	/U[        U	5      -
  -  -   PM     n
n	SR                  [        U5       Vs/ s H  nSPM     sn5      nSnUSU S3-  n[        U
5       H)  u  pUSR                  U5      S-   -  nUS:X  d  M$  US-  nM+     US-  nU$ s  snf s  snnf s  sn	f s  snf )z
Process table content.
r   rl   rn   rp   rq   Trz   	r9   c              3   8   #    U  H  n[        U5      v   M     g 7fr(   )rr   )rt   rs     r   rv   KMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<genexpr>  s     1DqCFFDs    z>{\raggedright\arraybackslash}Xz1\begin{center}
\renewcommand{\arraystretch}{1.5}
z\begin{tabularx}{\textwidth}{z}
\toprule
z & z \\
r   z	\midrule
z)\bottomrule
\end{tabularx}
\end{center}

)rs   r   r   
splitlinesr{   r   r}   rr   joinr   r   )contentr   rx   rn   ru   rp   r   c	col_countr   	norm_rowsr   
col_formatlatexr   r7   r   s                  r   process_table_html8MarkdownResult.save_to_latex.<locals>.process_table_html   s    7"$Wm<---BC kk4,7!{{{6

#?#EF 8 KK$ .  '1133yy{ OciioNo1!4oN3   1D11IBFG$QbTYQ%788$IG>CI>NO>N4>NOJ ME;J<WWE#I.C9446]*E / GGEL+ O HOs*   F/FFF<F4F!Fc                    > [         R                  " SU 5      n/ nU H6  nUR                  5       nU(       d  M  UR                  ST" U5      -   5        M8     SR	                  U5      S-   $ )z/
Process text paragraphs, preserving formulas.
z\n\s*\nz\par z

)r   r   r{   r   r   )r   
paragraphsprocessed_parasr   r   s       r   process_paragraph7MarkdownResult.save_to_latex.<locals>.process_paragraph%  sd     *a0J OGGI&&x2Nq2Q'QR	  
 ;;/&88r   r   c                   > U R                  5       n U (       d  gU R                  S5      (       a  ST	" U SS R                  5       5       S3$ U R                  S5      (       a  ST	" U S	S R                  5       5       S3$ U R                  S
5      (       a  ST	" U SS R                  5       5       S3$ U R                  S5      (       a  ST	" U SS R                  5       5       S3$ U R                  S5      (       a  ST	" U SS R                  5       5       S3$ SU ;   a  SU ;   a  T" U S5      nUR                  S5      nU(       a  UR                  (       a?  UR                  nUR	                  S5      nU SU 3nT
" [        U5      5      nSUS SU S3$ UR                  (       a  T" [        U5      5      $ UR                  SS9nU(       a  ST	" U5       S3$ S U ;   a  T" U 5      $ T" U 5      $ )!z
Process a single line.
r9   r   z\paragraph*{r   Nz}

r   z\subsubsection*{r   r   z\subsection*{r   r   z
\section*{r   r   r   r   r   rl   r   re   r   z4\begin{figure}[h]
\centering
\includegraphics[width=z.2fz\linewidth]{z}
\end{figure}

Trz   z\begin{center}z\end{center}

r   )r{   r   r|   r   r   r   rm   r   )r   r   r   r   r   re   width_ratior   r7   r   r   r  r   s           r   process_md_line5MarkdownResult.save_to_latex.<locals>.process_md_line2  s    ::<Dx(('(DT!"X^^EU(V'WW]^^w''+,HabIY,Z+[[abbv&&()Ed12hnnFV)W(XX^__u%%%&B48>>CS&T%UU[\\t$$%&B48>>CS&T%UU[\\~"6$">$T=9ii&ww!gg!ggen!*1SE2&B3s8&L77B36G~VYUZ [23
 yy1#c(;;<<d<3D!23OPT3U2VVijj4)$//$T**r   )z\documentclass[12pt]{article}z\usepackage{xeCJK}z\usepackage{fontspec}z\usepackage{graphicx}z\usepackage{amsmath}z\usepackage{geometry}z\usepackage{fancyhdr}z\usepackage{indentfirst}z\usepackage{caption}z\usepackage{tabularx, booktabs}z\usepackage{amssymb}z\usepackage{amsfonts}z\geometry{a4paper, margin=1in}z$\setCJKmainfont{Droid Sans Fallback}z\setmainfont{DejaVu Serif}z\setsansfont{Lato}z\setmonofont{Latin Modern Mono}z\pagestyle{fancy}z\setlength{\parindent}{2em}z\begin{document}
r8   r9   z\end{document}Tr   wzutf-8)encodingr   )g?)r   r7   r   r   r   r   r   r   r   r`   r   openr   writer   )r   r   r   r   r"   r   r  latex_linesr   r   r   r7   r   r   r  r   s              @@@@@r   save_to_latexMarkdownResult.save_to_latex   s#   %$$$&'O	77)4 00	#	C #	C #	L	!$	3 $	 $	L	9 	9 	9)	+# )	+S )	+ )	+V
. ((+R0&&(Dt?@ ) 	,-
I-)$$&g>!GGDIIk*+ ?>>s   !D??
Er)   r   N)TF)__name__
__module____qualname____firstlineno__r   r   dictr,   r3   r   r   r  __static_attributes____classcell__r   s   @r   r
   r
      s6    "
d 
I,V
x, x,r   r
   c                   F   ^  \ rS rSrSU 4S jjrU 4S jrS\4S jrSrU =r	$ )DocumentResulti  r   c                 P   > [         TU ]  U5        [        R                  " U 5        g)zB
Initializes a new instance of the class with the specified data.
N)r   r   r   r   s     r   r   DocumentResult.__init__  s      	4 r   c                 $  > [         TU ]  5       nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU$ r   r   r!   s          r   r   DocumentResult._get_input_fn  r&   r   c                     U $ r(   r)   r2   s    r   r3   DocumentResult._to_word  r.   r   r)   r  )
r  r  r  r  r   r   r  r3   r  r  r  s   @r   r  r    s    !
$  r   r  c                   F   ^  \ rS rSrSU 4S jjrU 4S jrS\4S jrSrU =r	$ )LatexResulti  r   c                 P   > [         TU ]  U5        [        R                  " U 5        g r(   )r   r   r   r   s     r   r   LatexResult.__init__  s    D!r   c                 $  > [         TU ]  5       nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU R                  SS 5      =nb+  [        U5      nUR                  UR
                  pTU SU U 3nU$ r   r   r!   s          r   r   LatexResult._get_input_fn  r&   r   c                     U $ r(   r)   r2   s    r   r   LatexResult._to_latex  r.   r   r)   r  )
r  r  r  r  r   r   r  r   r  r  r  s   @r   r   r     s    "
4  r   r   )r`   r   pathlibr   common.resultr   r   r   r   r
   r  r   r)   r   r   <module>r)     sG    
 	  O Of,\=)Z f,R\9 0,
 r   