
    EfB                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
  G d d      Z G d d      Z	 G d d      Z
dd	Zd
 Zd Zd ZddZedk(  r ej"                  d      Zej'                  ddd       ej'                  ddd       ej'                  ddd       ej)                         Zej,                  r eej,                        Zy ed       yy)    N)
NewCommandCommanddocnodec                       e Zd Zd Zd Zy)r   c                     t        |      | _        t        |      | _        t               | _        t               | _        t               | _        t               | _        t               | _	        y N)
strtypenameintnargr   optsecoptbegdefenddef)selfr
   r   s      -D:\Git_Server-LaTeX-VALEP\plasTeX\valeptex.py__init__zNewCommand.__init__   sE    I	I	E	9iii    c           
         | j                   dk(  s| j                   dk(  rd| j                   }n| j                  }| j                  rd| j                   d}nd}| j                  rd| j                   d}nd}| j                  rd| j                   d}nd}| j
                  rd| j
                   d}nd}| j                  rd| j                   d}nd}d| j                    d| d| | | | | 
S )	N
newcommandnewcommand*\[] {})r
   r   r   r   r   r   r   )r   commandr   r   r   r   r   s          r   declarationzNewCommand.declaration   s    99$		](B499+&GiiG99q1-dd88Qtxxj?Sc;;1T[[M!3f;;2dkk]"!5f;;2dkk]"!5fDII;b	D6#vhvhvhOOr   N__name__
__module____qualname__r   r     r   r   r   r      s     Pr   r   c                       e Zd Zd Zd Zy)r   c                 `    t        |      | _        t               | _        t               | _        y r   )r	   r   listoptargsreqargs)r   r   s     r   r   zCommand.__init__2   s    I	vvr   c                     d}| j                   D ]"  }|t        u s|d|j                          dz  }$ d}| j                  D ]"  }|t        u s|d|j                          dz  }$ d| j                   | | S )Nr   r   r   r   r   r   )r)   r   expandr*   r   )r   r)   argr*   s       r   r    zCommand.declaration7   s    << 	>Cg~wAcjjl^1*==w	> << 	@Cg~wBszz|nB*??w	@ DII;wiy11r   Nr!   r%   r   r   r   r   1   s    
	2r   r   c                       e Zd Zd Zd Zy)r   c                 "    t               | _        y r   )r(   elements)r   s    r   r   zdocnode.__init__D   s    r   c                     d}| j                   D ]h  }|t        u r||j                         z  }|t        u r||j                         z  };|t        u r|d|j                          dz  }[|t        |      z  }j |S )Nr   r   r   )r0   r   r    r   r   r,   r	   )r   stringelements      r   r,   zdocnode.expandF   s    }} 		'G'!'--//J&'--//G#Bw~~/033#g,&		' r   N)r"   r#   r$   r   r,   r%   r   r   r   r   C   s    r   r   c                 D   t        d|  d       	 t        |  ddd      5 }|j                         }d d d        d	d
dddddd}|D ]  }j                  |||         } t	        j
                  dd      }t	        j
                  dd|      }|j                  dd      }d}d }t	        j
                  |||      }|j                  dd      }|j                  dd      }fd}t	        j
                  d||      }|fS # 1 sw Y   xY w#  d|  dz  | fcY S xY w)NzSTART parsing z ....texrutf-8encodingz\n ERROR: File z%.tex could not be opened for parsing!z\@@vallbrc z\@@valrbrc z
\@@valdlr z
\@@valand z\@@valhash z
\@@valpct z\textunderscore )z\{z\}z\$z\&z\#z\%z\_z%.*\n
z(?<=[^\n])\n\nz\\par  z\\\\([\*]?)\[(.*?)\]c                 T    d| j                  d       d| j                  d       d}|S )Nz\@@vallb   r      r   )group)matchreplacements     r   repl_lengthz start_parse.<locals>.repl_lengthy   s.    !%++a.!1EKKN3C2Fr   z\\*z	\@@vallb*z\\z	\@@vallb c                 D    t        | j                  d            \  }|S )Nr=   )start_parser?   )r@   rA   errors     r   repl_input_includez'start_parse.<locals>.repl_input_include   s"    (Q?Ur   z\\input\{(.*?)\})printopenreadreplaceregexsub)	tex_file_namerE   ftex_fileescape_sequkeypatternrB   rF   s	    `       r   rD   rD   U   s`   
 
N=/
./$]O4(#@ 	 AvvxH	  )(''('-K  :##CC(89: yy$x0H yy*Ix@Hc*H &G yy+x8H|4Hl3H yy,.@(KHU?S	  	 $OM?2WXXe##s!   D DD DD Dc                     | dk(  ry d}d}d}| d   dk(  sy|t        |       k  r8| |   dk(  r|dz  }| |   dk(  r||k(  r|dz   S |dz  }|dz  }|t        |       k  r8y )Nr   r=   r   r   r   lenstrgiopenbrclosebrs       r   match_bracketsr[          rz	AFG7c>
c$i-7c>aKF7c> 1u1	Q c$i- r   c                     | dk(  ry d}d}d}| d   dk(  sy|t        |       k  r8| |   dk(  r|dz  }| |   dk(  r||k(  r|dz   S |dz  }|dz  }|t        |       k  r8y )Nr   r=   r   r   r   rT   rV   s       r   match_bracesr^      r\   r   c                    d}d}t               }t        |       |kD  r| |   dk(  rt        j                  d| |d        r||kD  r|j                  j                  | ||        t        j                  d| |d        }| |dz   ||j                         z    }||j                         z  }|}|dv r[t        j                  d| |d        r@t        j                  d| |d        }|j                  d      }||j                         z  }|}nd}d}	t               }
t        | |d        rFt        | |d        }|
j                  | |dz   ||z   dz
          ||z  }|}|	dz  }	t        | |d        rFd}	t               }t        | |d        rFt        | |d        }|j                  | |dz   ||z   dz
          ||z  }|}|	dz  }	t        | |d        rFd}|d	k(  r?t        |      dk(  r1t        | |d        r#t        | |d        }| |dz   |z   dz
   }||z  }|}|d
v rrt        |      dkD  rt        ||      }t        |d   |      |_        t        |
      dkD  rR|
d   j                         r6t        |
d         |_        t        |
      dkD  rt        |
d   |      |_        n	|d| dz  }|j                  j                  |       n|d| dz  }n|dv rrt        |      dkD  rt        ||      }t        |d   |      |_        t        |d   |      |_        t        |
      dkD  rR|
d   j                         r6t        |
d         |_        t        |
      dkD  rt        |
d   |      |_        n	|d| dz  }|j                  j                  |       n|d| dz  }n |dk(  rTrKt        ||      }t        |
      dkD  rt        |
d   |      |_        |j                  j                  |       n|dz  }n|d	k(  rrt        |      dkD  rst        ||      }t        |d   |      |_        t        |
      dkD  rt        |
d   |      |_        n|rt        ||      |_        |j                  j                  |       n|dz  }nt)        |      }|
D ]'  }|j*                  j                  t        ||             ) |D ]'  }|j*                  j                  t        ||             ) |j                  j                  |       n|dz  }n| |   dk(  r||kD  r|j                  j                  | ||        t        | |d        }|rKt        | |d        }| |dz   ||z   dz
   }||z  }|}t        ||      }|j                  j                  |       nd}|dz  }n|dz  }t        |       |kD  r||kD  r|j                  j                  | ||        ||fS )Nr   r   z\\[a-zA-Z@]+\*?r=   )r   r   newenvironmentnewenvironment*
newcounter
newtheoremz\{[\\]?[a-zA-Z@]+\*?\}z\{[\\]?([a-zA-Z@]+\*?\s*)\}\s*r   rc   )r   r   zERROR: declaration of command "z." has incorrect assignment of number of args.
z" is incomplete.
)r`   ra   z#ERROR: declaration of environment "rb   z(ERROR: incomplete newcounter declarationz(ERROR: incomplete newtheorem declarationr>   r   z#ERROR: something wrong with braces
)r   rU   rK   r@   r0   appendendr?   r(   r[   r^   r   parse_blocksr   isdigitr   r   r   r   r   r   r)   )rW   rE   startre   doc_listcommand_matchcommand_namedeclared_commanddeclared_command_namerX   bracket_block_contentbracket_block_lengthbrace_block_contentbrace_block_lengthspecial_bracket_block_contentspecial_bracket_block_lengthnew_commcommbrackbracebrace_block	pseudoenvs                         r   rf   rf      s   E
CyH
d)c/9{{-tCDz:;%%,,T%_= %,>ST
 K#CE#0A0A0C*CD}((**  $B  B{{#<d34jI+0;;7XZ^_b_cZd+e(0@0F0Fq0I-/3355 # 13-(,%$T#$Z0+9$st*+E()00c!eCBV<VXY<Y1Z[//CEFA %T#$Z0 &*f#"4:.)5d34j)A&'..tCE#@R:RTU:U/VW--CEFA #4:. 13-</C8K4LPQ4QVdeijmjneoVp3A$st*3M048QsEY?Y[\?\4]177CE  #@@,5H1IA1M#-l;P#Q*67J17Mu*U4594Q7??A034I!4L0M#&'<#=#A3?@UVW@XZ_3`HL %+JK`Ja  bQ  *R  !R ))00: #BCXBYYk!ll!%JJ,5H1IA1M#-l;P#Q*67J17Mu*U*67J17Mu*U4594Q7??A034I!4L0M#&'<#=#A3?@UVW@XZ_3`HL %+NOdNe  fU  *V  !V ))00: #FG\F]]o!pp!\1,#-l;P#Q459+78Ma8PRW+XHL ))00:!KK!\1,5H1IA1M#-l;P#Q*67J17Mu*U459,WlmnWoqvJw8<:l[xz  OAHO ))00:!KK #<0D!6 H++L,FGH!4 H++L,FGH%%,,T2 q#Y#U{!!((eC9&tCDz2K%1$st*%="&*3q57I1I11L&M#))()<eD	!!((3>q 1HCC d)c/D U{  eC1 U?r   c                    i }i }i }i }| dd  dk(  r| dd } t        |        |dz  }t        | |      \  }}|dz  }t               }t        ||      \  }}|dz  }t	        j
                  d|      }d}	g }
|	t        |      k  r_|d||	    d	z  }t        ||	   |      \  }}|d
||	    d	z  }t        ||      \  }}t        ||      \  |
|	<   }|	dz  }	|	t        |      k  r_t        |       | dz   }t        |dd      5 }|j                  |j                                d}	|	t        |      k  r1|j                  |
|	   j                                |	t        |      k  r1|	dz  }	d d d        |S # 1 sw Y   |S xY w)Nr5   r   z,ANY ERRORS FROM THE START PARSING PROCESS: 
z;

 ANY ERRORS FROM THE PARSE BLOCKS PROCESS, FIRST STAGE: 
z<

 ANY ERRORS FROM THE PARSE BLOCKS PROCESS, SECOND STAGE: 
z\\include\{(.*?)\}z3ANY ERRORS FROM THE START PARSING PROCESS for file z: 
z3
ANY ERRORS FROM THE PARSE BlOCKS PROCESS for file r=   z	_temp.texwr7   r8   )
rG   rD   r   rf   rK   findallrU   rH   writer,   )rM   rE   latex_macro_definitionslatex_environment_definitionslatex_counter_definitionslatex_theorem_definitionsrO   ri   includerX   include_doc_listfiler(   temp_tex_file_namerN   s                  r   parse_latexr   B  s    $&! " "RSV#%a+	-	<<E "-7OHe	MNE yH"8U3OHe	NOE mm18<G	A
c'l
FwqzlRVWW!'!*e4eGPQ
|SWXX"4/e%1$%>"U 	
Q c'l
 
%L '4	 #	8 A	!"#g,GG$Q'..01 #g,	Q L Ls   =A E-E--E7__main__zParse LaTeX)descriptionrO   ?z Path to the .tex file to convert)nargshelpz--folder
store_truez(Convert .tex files in the current folder)actionr   z--subfoldersz$Convert .tex files in all subfolderszLError: Please specify either a .tex file or --folder, --subfolders, or both.)r   )sysosrK   
subprocessargparseglob
htmlcarnapvaleptexr   r   r   rD   r[   r^   rf   r   r"   ArgumentParserparseradd_argument
parse_argsargsrO   rE   rG   r%   r   r   <module>r      s    
 	      1 1P PF2 2$ $2l&&Nb7v z$X$$?F

#4VW

<>hi
|BhiD}}DMM*\] r   