;ò )äHEc@s'dkZdkZdkZdkZdkZdkZdkZdkZdkZdk l Z l Z l Z l Z dklZlZlZlZdklZdefd„ƒYZdefd„ƒYZdZd Zd eZd d d „Zd„Zd„Zd„Zd„Zd„Z d„Z!dS(N(s fileNameForsimageExtensionsuniques workingDir(sImages ImageFiles ImageChopssPngImagePlugin(sescapesLatexSyntaxErrorcBstZRS(N(s__name__s __module__(((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysLatexSyntaxError ssGhostscriptErrorcBstZRS(N(s__name__s __module__(((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysGhostscriptError si f72.0s¼ \documentclass[%dpt,notitlepage]{article} \usepackage{amsmath} \usepackage{amsfonts} \usepackage[all]{xy} \newenvironment{latex}{}{} \begin{document} \pagestyle{empty} %%s \end{document} sicCstid|||ƒdS(NsLatexWikiDebugLog(szLOGsLOGsseverityssummarysmessage(smessagessummarysseverity((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pyslogscCs0tiitiitt||tƒƒƒ SdS(N( sosspathsexistssjoins workingDirs fileNameForscodes charheightpxsimageExtension(scodes charheightpx((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysimageDoesNotExistsc1 sÞdkl}%ttˆtt|ƒƒ}d}|i dt ƒpt } t‡d†t|ƒƒ} | odSn| d}x)| dt| ƒ!D]}|d|}q“Wyt|ˆ| ƒWn8tj o,}#t|#ƒ}t|d ƒt|ƒSnXt|ˆƒ}d }d}'d ||'||d |d f}t |ƒ\}&}}|&o2td|&||fdƒt$|d|ƒ‚nt%||dƒt&i'dt%||dƒƒ}/xt)t*| t+dt| ƒƒƒD]á\}}(d}d}$d}d}0d} d} d}d}!d}t|ˆt6ƒ} t)t8t&i9d|/d|(dƒi:ƒƒ\}}}}+|||t}|+||t}*|djo d}n|*djo d}*n||t}||t}d||(df},tBiCtDiEitF|,ƒƒ} || iHd||*||| iHd|f}t)tt)t|ƒƒ}| iJ|ƒ} dpt&i9d|ƒ o£tBiKd| iHdddfƒ}-|-iM| ddfƒtNiO|-iPdƒƒ}"tBiKd| iHdddfƒ}.|.iS|"ƒ|.iTtDiEitF| ƒdƒqÔnxt+d| iHdƒD] } |0djo´xŠt+d| iHdƒD]„}|djo |0djo+| iV| |fƒdjo |}0Pq¢n|djo| iV| |fƒdjo| }|}qWqWW| iHdd}0q-|$djoWˆdjo8| iV| t||0dƒfƒdjo | }$qTqÍd|0|}$q-ˆdjo|0|}!nIxEt+d| iHdƒD]-}| iV| |fƒdjo | }!PqŠqŠW|!djoPq-q-Wtd||$||0|!fƒtd | iHd| iHdfd!ƒd"|d#}t|ƒS|0|d}|| iV||0dfƒ| iV||fƒd$7}||7}| iHd|})|}||)jod|}||}nd|)}|)|} t|$|d%ƒ}||!jo |!}ntBiKd| iHd|tt|ƒƒfdddfƒ}-|-iM| | tt| ƒƒfƒtNiO|-iPdƒƒ}"tBiKd|-iHdddfƒ}.|.iS|"ƒ|.iTtDiEitF| ƒdƒqÔWtDi\d&tF|fƒt|ƒSdS('s[ take a list of strings of latex code, render the images that don't already exist. (sjoinss latexTemplatecs t|ˆƒS(N(simageDoesNotExistsxs charheightpx(sx(s charheightpx(sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pys.sNiis \newpage sLatexSyntaxErrors/usr/bin/dvipss%s %s -R -D %f -o %s %ss.pss.dvis %s %s %s s DVIPSErrors spnggraysbboxiÿÿÿÿs?%%HiResBoundingBox: ([0-9\.]+) ([0-9\.]+) ([0-9\.]+) ([0-9\.]+)is %s-%03d.pngs ^(?:\$|\\\()sRGBiÿsLsRGBAsPNGi f2.0sDdotstartx=%d, dotendx=%d, dotstarty=%d, dotendy=%d, letterstartx=%d s!Unable to find dot. (size=%dx%d) srenderNonExistingImagessThe following code: s generated a blank pagef255.0f1.5s:cd %s; rm -f *.log *.aux *.tex *.pdf *.dvi *.ps %s-???.png(]sstringsjoinsintsrounds charheightpxs ptperinchs charsizeptsresfudgesresserrorsskwsgetsdefaultLatexTemplates latexTemplatesfiltersuniques latexCodeLists codeToRenders unifiedCodeslenscodesrunLatexsLatexSyntaxErrorsdatasstrslogsescapes fileNameForsfNames dvipspathsppoptscmdLines runCommandserrsstdoutsstderrs DVIPSErrorsrunGhostscriptsressplitsbboxessmapsNonesrangesis dotstartxsdotendxs dotstartysdotendysxswidentops widenbottoms letterstartxschopxsimageExtensions newFileNamesfloatsmatchsgroupssstart_xsstart_ysend_xsend_ysxsizesysizesimnamesImagesopensosspaths workingDirsimssizescropdimscropsnewsim2spastes ImageChopssinvertsconvertsalphasim3sputalphassavesysgetpixels centerlines alignfudges bottomsizestopsizes newheightssystem(1s latexCodeLists charheightpxs alignfudgesresfudgeskwscodesxsizesstdoutstopsizes latexTemplates codeToRenders newFileNamesimswidentops dotstartxs dotstartys newheightschopxserrorssresscmdLines dvipspaths centerlines unifiedCodescropdimsend_xsstderrsstart_ys widenbottomsysstart_xsfNamesxs letterstartxsalphasdatasdotendxsjoinserrsppoptsis bottomsizesysizesend_ysimnamesim2sim3sbboxessdotendy((s charheightpxsO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysrenderNonexistingImages#sÖ    !" * 9  0!!   )  *   % 4      ;#! #cCsBti|iƒtiƒ}ti|iƒti|tiBƒdS(N(sfcntlsfsfilenosF_GETFLsflsF_SETFLsoss O_NONBLOCK(sfsfl((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysmakeNonBlocking¢sc CsŽtidt|dƒ}|iiƒt|iƒt|i ƒg}g}t }t }xÝ|o| oÍti|i|i gggƒ\} } } xœ| D]”}||ijo7|iiƒ} | djo t}q0|i| ƒqœ||i jo7|i iƒ} | djo t}q0|i| ƒqœqœWq\W|iƒ}ti|ƒpti|ƒ }|ti|dƒti|dƒfSdS(Nscd %s; is( spopen2sPopen3s workingDirscmdLinesprogramstochildsclosesmakeNonBlockings fromchildschilderrsstderrsstdoutsFalseserreofsouteofsselectsreadmeswritmesxmesoutputsreadstextsTruesappendswaitsstatussoss WEXITSTATUSs WIFEXITEDserrorsstringsjoin( scmdLinesstatussstdoutserreofserrorsoutputsprogramsouteofsstderrsxmesreadmeswritmestext((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pys runCommand¦s4  *    cCsÅt||dƒ}t||dƒ} t||dƒ}d|}tti i t |ƒdƒ}|i ||fƒ|iƒt|ƒ\} }} d}x„tit ƒD]s} tid| ƒoZti i t | ƒ} tdtid d | ƒ| fƒ\} }} ti| ƒd }q§q§W|d jot|ƒ\} }} n| oW| d |}tid |titiƒ} | o| idƒ}nt |ƒ‚n td|| fƒ\} }} dS(Ns.texs.dvis.pss/usr/bin/latex %sswis\.dot$sdot -Tps -o %s %ssdot$spsis s!.*\?s5/usr/local/teTeX/bin/i686-pc-linux-gnu/dvips -o %s %s(!s fileNameForscodes charheightpxs texfileNames dvifileNames psfileNamescmdLinesopensosspathsjoins workingDirsfileswrites latexTemplatescloses runCommandserrsstdoutsstderrsagainslistdirsfsressearchs dotfileNamessubsremovesouts MULTILINEsDOTALLsgroupsLatexSyntaxError(scodes charheightpxs latexTemplatesstdouts psfileNamesfilesoutsagainscmdLines dotfileNames dvifileNameserrsfsstderrs texfileName((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysrunLatexÇs2  .  c Cs”|d|df\}}ddd}|||||f}t|ƒ\}}}|o2t d|||fdƒt |d|ƒ‚n|SdS( Ns.pss -%03d.pngs%gs -dDOINTERPOLATE -dTextAlphaBits=4 s'-dGraphicsAlphaBits=4 -r%d -sDEVICE=%s s,-dBATCH -dNOPAUSE -dQUIT -sOutputFile=%s %s s %s %s %s sGhostscriptErrors ( sfNamesinputsoutputscmdLinesressdevices runCommandserrsstdoutsstderrslogsGhostscriptError( sfNamesressdevicesstderrserrsstdoutscmdLinesinputsoutput((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pysrunGhostscriptès("sosssyssrespopen2sglobszLOGsselectsfcntlsstringsutils fileNameForsimageExtensionsuniques workingDirsPILsImages ImageFiles ImageChopssPngImagePluginscgisescapes ExceptionsLatexSyntaxErrorsGhostscriptErrors charsizepts ptperinchsdefaultLatexTemplateslogsimageDoesNotExistsrenderNonexistingImagessmakeNonBlockings runCommandsrunLatexsrunGhostscript(smakeNonBlockingsGhostscriptErrorsPngImagePluginspopen2s charsizeptsescapes ImageChopssselectsdefaultLatexTemplateslogsrenderNonexistingImagess workingDirsresfcntlsrunLatexsstringsimageExtensionsimageDoesNotExistsglobssyss ptperinchsuniques runCommandsLatexSyntaxErrorsrunGhostscriptsImages ImageFileszLOGs fileNameForsos((sO/mnt/gmirror/ports/www/zope-zwiki/work/ZWiki/plugins/mathaction/latexWrapper.pys?sQ      ! !