1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
   |     def syntaxe_couleur(self,event=None):
        id_onglet = self.ong.select()
        texte1 = self.fe.feuilles[id_onglet][1]
        contents = texte1.get(1.0, tkinter.END)
        coordonnees=texte1.index(tkinter.INSERT) 
        texte1.delete("1.0",tkinter.END)
        texte1.insert("1.0",contents)
        texte1.mark_set(tkinter.INSERT, coordonnees)
        texte1.see(coordonnees)      
 
        nmbChar = tkinter.IntVar()
        lastPos = "1.0"
        while 1 :
              liste_noms="(\\\\)([a-zA-Z0-9]*)([\\\\+=\(\{\$\-&\\n\ \}\)\[\]_\^,?;.:/%])"
              lastPos = texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'commandes', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'commandes', foreground = 'brown',font=("courier",10))
        lastPos = "1.0"
        while 1 :
              liste_noms="(\\\\begin)|(\\\\end)|(\\\\\\\\)"
              lastPos = texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'environnement', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'environnement', foreground = 'blue',font=("courier",10))
        lastPos = "1.0"
        while 1 :
              liste_noms="[\{\(\[\|_\^@\)\]\}]"
              lastPos = texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'delimitateur', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'delimitateur', foreground = 'dark orange',font=("Courier",10,"bold"))
        lastPos = "1.0"
        while 1 :
              liste_noms=(r"(\\\()((.|\n)*?)(\\\))")
              lastPos=texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'equation', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        lastPos = "1.0"
        while 1 :
              liste_noms=(r"(\\\[)((.|\n)*?)(\\\])")
              lastPos=texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'equation', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        lastPos = "1.0"
        while 1 :
              liste_noms=(r"(\\<)((.|\n)*?)(\\>)")
              lastPos=texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'equation', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'equation', foreground = 'purple',font=("Courier",10))        
        lastPos = "1.0"
        while 1 :
              liste_noms="(\\\\\()|(\\\\\))|(\\\\\[)|(\\\\\])|(\\$)|([0-9<>])"
              lastPos = texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'chiffre', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'chiffre', foreground = 'dark violet',font=("Courier",10,"bold"))        
        lastPos = "1.0"
        while 1 :
              liste_noms="([^\\\\]|\\n)(%)([^\\n]*?)(\\n)"
              lastPos = texte1.search(liste_noms, index = lastPos, stopindex = tkinter.END, regexp = 1, count = nmbChar )
              if lastPos == "" :
                    break
              texte1.tag_add( 'commentaire', lastPos, "%s + %d chars" % ( lastPos, nmbChar.get() )  )
              lastPos = "%s + 1 chars" % lastPos
        texte1.tag_configure( 'commentaire', foreground = 'dark gray',font=("Courier",10,"bold")) |