package tex
import (
"errors"
"github.com/d2lang/mathjax-go/internal/mml"
)
func (p *parser ) parseChild (source string ) (*mml .Node , error ) {
count := p .state .macroCount
p .state .macroCount = 0
defer func () { p .state .macroCount = count }()
sub := &parser {source : source , state : p .state , display : p .display , inRoot : p .inRoot , activeColor : p .activeColor ,
multiLetterFont : p .multiLetterFont , activeFont : p .activeFont ,
identifierPattern : p .identifierPattern , operatorLetters : p .operatorLetters ,
noAutoOP : p .noAutoOP , fontExplicitEmpty : p .fontExplicitEmpty ,
vectorFactory : p .vectorFactory , vectorFont : p .vectorFont ,
vectorStar : p .vectorStar , vectorAlias : p .vectorAlias ,
genfracPalette : p .genfracPalette , starMacroChildren : p .starMacroChildren ,
derivativeChildren : true }
children , _ , err := sub .parseRow (0 , false )
if err != nil {
return nil , err
}
result := row (children , true )
if sub .activeFont != "" {
applyScopedMathVariant (result , sub .activeFont )
}
return result , nil
}
func (p *parser ) differential (name string , after **derivativeAutoOpen ) ([]*mml .Node , error ) {
power , hasPower , err := p .readBrackets (nil )
if err != nil {
var failure *Error
if errors .As (err , &failure ) && failure .ID == "MissingCloseBracket" {
return nil , texError (failure .ID , "Could not find closing ']' for argument to %s" , "\\" +name )
}
return nil , err
}
op := "\\diffd"
if name == "variation" || name == "var" {
op = "\\delta"
}
if hasPower {
op += "^{" + power + "}"
} else {
op += " "
}
p .skipNextSpaces ()
parens := p .pos < len (p .source ) && p .source [p .pos ] == '('
braces := p .pos < len (p .source ) && p .source [p .pos ] == '{'
if !parens {
arg , _ , err := p .readArgument (name , !braces )
if err != nil {
return nil , err
}
op += arg
}
parsed , err := p .parseChild (op )
if err != nil {
return nil , err
}
if braces {
return []*mml .Node {texAtom (parsed , mml .TeXClassOp )}, nil
}
if parens {
*after = &derivativeAutoOpen {}
}
return unwrapInferred (parsed ), nil
}
The pages are generated with Golds v0.8.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .