示例#1
0
    def frac(self, input, start, rting=()):
        '''Translates fractions into Nemeth.

        Returns touple as above'''
        numerator = get_arg(input, start)
        if numerator[1] < len(input):
            denominator = get_arg(input, numerator[1])
        else:
            denominator = ("", numerator[1], numerator[1])
        if numerator[0].isdigit() and denominator[0].isdigit():
            translation = numerator[0] + "/" + denominator[0]
            if rting != ():
                for j in range(len(numerator[0])):
                    self.rt.append((rting[1] + j, rting[0] + numerator[2] + j))
                for j in range(len(denominator[0])):
                    self.rt.append((rting[1] + j + 1 + len(numerator[0]),
                                    rting[0] + denominator[2] + j))
        else:
            if rting == ():
                translation = "?" + self.translate(
                    numerator[0]) + "/" + self.translate(denominator[0]) + "#"
            else:
                transnum = self.translate(
                    numerator[0], (rting[0] + numerator[2], rting[1] + 1))
                transden = self.translate(
                    denominator[0],
                    (rting[0] + denominator[2], rting[1] + len(transnum) + 2))
                translation = "?" + transum + "/" + transden + "#"
        return (translation, denominator[1])
示例#2
0
    def frac(self,input,start,rting=()):
        '''Translates fractions into ueb.

        Returns touple as above'''
        numerator=get_arg(input,start)
        denominator=get_arg(input,numerator[1])

        if str(numerator[0]).isdigit () and str(denominator[0]).isdigit():
            translation = "#"
            for number in numerator[0]: translation+=self.upperNumbers[int(number)]
            translation+="/"
            for number in denominator[0]: translation+=self.upperNumbers[int(number)]
            if rting != ():
                for j in range(len(numerator[0])): self.rt.append((rting[1]+j+1,rting[0]+numerator[2]+j))
                for j in range(len(denominator[0])):
                    self.rt.append((rting[1]+j+2+len(numerator[0]),rting[0]+denominator[2]+j))
            self.lastnumber=denominator[1]
        else: # complex fraction
            self.lastnumber = -1 
            if rting != ():
                transnum=self.translate(numerator[0],(rting[0]+numerator[2],rting[1]+2))
                self.lastnumber = -1 
                transden=self.translate(denominator[0],(rting[0]+denominator[2],rting[1]+len(transnum)+4))
                translation=";("+transum+"./"+transden+";)"
            else:
                translation = ";("+self.translate (numerator[0])+"./"
                self.lastnumber = -1
                translation+=self.translate(denominator[0])+";)"
        return (translation, denominator[1])
    def sqrt(self,input,start):
        '''Translates roots into speech.
        returns touple.'''
        
        if self.sqrt_with_two_args.match(input):
            first_arg =latex_access.get_optional_arg(input, start)
            second_arg=get_arg(input, first_arg[1])
            
            if first_arg[0] =="2":
                translation =u" square "
            elif first_arg[0] =="3":
                translation =u" cube "
            elif first_arg[0].lower() =="n":
                translation =u"enth "
            elif first_arg[0].lower() =="x":
                translation =u"exth "
            elif first_arg[0] =="":
                translation =u""
            else:
                translation =first_arg[0] +u"th "
                
            if len(second_arg[0]) ==1:
                translation +=u"root " +self.correct(self.translate(second_arg[0]))
            else:
                translation +=u"root of " +self.correct(self.translate(second_arg[0]))
                translation +=u" end root "
            return (translation,second_arg[1])

        arg=get_arg(input,start)
        if arg[0].isdigit() or len(arg[0])==1:
            translation =u" root " +arg[0] +u" "
        else:
            translation =u" root of " +self.correct(self.translate(arg[0])) +u" end root "
        return (translation,arg[1])
 def newcommand(self, input, start):
     command = latex_access.get_arg(input, start)
     args = latex_access.get_optional_arg(input, command[1])
     if args:
         start = args[1]
         args = int(args[0])
     else:
         args = 0
         start = command[1]
     translation = latex_access.get_arg(input, start)
     self.preprocessor.add_from_string(command[0], args, translation[0])
     return ("", translation[1])
示例#5
0
	def binom(self, input, start):
		'''Translate binomials into speech.
		Returns touple.'''
		
		arg_1=get_arg(input,start)
		if arg_1[1]<len(input):
			arg_2=get_arg(input,arg_1[1])
		else:
			arg_2=("",arg_1[1])
		
		if len(arg_1[0])==1 and len(arg_2[0])==1:
			translation =" %s alatt %s " % (self.correct(self.translate(arg_1[0])), self.correct(self.translate(arg_2[0])))
		else:
			translation=u" binom, %s alatt %s, binom zár " % (self.correct(self.translate(arg_1[0])), self.correct(self.translate(arg_2[0])))
		return (translation, arg_2[1])
示例#6
0
	def norma(self, input, start):
		m =absertek.match(input)

		if m is not None:
			arg=get_arg("{"+m.group(1)+"}", 0)
			if len(arg[0]) ==1:
				output =self.translate(arg[0])+u" abszolút "
				return (output, arg[1])
			else:
				output =u" abszolút " +self.translate(arg[0]+u" abszolút ")
				return (output, arg[1])
		else:
			arg =get_arg(input, start-1)
			output =u" függőleges "
			return (output, arg[1])
示例#7
0
	def overline(self,input,start):
		arg=get_arg(input,start)
		if arg[0].isdigit() or len(arg[0])==1:
			translation=arg[0]+u" felülvonás "
		else:
			translation=u" felülvonás "+self.translate(self.correct(arg[0])) +u" felülvonás zár "
		return (translation,arg[1])
示例#8
0
	def vect(self,input,start):
		arg=get_arg(input,start)
		if arg[0].isdigit() or len(arg[0])==1:
			translation=arg[0].replace("a", u"á") +u" vektor "
		else:
			translation=u" vektor, "+self.translate(self.correct(arg[0])) +u", vektor zár "
		return (translation,arg[1])
示例#9
0
	def hat(self,input,start):
		arg=get_arg(input,start)
		if arg[0].isdigit() or len(arg[0])==1:
			translation=arg[0]+u" kalap "
		else:
			translation=u" kalap "+self.translate(self.correct(arg[0])) +u" kalap zár "
		return (translation,arg[1])
示例#10
0
	def tilde(self,input,start):
		arg=get_arg(input,start)
		if arg[0].isdigit() or len(arg[0])==1:
			translation=arg[0]+u" hullám "
		else:
			translation=u" hullám "+self.translate(self.correct(arg[0])) +u" hullám zár "
		return (translation,arg[1])
示例#11
0
	def super(self,input,start):
		'''Translate  superscripts into speech.
		Returns a touple with translated string and index of
		first char after end of super.'''
		
		arg_with_minus =re.compile(r"-.?")
		arg=get_arg(input,start)
		#Handle squared and cubed as special cases
		if arg[0] == "2":
			translation=u" négyzet "
		elif arg[0]=="3":
			translation=u" köb "
			
		elif len(arg[0]) <2 or arg_with_minus.match(arg[0]):
			translation =u" ad %s, " % self.correct(self.translate(arg[0]))
			
		#Handle primes
		elif primes.match(arg[0]):
			if arg[0].count("p") ==1:
				if arg[0].count("\\prime") ==1:
					translation=u" vessző "
				else:
					translation=u" " +str(arg[0].count("\\prime")).replace("2", u"két") +u" vessző "
			elif arg[0].count("p") >1:
				translation=u" " +str(self.correct(arg[0]).count("p")).replace("2", u"két") +u" vessző "
				
		elif argprimes.match(arg[0]) and self.handleBracketsAsPrime:
			translation =u" %s " % self.translate(self.correct(arg[0])) +u" vessző "
		else:
			translation = u" ad <sup> %s </sup>" % self.translate(self.correct(arg[0]))
		return (translation, arg[1])
示例#12
0
    def ang(self, input, start):
        '''Translate angles into speech.

        Returns a touple with translated string and index of
        first char after end of angle.'''

        translation = ""
        counter = 0
        arg = get_arg(input, start)
        if ';' in arg[0]:  # we have mins possibly seconds too
            for x in arg[0]:
                if ';' == x:  # we have mins/sec
                    counter = counter + 1
                    if counter == 1:
                        translation = translation + " degrees "
                        continue
                    elif counter == 2:
                        translation = translation + " minutes "
                        continue
                    elif counter == 3:
                        translation = translation + " seconds "
                        continue
                translation = translation + x
            if counter == 1:
                translation = translation + " minutes"
            elif counter == 2:
                translation = translation + " seconds"
        else:
            translation = arg[0] + " degrees"
        return (translation, arg[1])
 def vect(self,input,start):
     arg=get_arg(input,start)
     if arg[0].isdigit() or len(arg[0])==1:
         translation=arg[0] +u" vector "
     else:
         translation =u" vector " +self.correct(self.translate(arg[0])) +u" end vector "
     return (translation,arg[1])
示例#14
0
    def sqrt(self,input,start,rting=()):
        '''Translatesroots in latex.

        Returns a touple as above.'''
        arg=get_optional_arg(input,start)
        if arg:
            translation=";;%9"+self.translate(arg[0])
            arg=get_arg(input,arg[1])
            translation+=self.translate(arg[0])+"+"
        else:
            arg=get_arg(input,start)
            if rting != ():
                translation="%"+self.translate(arg[0],(rting[0]+arg[2],rting[1]+1))+"+"
            else:
                translation="%"+self.translate(arg[0])+"+"
        return (translation,arg[1])
示例#15
0
    def tag(self, input, start):
        '''Translate  tags into Nemeth.

        Returns a touple with translated string and index of
        first char after end of tag.'''
        arg = get_arg(input, start)
        translation = "  {" + arg[0] + "}"
        return (translation, arg[1])
示例#16
0
    def tag(self, input, start):
        '''Translate tags into speech.

        Returns a touple with translated string and index of
        first char after end of tag.'''

        arg = get_arg(input, start)
        translation = " tag left paren " + arg[0] + " right paren "
        return (translation, arg[1])
示例#17
0
 def sqrt(self,input,start):
     '''Translates squareroots into speech.
     
     returns touple.'''
     opt_arg=latex_access.get_optional_arg(input, start)
     if opt_arg:
         arg=get_arg(input,opt_arg[1])
         if opt_arg[0]=="2": opt="square"
         elif opt_arg[0]=="3": opt="cube"
         elif opt_arg[0]=="": opt=""
         else: opt=opt_arg[0]+"th"
     else:
         arg=get_arg(input,start)
         opt=""
     if arg[0].isdigit() or len(arg[0])==1:
         translation="%s root %s" %(opt,arg[0])
     else:
         translation=" begin %s root %s end root" % (opt,self.translate(arg[0]))
     return (translation,arg[1])
示例#18
0
	def frac(self,input,start):
		'''Translate fractions into speech.

		Returns touple.'''
		numerator=get_arg(input,start)
		if numerator[1]<len(input):
			denominator=get_arg(input,numerator[1])
		else:
			denominator=("",numerator[1])
		if len(numerator[0])==1 and len(denominator[0])==1:
			if numerator[0].isdigit() and denominator[0].isdigit():
				translation = numerator[0]+denominators[int(denominator[0])]
				if int(numerator[0])>1:
					translation+=""
				translation+=" "
			else:
				translation =" %s per %s " % (self.correct(numerator[0]), self.correct(denominator[0]))
		else:
			translation=u" tört, %s per %s, tört zár " % (self.translate(self.correct(numerator[0])), self.translate(self.correct(denominator[0])))
		return (translation,denominator[1])
示例#19
0
    def tag(self,input,start, rting=()):
        '''Translate  tags into Nemeth.

        Returns a touple with translated string and index of
        first char after end of tag.'''
        arg=get_arg(input,start)
        if rting != ():
            translation = '"<'+self.translate(arg[0],(rting[0]+arg[2],rting[1]+3))+'">'
        else:
            translation = ' "<'+self.translate(arg[0])+'">'    
        return (translation, arg[1])
    def frac(self,input,start):
        '''Translate fractions into speech.

        Returns touple.'''
        numerator=get_arg(input,start)
        if numerator[1]<len(input):
            denominator=get_arg(input,numerator[1])
        else:
            denominator=("",numerator[1])
        if len(numerator[0])==1 and len(denominator[0])==1:
            if numerator[0].isdigit() and denominator[0].isdigit():
                translation = numerator[0]+denominators[int(denominator[0])]
                if int(numerator[0])>1:
                    translation+="s"
                translation+=" "
            else:
                translation =" %s over %s " % (numerator[0], denominator[0])
        else:
            translation=" begin frac, %s over %s, end frac " % (self.translate(numerator[0]), self.translate(denominator[0]))
        return (translation,denominator[1])
示例#21
0
 def sqrt(self, input, start):
     '''Translates squareroots into speech.
     
     returns touple.'''
     arg = get_arg(input, start)
     if arg[0].isdigit() or len(arg[0]) == 1:
         translation = " root " + arg[0]
     else:
         translation = " begin root " + sb + self.translate(
             arg[0]) + " end root " + sb
     return (translation, arg[1])
    def ln(self,input,start):
        '''Translate natural logs into speech.

        We translate natural logs in the form \ln(x) as
        loen of x. Usually natural logs do not have an extra base as day already to the base e by definition.

The natural log is correctly pronounced as loen and not as ln. 
        
        Returns a touple with translated string and index of
        first char after end of entire logarithm.'''

        ln=get_arg(input,start)
        translation=" loen "
        if len(ln[0]) < 1 or ln[0][0] != "_": # \ln by itself 
            return (translation, ln[2]) # ignore the supposed command 

        translation+="base "
        base=get_arg(input, ln[1])
        translation+=self.translate (base[0])
        translation+=" of "
        return (translation, base[1])
示例#23
0
	def sqrt(self,input,start):
		'''Translates roots into speech.

		returns touple.'''
		if sqrt_with_two_args.match(input):
			first_arg =latex_access.get_optional_arg(input, start)
			second_arg=get_arg(input, first_arg[1])
			
			if self.abbrev_first_root_arg ==True:
				if first_arg[0].isdigit() or len(first_arg[0]) ==1:
					translation =denominators[int(first_arg[0])] +" "
				elif first_arg[0] in ["x", "n"] and len(first_arg[0]) ==1:
					translation =first_arg[0] +u"-ed "
				elif first_arg[0] =="3":
					translation =u" köb "
				else:
					translation =self.correct(self.translate(first_arg[0])) +u". "

			else:
				if first_arg[0] =="3":
					translation =u" köb "
				elif first_arg[0].lower() =="n":
					translation =u"n-edik "
				elif first_arg[0] =="x":
					translation ="x-edik "
				else:
					translation =self.correct(self.translate(first_arg[0])) +u". "
					
			if len(second_arg[0]) ==1:
				translation +=u" gyök " +self.correct(self.translate(second_arg[0]))
			else:
				translation +=u" gyök alatt, "+self.correct(self.translate(second_arg[0])) +u", gyök zár "
			return (translation, second_arg[1])
		
		arg=get_arg(input, start)
		if arg[0].isdigit() or len(arg[0])==1:
			translation=u" gyök " +arg[0]
		else:
			translation=u" gyök alatt, " +self.correct(self.translate(arg[0])) +u", gyök zár"
		return (translation,arg[1])
示例#24
0
    def bar(self, input, start, rting=()):
        '''Handles bar/overline.

        Returns toutple'''
        arg = get_arg(input, start)
        if len(arg[0]) == 1:
            translation = ":%s" % arg[0]
            if rting != (): self.rt.append((rting[1] + 1, rting[0] + arg[2]))
        else:
            if rting == (): translation = ":{%so" % self.translate(arg[0])
            else:
                translation = ":{%so" % self.translate(
                    arg[0], (rting[0] + arg[2], rting[1] + 2))
        return (translation, arg[1])
示例#25
0
    def log(self, input, start):
        '''Translate logs into speech.

        We translate logs in the form \log_a(x) as
        log base a of x

        If the log appaears ambiguous, i.e. we can not reasonably
        determine the base, we shall translate as just "log" followed by
        any usual translation.
        
        Returns a touple with translated string and index of
        first char after end of entire logarithm.'''

        log = get_arg(input, start)
        translation = " log "
        if len(log[0]) < 1 or log[0][0] != "_":  # \log by itself
            return (translation, log[2])  # ignore the supposed command

# Safe to assume log is of the form \log_a(x)
        translation += "base "
        base = get_arg(input, log[1])
        translation += self.translate(base[0])
        translation += " of "
        return (translation, base[1])
示例#26
0
    def sqrt(self, input, start, rting=()):
        '''Translatesroots in latex.

        Returns a touple as above.'''
        arg = get_arg(input, start)
        if arg[0].isdigit() or len(arg[0]) == 1:
            translation = ">" + arg[0]
            if rting != ():
                for j in range(len(arg[0])):
                    self.rt.append((rting[1] + 1 + j, rting[0] + arg[2] + j))
        else:
            if rting != ():
                translation = ">" + self.translate(
                    arg[0], (rting[0] + arg[2], rting[1] + 1)) + "}"
            else:
                translation = ">" + self.translate(arg[0]) + "}"
        return (translation, arg[1])
示例#27
0
    def sub(self, input, start, rting=()):
        '''Translates nemeth subscripts.

        Returns a touple, as above'''
        arg = get_arg(input, start)
        if arg[0].isdigit():
            translation = arg[0]
            if rting != ():
                for j in range(len(arg[0])):
                    self.rt.append((rting[1] + j, rting[0] + arg[2] + j))
        else:
            if rting == ():
                translation = ";" + self.translate(arg[0]) + "\""
            else:
                translation = ";" + self.translate(
                    arg[0], (rting[0] + arg[2], rting[1] + 1)) + "\""
        return (translation, arg[1])
示例#28
0
    def sub(self,input,start,rting=()):
        '''Translates ueb subscripts.

        Returns a touple, as above'''
        arg=get_arg(input,start)
        if len(arg[0]) <=1:
            if rting != ():
                translation = ";5"+self.translate(arg[0],(rting[0]+arg[2],rting[1]+2))
            else:
                translation = ";5"+self.translate(arg[0])
            self.lastnumber = arg[1]
        else:
            if rting != ():
                translation = ";5<"+self.translate(arg[0],(rting[0]+arg[2],rting[1]+3)) + ">"
            else:
                translation = ";5<"+self.translate(arg[0]) + ">"
        return (translation,arg[1])
示例#29
0
    def super(self, input, start):
        '''Translate  superscripts into speech.

        Returns a touple with translated string and index of
        first char after end of super.'''
        arg = get_arg(input, start)
        #Handle squared and cubed as special cases
        if arg[0] == "2":
            translation = " squared "
        elif arg[0] == "3":
            translation = " cubed "
        #Handle primes
        elif latex_access.primes.match(arg[0]):
            translation = " prime " * arg[0].count("\\prime")
        else:
            translation = " to the <sup> %s </sup> " % self.translate(arg[0])
        return (translation, arg[1])
示例#30
0
    def super(self,input,start,rting=()):
        '''Translate  superscripts into UEB.

        Returns a touple with translated string and index of
        first char after end of super.'''
        arg=get_arg(input,start)
        if len(arg[0]) <=1:
            if rting != ():
                translation = ";9" + self.translate(arg[0],(rting[0]+arg[2],rting[1]+2))
            else:
                translation = ";9" + self.translate(arg[0])
            self.lastnumber = arg[1]
        else:
            if rting != ():
                translation = ";9<" + self.translate(arg[0],(rting[0]+arg[2],rting[1]+3))+">"
            else:
                translation = ";9<" + self.translate(arg[0])+">"
        return (translation,arg[1])