
    fVI                     
   d dl Z d dlZd dlZd dlZd dlmZ ej                  j                  ej                  j                  e
            Ze j                  j                  e       d dlZd dlZd dlZd dl 	 d Zd ZdZ eed      Zd Zd Zd	 Zd
 Zd Zd Zd=dZd>dZd Zedk(  rY ej>                  d      Z e jC                  ddd       e jC                  ddd       e jC                  ddd       e jC                  ddd       e jC                  d dd!       e jC                  d"dd#       e jC                  d$dd%       e jC                  d&dd%       e jC                  d'd()       e jE                         Z# e$       Z%e#jL                  re#jL                  d*k7  re#jL                  Z'ej                  j                  ej                  j                  e
            Z(ej                  jS                  e(e'      Z*ej                  jW                  e*      r{ej                  jY                  e*      r`e#jL                  e%_-        e*Z ee%e      Z%e%dk(  r e j\                  d+        ee%e      Z%e%dk(  r e j\                  d+        e/d,e' d-       n e/d.e' d/       d*e%_-        e%jZ                  d*k(  rej                  j                  ej                  j                  e
            Z(ej                  jS                  e(d*      Z ee%e      Z%e%dk(  r e j\                  d+        ee%e      Z%e%dk(  r e j\                  d+        e/d0        ee%      Z%e#j`                  rd1e%_0        e#jb                  rde%_2        e#jf                  rd1e%_3        e#jh                  rde%_5        e#jl                  r ee#jl                  e%      Z% ee%       ye#jn                  r# ejp                         Z9 e/d2        ee9e%       ye#jt                  r% ejp                         Z9 e/d3        ee9e%d14       ye#jv                  r ejp                         Z<d5Z= ej|                  e<      D ]  \  Z?Z@ZAeAD ]  ZBeBj                  d6      sej                  jS                  e?eB      ZDej                  j                  eD      d    d7z   ZF e/d8eD d9eF         ej                  e=d:eFz   eDgej                  ej                  ;         y e/d<       yy)?    N)*c                    t         j                  j                  t         j                  j                  t                    dz   }t         j                  j                  |      sCt         j                  j                  t         j                  j                  t                    dz   }	 t        |dd      5 }|j                         }|j                          d d d        t        |       } | j                  dk(  r| j                  j                          | S # 1 sw Y   @xY w#  | xj                  d| dz  c_	        t        d| d	       d
}Y qxY w)Nz/custom/default-fileopening.texz/default-fileopening.texrutf-8encodingz
 ERROR: File "z#" could not be opened for parsing!
zERROR: File "! could not be opened for parsing! F)ospathdirnameabspath__file__existsopenreadcloseerrorprintload_preamble_stringdefaultpreamblepackagesclear)stackr   fdefault_fileopenings       1D:\Git_Server-LaTeX-VALEP\py\valeptex\valeptex.pyload_default_preambler   g   s    77??277??8458YYD77>>$8Q(RUo(o!$g. 	!"#&&(GGI	 !(;<E%u~~';';'=L	 	!)$/STTdV#DEF s$   'D! 5!DD! DD! !,Ec                     g }t        j                  |       D ]S  \  }}}|D ]H  }t        j                  ||      s|j                  t         j                  j                  ||             J U |S )N)r   walkfnmatchappendr   join)	directorypattern
file_pathsroot_filesfilenames          r   
find_filesr+      sk    J''), @a 	@Hx1!!"'',,tX">?	@@     r   z	*.jinja2hc                     	 t        |  dd      5 }|j                         }| dcd d d        S # 1 sw Y   y xY w#  t        d|  d       t        xj                  d|  dz  c_        Y y	xY w)
Nr   r   r   
zERROR: File r	   z
 ERROR: File z" could not be opened for parsing!
r
   )r   r   r   r   r   )r   r   strings      r   add_jinja_filer0      ss    TFS73 	!qVVXFXR=	! 	! 	!TF"CDE.QRRs   < 0	< 9< < .A,c                     t        |d      }d}|D ]  }|t        |      z  } |rt        ||       | _        | S t	        d| d       y )Nz	*.jinja2sr
   z7ERROR: No jinja specifications could be found in path "z"!)r+   r0   	JinjaSpecjinjar   )r   r   jinja_pathsr/   
jinja_paths        r   load_jinja_specsr6      sb    T;/KF! -
.,,- .
 L 	GvRPQr,   c                     |dz   }t         j                  j                  |      st        d       y t	        |      | _        | S )Nz/default-layout.jinja2z ERROR: no jinja template found!!)r   r   r   r   r0   template_string)r   r   s     r   load_jinja_templater9      s;    **D77>>$01*40ELr,   c           
      &   | dd  dk(  s| dd  dk(  r| dd } t        |       } | |_        t        d|  d       |j                          |j	                          d|_        t        | |      \  }}t               }t        ||      \  }}t        d       |j                  |       |j                         |_        |j                  t              }t               }|r|j                  j                  |       nt        d	       |}|j                          |j!                  |j"                        }t%        ||j&                  |      }|j)                  ||      }t+        j,                  d
d|      }t+        j,                  dd|      }t+        j,                  dd|      }|j.                  dk(  r6dddddddddd	}|j1                         D ]  \  }	}
|j3                  |	|
      } d }t+        j,                  d||      }|j4                  rU|j5                  |j"                        j7                         }	 t9        |  ddd       5 }|j;                  |       d d d        |j<                  rot?        |d#d      }t?        |d$d      }t?        |d%d      }t?        |d&d'      }t?        |d(d      }t?        |d)d*      }tA        |      }tC        |      }tE        |      }tG        ||      \  }}|}d+|_$        ||fS # 1 sw Y   xY w#  t        d!|  d"       Y xY w),N.texz.TEXr   zDThis is valepTeX parser version 0.1 (Mai 2024): parsing of document z begins:Tz/... optimizes DOM tree and renders document ...z&WARNING: incorrect document structure!z<p>\s*<\/p>r
   z	<p>\s*<p>z<p>z<\/p>\s*<\/p>z</p>xml   ü   ä   ö   Ü   Ä   Ö   ßz&#8260;z&#183;)	z&uuml;z&auml;z&ouml;z&Uuml;z&Auml;z&Ouml;z&szlig;z&frasl;z&centerdot;c                 |    | j                  d      }|j                  dd      }|j                  dd      }d| d}|S )N   <z&lt;>z&gt;z<pre>z</pre>)groupreplace)matchargreplacements      r   replzparse_latex.<locals>.repl  sC    kk!nkk#f%kk#f%cU&)r,   z<pre>([\s\S]*?)</pre>z.txtwr   r   ERROR: could not write z.text!zin-dex class="person"zin-dex class="institution"zin-dex class="location"zin-dex class="doc"Bz
fac-similez	loc-ationOF)%strr*   r   reset_countersreset_transient_elementspreamblemodestart_parseDocNodeparse_blockssupplement_note_marksflatten_docnodeselementsfind_objectdocumentr"   adjust_paragraphsrenderr3   JinjaDocumentr8   render_documentregexsuboutput_formatitemsrJ   	normalizestripr   writecarnapeditionreplace_tag_indexadd_all_to_reading_listsresolve_diary_referencesfill_time_tagsmake_title_tocfirstdoc)tex_file_namer   tex_filedoc_listrK   
dom_objectr/   templatehtml_entitiesentitycharrN   normal_textr   html_contents                  r   parse_latexr{      s.   RSV#}RS'9V'C%a+&M"EN	PQ^P__g
hi 
	""$ E!-7OHe yH"8U3OHe	
;< ""5) 113H  *EJj!!((/67
  " u{{+F
 VU%:%:EBH''&9F YY~b&1FYY|FF3FYY'8F
 e# #
 *//1 	2LFD^^FD1F	2 YY/v>F((5;;=	Ct,cGD %$%  #6+BBG"6+GL"6+DbI"6+?E"6<<"6;<)&1 *&1  ' #651MFE L ENY% %	C+M?&ABs$   /K=  K1K= 1K:6K= =Lc                    d}| j                   r| j                         }| j                  r| j                         }|| j                  z  }|r|t
        j                  j                  t
        j                  j                  t                    dz   }t        |dd      5 }|j                  |       |j                          d d d        y y # 1 sw Y   y xY w)Nr
   z/valeptex.logrO   r   r   )writeunknownexpand_unknownwritelogexpandr   r   r   r   r   r   r   ri   r   )r   logr   r   s       r   	write_logr   \  s    
C!5!5!73~~llnu{{
wwrwwx89OK$0 	AGGCLGGI	 	 	 	s   "C		Cc                    | dd  dk(  r| dd } t        | |      \  }}|  d|j                   }	 t        |dd      5 }|j                  |       d d d        |j                         }|S # 1 sw Y   xY w#  t	        d| d	       Y 1xY w)
Nr;   r<   r   .rO   r   r   rP   !)r{   re   r   ri   r   r~   )rq   r   rz   temp_tex_file_namer   	undefineds         r   parse_latex_store_htmlr   m  s     RSV#%a+ &mU;L% *?!E,?,?+@A?$cG< 	"GGL!	"
 $$&I L	" 	"?'(:';1=>s"   A5 A)A5 )A2.A5 5BFc                    |r t         j                  j                  | d      nt         j                  j                  | d      }d}t        j                  |d      D ]b  }t         j                  j                  |      }t        j                  |       t         j                  j                  |      }	 t        ||      }d t        |       y #  t        d| d       |d| dz  }Y xY w)Nz**/*.texz*.texr
   T)	recursivezERROR: conversion of file z failed.)r   r   r#   globiglobr   chdirrelpathr   r   r   )folder_pathr   include_subfoldersr%   r   rr   r$   s          r   convert_folder_tex_to_htmlr     s    7Ibggll;
3rww||\gipOqGEJJw$7 EGGOOH-	
77??8,	E*8U;EE e		E.xjAB1(8DDEs   3CC)c                 ~   	 t        j                  |      }t        j                  d       t        j                  t        j                  |              t        j
                  |ddd       t        j                  |       t        d|  d| d	|        y # t        $ r}t        d
|  d|        Y d }~y d }~ww xY w)N)dpioffsvgtightr   )formatbbox_inches
pad_inchesz
Converted  to z
 with DPI=zError converting z: )	pltfigureaxisimshowimreadsavefigr   r   	Exception)
input_pathoutput_pathr   figes        r   convert_eps_to_svgr     s    5jjS!

3::j)* 	K7qQ		#
:,d;-z#GH 5!*Rs3445s   BB 	B<!B77B<c                 0   t        j                  |       D ]~  \  }}}|D ]s  }|j                         j                  d      s#t         j                  j                  ||      }t         j                  j                  |      d   dz   }t        ||       u  y )N.epsr   .svg)r   r    lowerendswithr   r#   splitextr   )r$   r'   r(   r)   filer   r   s          r   convert_eps_in_directoryr     s    ''), <a 	<Dzz|$$V,WW\\$5
 gg..z:1=F":{;		<<r,   __main__zParse LaTeX)descriptionrr   ?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 subfoldersz--normalizez(save also a .txt version of the documentz--nologfilezdo not save the valeptex.logz--writeunknownz.only write the unknown commands in the logfilez--useownpreamblez%use the original preamble of the filez--convertsvgz--formatz*Specify the file format by its file ending)r   htmlrF   zIdentified format folder z and loaded jinja specs.zWARNING: subfolder 'z6' does not exist! HTML rendering is chosen instead ...z/Rendering information for html has been loaded.Tz.Converting .tex files in the current folder...z*Converting .tex files in all subfolders...)r   z*C:\Program Files\Inkscape\bin\inkscape.exer   r   zConverting r   z--export-plain-svg=)stdoutstderrzLError: Please specify either a .tex file or --folder, --subfolders, or both.)F)i,  )Isysr   
subprocessr!   matplotlib.pyplotpyplotr   r   r   r   r   
module_dirr"   rc   argparser   parser_functionsr   r+   r   r&   r0   r6   r9   r{   r   r   r   r   r   __name__ArgumentParserparseradd_argument
parse_argsargsDocStackr   r   file_format
script_dirr#   subfolder_pathr   isdirre   exitr   rg   	nologfiler   r}   useownpreambler   rr   foldergetcwdcurrent_folder
subfolders
convertsvgeps_directoryinkscape_pathr    r'   dirsr)   r   r   eps_filer   svg_filerunPIPE r,   r   <module>r      s   
 	   
 WW__RWW__X67
 
     
K`< [1
0,Kf
":,5 < z$X$$?F

#4VW

<>hi
|Bhi
lAkl
lA_`
(Dtu
*<Fmn
|Bij

)UVD JE{{t{{f,kkWW__RWW__X%>?
j+>77>>.)bggmmN.K"&++E!D$UD1E}hchhqk't4E}hchhqk-k]:RST(5klm"(Ef$WW__RWW__X%>?
ww||J/ -D=(#((1+#E40D=(#((1+?@ "%(E ~~u~~u~t%,EE1 }}&t}}e<%	">?">59	":;">5TR	!		E!(!7 	PD$ P==(!ww||D$7H!ww//9!<vEHKzhZ@A"JNNM3H83SU]#^gqgvgv  @J  @O  @O  PP	P 	\]c r,   