def scanner(s): """ Split a string into mathtext and non-mathtext parts. mathtext is surrounded by $ symbols. quoted \$ are ignored All slash quotes dollar signs are ignored The number of unquoted dollar signs must be even Return value is a list of (substring, inmath) tuples """ if not len(s): return [(s, False)] #print 'testing', s, type(s) inddollar = nonzero(asarray(equal(s, '$'))) quoted = dict([(ind, 1) for ind in nonzero(asarray(equal(s, '\\')))]) indkeep = [ind for ind in inddollar if not quoted.has_key(ind - 1)] if len(indkeep) == 0: return [(s, False)] if len(indkeep) % 2: raise ValueError( 'Illegal string "%s" (must have balanced dollar signs)' % s) Ns = len(s) indkeep = [ind for ind in indkeep] # make sure we start with the first element if indkeep[0] != 0: indkeep.insert(0, 0) # and end with one past the end of the string indkeep.append(Ns + 1) Nkeep = len(indkeep) results = [] inmath = s[0] == '$' for i in range(Nkeep - 1): i0, i1 = indkeep[i], indkeep[i + 1] if not inmath: if i0 > 0: i0 += 1 else: i1 += 1 if i0 >= Ns: break results.append((s[i0:i1], inmath)) inmath = not inmath return results
def scanner(s): """ Split a string into mathtext and non-mathtext parts. mathtext is surrounded by $ symbols. quoted \$ are ignored All slash quotes dollar signs are ignored The number of unquoted dollar signs must be even Return value is a list of (substring, inmath) tuples """ if not len(s): return [(s, False)] #print 'testing', s, type(s) inddollar = nonzero(asarray(equal(s,'$'))) quoted = dict([ (ind,1) for ind in nonzero(asarray(equal(s,'\\')))]) indkeep = [ind for ind in inddollar if not quoted.has_key(ind-1)] if len(indkeep)==0: return [(s, False)] if len(indkeep)%2: raise ValueError('Illegal string "%s" (must have balanced dollar signs)'%s) Ns = len(s) indkeep = [ind for ind in indkeep] # make sure we start with the first element if indkeep[0]!=0: indkeep.insert(0,0) # and end with one past the end of the string indkeep.append(Ns+1) Nkeep = len(indkeep) results = [] inmath = s[0] == '$' for i in range(Nkeep-1): i0, i1 = indkeep[i], indkeep[i+1] if not inmath: if i0>0: i0 +=1 else: i1 += 1 if i0>=Ns: break results.append((s[i0:i1], inmath)) inmath = not inmath return results
def get_ind_under_point(self, event): 'get the index of the vertex under point if within epsilon tolerance' x, y = zip(*self.poly.verts) # display coords xt, yt = self.poly.get_transform().numerix_x_y(x, y) d = sqrt((xt - event.x)**2 + (yt - event.y)**2) indseq = nonzero(equal(d, amin(d))) ind = indseq[0] if d[ind] >= self.epsilon: ind = None return ind
def get_ind_under_point(self, event): 'get the index of the vertex under point if within epsilon tolerance' x, y = zip(*self.poly.verts) # display coords xt, yt = self.poly.get_transform().numerix_x_y(x, y) d = sqrt((xt-event.x)**2 + (yt-event.y)**2) indseq = nonzero(equal(d, amin(d))) ind = indseq[0] if d[ind]>=self.epsilon: ind = None return ind