
    {-j?                         d dl Z d dlZd dlmZ ddlmZmZmZmZ  G d deeee          Z	 G d dee          Z
 G d	 d
ee          ZdS )    N)Path   )BaseCVResult
LatexMixinMarkdownMixin	WordMixinc                   T     e Zd Zd fdZ fdZddefdZd Zdd	Zd
 Z	ddZ
 xZS )MarkdownResultreturnNc                     t                                          |           t          j        |            t          j        |            t	          j        |            dS )z@Initializes a new instance of the class with the specified data.N)super__init__r   r   r   selfdata	__class__s     t/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddlex/inference/pipelines/pp_doctranslation/result.pyr   zMarkdownResult.__init__   sT    t$$$4   D!!!!!    c                 @   t                                                      }|                     dd           x}&t          |          }|j        |j        }}| d| | }|                     dd           x}&t          |          }|j        |j        }}| d| | }|S N
page_index_languager   _get_input_fngetr   stemsuffixr   fnpage_idxfpr   r   r   r   s          r   r   zMarkdownResult._get_input_fn       WW""$$t444HAbB7BI&D--8-V--BT222H?bB7BI&D--8-V--B	r   TFc                     | S N )r   prettyshow_formula_numbers      r   _to_markdownzMarkdownResult._to_markdown*       r   c                      t          d          )NzAMarkdownResult generates Word output directly via save_to_word().NotImplementedErrorr   s    r   _to_wordzMarkdownResult._to_word-   s    !O
 
 	
r   c                   
 ddl m
 t          |                                           }t          |          }||j         dz  }|                     dd          }	 dd	d
 
fd
fd}ddlm}  |            }	 ||	||           t          j	        |d           |	
                    |                                           d S )Nr   BeautifulSoupz.docxmarkdown_texts Fleft   c                    ddl m} ddlm} ddlm}m} | j        r| j        d         n|                                 }	d|	j	        _
        |	j        j        j                             |d          d            ||          |	j	        _        ||	_        |r || |	j	        j        _        |dk    r|j        | _        d S |d	k    r|j        | _        d S |j        | _        d S )
Nr   WD_PARAGRAPH_ALIGNMENT)qn)PtRGBColorzTimes New Romanz
w:eastAsiau   宋体centerright)docx.enum.textr9   docx.oxml.nsr:   docx.sharedr;   r<   runsadd_runfontname_elementrPrrFontssetsizeboldcolorrgbCENTER	alignmentRIGHTLEFT)
	paragraphrK   align	font_sizerL   r9   r:   r;   r<   runs
             r   set_paragraph_stylez8MarkdownResult.save_to_word.<locals>.set_paragraph_style<   s    >=====''''''00000000 (1~N).##9;L;L;N;NC-CHML#''<(8(8(CCCByMMCHMCH 6%-Xu%5"  &<&C	###'!!&<&B	###&<&A	###r   c                    ddl m} ddlm} t          j                            |          r|	  ||dz  dz            }|                                 }|                    ||           |j	        | _
        d S # t          $ r$}|                     d| d           Y d }~d S d }~ww xY w|                     d	| d           d S )
Nr   r8   )Inchesd   g      @)widthz[fail load image: ]z[image not exist: )r?   r9   rA   rX   ospathexistsrC   add_picturerN   rO   	Exception)rR   srcwidth_percentr9   rX   width_in_inchesrU   es           r   	add_imagez.MarkdownResult.save_to_word.<locals>.add_imageR   s   ======******w~~c"" 	?C&,f]S-@3-F&G&GO#++--COOCO???*@*GI'''  C C C%%&A3&A&A&ABBBBBBBBBC !!"=s"="="=>>>>>s   AA7 7
B%B  B%c                 T    |d          }|                     d          }|sdS |                    d          }|sdS t          d |D                       }|                     t	          |          |          }d|_        t          |          D ]\  }}|                    dd	g          }	t          |          D ]h}
|
t	          |	          k     r8|	|
                             d
          }||	                    ||
          _
        Md|	                    ||
          _
        idS )z<
            Parsing HTML table and add to Word
            html.parsertableNtrc              3   ^   K   | ](}t          |                    d dg                    V  )dS )tdthN)lenfind_all).0rows     r   	<genexpr>zAMarkdownResult.save_to_word.<locals>.add_table.<locals>.<genexpr>o   s:      KKs3s||T4L99::KKKKKKr   )rowscolsz
Table Gridrk   rl   Tstripr4   )findrn   max	add_tablerm   style	enumeraterangeget_textcelltext)document
table_htmlsoup	table_tagrr   max_colsrh   irp   cellsjr~   r2   s               r   rx   z.MarkdownResult.save_to_word.<locals>.add_tablea   sD    !=];;D		'**I %%d++D  KKdKKKKKH&&CIIH&EEE&EK#D// 3 33dD\22x 3 3A3u::~~$Qx00t0<<04

1a((--02

1a((--33 3r   c                    |                                                     d          }|D ]}|                                 }|sd}|                    d          r,|                     |dd                    } |dd           ]|                    d          r,|                     |d	d                    } |dd
           |                    d          r,|                     |dd                    } |dd           |                    d          r-|                     |dd                    } |dd           !|                    d          r-|                     |dd                    } |dd           c|                    d          rd|v r |d          }|                    d          }|s|j        r|j        }	|	                    d          }
|	                    dd                              dd          }|rt          |          nd}|                                 } || d|
 |           +|j	        r | t          |                     M|                    d          }|r$|                     |          } |dd |!           d"|v r | |           |                     |          } |d
#           d S )$N
)r   r      #####    T
   )rK   rT   ####    r6   ###       ## r      #       <divtext-align: centerrg   divra   rZ   z100%%r4   rY   /rt   r=   )rK   rS   rL   <table)rT   )ru   split
startswithadd_paragraphrv   imgr   replacefloatrh   strr|   )r   md_textoutput_pathlineslinetitle_colorpr   r   r   ra   
width_attrrb   r~   r2   re   rx   rV   s                 r   process_md_pagez4MarkdownResult.save_to_word.<locals>.process_md_page|   sn    MMOO))$//E 49 49zz|| )??8,, .9 ..tABBx88A''CCCCC__W-- +9 ..tABBx88A''CCCCC__V,, (9 ..tABBx88A''CCCCC__U++ %9 ..tABBx88A''CCCCC__T** "9 ..tABBx88A''CCCCC __V,, 91E1M1M(=}==D))E**C ! w !g!ggenn%(WWWf%=%=%E%Ec2%N%N
=G(Pj(9(9(9S$2244!	!%;%;c%;%;]KKKK !	(CHH5555"||$|77  ( 6 6t < <A// !HK   
 %%Ih---- !..t44A''R88888i49 49r   )DocumentTexist_ok)Fr5   r6   N)bs4r2   r   r   r   r   docxr   r\   makedirssaveas_posix)r   	save_pathargskwargsr    	save_filer   r   r   r   r2   re   rx   rV   s             @@@@r   save_to_wordzMarkdownResult.save_to_word3   sA   %%%%%%$$$&&''OO	27 1 1 11	((+R00 FJ	B 	B 	B 	B,	? 	? 	?	3 	3 	3 	3 	368	9 8	9 8	9 8	9 8	9 8	9 8	9 8	9t 	"!!!!!8::'9555
I----i((**+++++r   c                      t          d          )NzCMarkdownResult generates LaTeX output directly via save_to_latex().r,   r.   s    r   	_to_latexzMarkdownResult._to_latex   s    !Q
 
 	
r   c                    ddl m t          |                                           }t          |          }||j         dz  }dt
          dt
          fddddt
          ffd	dt
          dt
          ffd
dt
          dt
          ffd}g d}|                     dd          }|                                D ]!}	|                     ||	|                     "|                    d           t          j
        |d           t          |                                dd          5 }
|
                    d                    |                     d d d            d S # 1 swxY w Y   d S )Nr   r1   z.texsr   c                 z   | sdS g fd}t          j        dt           j                  }|                    ||           }|                    dd                              dd                              dd	                              d
d                              dd                              dd                              dd                              dd                              dd                              dd          }t                    D ]\  }}|                    d| d|          } |S )zT
            Escape LaTeX special characters while preserving formulas.
            r4   c                                          |                     d                     dt                    dz
   dS )Nr   	@@FORMULA   @@)appendgrouprm   )mplaceholderss    r   replzPMarkdownResult.save_to_latex.<locals>.escape_latex_outside_formula.<locals>.repl   s?    ##AGGAJJ///:3|#4#4Q#6::::r   z-(\$\$.*?\$\$|\$.*?\$|\\\[.*?\\\]|\\\(.*?\\\))\z\textbackslash{}&z\&r   z\%$z\$#z\#r   z\_{z\{}z\}~z\textasciitilde{}^z\textasciicircum{}r   r   )recompileDOTALLsubr   rz   )r   r   formula_pattmpr   fr   s         @r   escape_latex_outside_formulazBMarkdownResult.save_to_latex.<locals>.escape_latex_outside_formula   sD     rL; ; ; ; ;
 *@") K //$**C D"566e$$e$$e$$e$$e$$e$$e$$233344  ",// 8 81kk"3a"3"3"3Q77Jr   皙?c                 n   t          j        d|           }|rCt          |                    d                    }t	          dt          |dz  d                    S t          j        d|           }|rCt          |                    d                    }t	          dt          |dz  d                    S |S )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   rw   min)r   default_ratior   valm2s        r   get_image_width_from_md_linezBMarkdownResult.save_to_latex.<locals>.get_image_width_from_md_line   s     	<dCCA 8!''!**oo4S5[#!6!67770$77B 8"((1++&&4S5[#!6!6777  r   c                    d| v r | d          }g }|                     d          D ]g}g }|                     ddg          D ]6}|                    d          }|                     |                     7|                    |           hn fd|                                 D             }|sd	S t	          d
 |D                       fd|D             }d                    d t                    D                       }d}	|	d| dz  }	t          |          D ]+\  }
}|	d                    |          dz   z  }	|
dk    r|	dz  }	,|	dz  }	|	S )z0
            Process table content.
            r   rg   ri   rk   rl   Trt   c                 z    g | ]7}|                                 fd |                    d          D             8S )c                 &    g | ]} |          S r&   r&   )ro   cr   s     r   
<listcomp>zWMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<listcomp>.<listcomp>  s%    NNN11!44NNNr   	)ru   r   )ro   rp   r   s     r   r   zLMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<listcomp>  sU       yy{{NNNNciiooNNN  r   r4   c              3   4   K   | ]}t          |          V  d S r%   rm   )ro   rs     r   rq   zKMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<genexpr>  s(      11qCFF111111r   c                 B    g | ]}|d gt          |          z
  z  z   S )r4   r   )ro   r   	col_counts     r   r   zLMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<listcomp>  s0    GGGQbTYQ%788GGGr    c                     g | ]}d S )z>{\raggedright\arraybackslash}Xr&   )ro   r   s     r   r   zLMarkdownResult.save_to_latex.<locals>.process_table_html.<locals>.<listcomp>  s    OOO4OOOr   z1\begin{center}
\renewcommand{\arraystretch}{1.5}
z\begin{tabularx}{\textwidth}{z}
\toprule
z & z \\
r   z	\midrule
z)\bottomrule
\end{tabularx}
\end{center}

)rn   r|   r   
splitlinesrw   joinr{   rz   )contentr   rr   ri   rp   rk   r~   	norm_rows
col_formatlatexr   r   r2   r   s              @r   process_table_htmlz8MarkdownResult.save_to_latex.<locals>.process_table_html   s    7""$}Wm<<---- % %BC kk4,77 G G!{{{66

#?#?#E#EFFFFKK$$$$%   &1133    r11D11111IGGGG$GGGIOOeI>N>NOOO J MEWJWWWWE#I.. + +3C94466]*EGGELr   c                     t          j        d|           }g }|D ]:}|                                }|s|                    d |          z              ;d                    |          dz   S )zG
            Process text paragraphs, preserving formulas.
            z\n\s*\nz\par z

)r   r   ru   r   r   )r   
paragraphsprocessed_parasr   r   s       r   process_paragraphz7MarkdownResult.save_to_latex.<locals>.process_paragraph%  s     *a00J O S SGGII &&x2N2Nq2Q2Q'QRRRR;;//&88r   r   c                 N   |                                  } | sdS |                     d          r)d 	| dd                                                     dS |                     d          r)d 	| d	d                                                     dS |                     d
          r)d 	| dd                                                     dS |                     d          r)d 	| dd                                                     dS |                     d          r)d 	| dd                                                     dS d| v rd| v r | d          }|                    d          }|r|j        rE|j        }|                    d          }| d| } 
t          |                    }d|dd| dS |j        r t          |                    S |                    d          }|rd 	|           dS d | v r |           S  |           S )!z0
            Process a single line.
            r4   r   z\paragraph*{r   Nz}

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

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

r   )ru   r   rv   r   r   r   rh   r|   )r   r   r   r   r   ra   width_ratior~   r2   r   r   r   r   s           r   process_md_linez5MarkdownResult.save_to_latex.<locals>.process_md_line2  s    ::<<D rx(( _^(D(DT!""X^^EUEU(V(V^^^^w'' cb,H,HabbIYIY,Z,Zbbbbv&& `_)E)Ed122hnnFVFV)W)W____u%% ]\&B&B48>>CSCS&T&T\\\\t$$ ]\&B&B48>>CSCS&T&T\\\\~~"6$">">$}T=99ii&& kw 	!g!ggenn!*22S22&B&B3s88&L&L37B_3 3VY3 3 3
 y <11#c((;;;<<d<33D kj3O3OPT3U3Ujj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}
r3   r4   z\end{document}Tr   wzutf-8)encodingr   )r   )r   r2   r   r   r   r   r   r   r   r\   r   openr   writer   )r   r   r   r   r    r   r   latex_linesr   r   r   r2   r   r   r   r   s              @@@@@r   save_to_latexzMarkdownResult.save_to_latex   sR   %%%%%%$$$&&''OO	27 0 0 00	#	C #	C #	 #	 #	 #	L	! 	! 	! 	!$	3 $	 $	 $	 $	 $	 $	 $	L	9 	9 	9 	9 	9 	9 	9 	9)	+# )	+S )	+ )	+ )	+ )	+ )	+ )	+ )	+ )	+ )	+ )	+V
 
 
. ((+R00&&(( 	A 	ADtY??@@@@,---
I----)$$&&g>>> 	,!GGDIIk**+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   8)E..E25E2r   N)TF)__name__
__module____qualname__r   r   dictr)   r/   r   r   r   __classcell__r   s   @r   r
   r
      s        " " " " " "
 
 
 
 
 d    
 
 
I, I, I, I,V
 
 
x, x, x, x, x, x, x, x,r   r
   c                   6     e Zd Zd fdZ fdZdefdZ xZS )DocumentResultr   Nc                 r    t                                          |           t          j        |            dS )zR
        Initializes a new instance of the class with the specified data.
        N)r   r   r   r   s     r   r   zDocumentResult.__init__  s4     	4     r   c                 @   t                                                      }|                     dd           x}&t          |          }|j        |j        }}| d| | }|                     dd           x}&t          |          }|j        |j        }}| d| | }|S r   r   r   s          r   r   zDocumentResult._get_input_fn  r#   r   c                     | S r%   r&   r.   s    r   r/   zDocumentResult._to_word  r*   r   r  )r  r  r  r   r   r  r/   r  r  s   @r   r	  r	    sq        ! ! ! ! ! !
 
 
 
 
$        r   r	  c                   6     e Zd Zd fdZ fdZdefdZ xZS )LatexResultr   Nc                 r    t                                          |           t          j        |            d S r%   )r   r   r   r   s     r   r   zLatexResult.__init__  s2    D!!!!!r   c                 @   t                                                      }|                     dd           x}&t          |          }|j        |j        }}| d| | }|                     dd           x}&t          |          }|j        |j        }}| d| | }|S r   r   r   s          r   r   zLatexResult._get_input_fn  r#   r   c                     | S r%   r&   r.   s    r   r   zLatexResult._to_latex  r*   r   r  )r  r  r  r   r   r  r   r  r  s   @r   r  r    sq        " " " " " "
 
 
 
 
4        r   r  )r\   r   pathlibr   common.resultr   r   r   r   r
   r	  r  r&   r   r   <module>r     s    
			 				       O O O O O O O O O O O Of, f, f, f, f,\=)Z f, f, f,R    \9   0    ,
     r   