sd容器-latex

Latex

Latex是盛放数学公式的容器

方法 描述
push 推送一段“文本”到公式的末尾,下文会详细描述“文本”可以是什么
lfloor 添加一个到公式的末尾
rfloor 添加一个到公式的末尾
equiv 添加一个到公式的末尾
sup 添加一个上标
sub 添加一个下标

push

push的对象可以是一段字符串,可以是任意具有font_size方法的对象,还可以是另外一个Latex对象,下图分别展示了这三种情况:

let AplusB = sd.Latex()
    .push("a")
    .push("+")
    .push("b");
let ImageplusRect = sd.Latex()
    .push(ImageRect())
    .push("+")
    .push(TextRect().color(C.RED));
let CplusD = sd.Latex()
    .push("c")
    .push("+")
    .push("d")
    .push("=")
    .push(AplusB);

符号

在Latex中有各种数学符号,例如,直接调用对应函数就可以在字符串末尾添加一个对应的符号,如下图所示:

let eq = sd.Latex(svg)
    .lfloor()
    .push("c")
    .push("/")
    .push("d")
    .rfloor()
    .equiv()
    .push("1");

sup/sub

supsub分别用来定义上标和下标,上标和下标既可以是一个字符串,也可以是任意具有font_size方法的对象,还可以是另一个Latex对象,如下图所示:

let exp1 = sd.Latex(svg)
    .push("(")
    .push("a")
    .push("+")
    .push("b")
    .push(")")
    .sup("c");
let exp2 = sd.Latex(svg)
    .push("(")
    .push(sd.Latex(svg).push("a").sub("i,k").sup("F"))
    .push("+")
    .push(sd.Latex(svg).push("b").sub("k,j").sup("G"))
    .push(")")

frac

即类似的效果,如下图所示

let exp = sd.Latex(svg)
    .frac("c", "d")
    .push("+")
    .frac(sd.Latex(svg).push("a").push("+").push("b"), 
          sd.Latex(svg).push("e").push("+").push("f"))
    .push("=")
    .push("1");

动画化the Latex!

如果仅仅是把Latex画出来,而不能动画化它,也太无聊了

对于一个Latex,我们是可以选择它的内部元素,进行交换/删除等操作的(等其他操作:TODO)

方法 描述
swap(a,b) 交换排位为a和b的两个数学元素
erase(a) 删除排位为a的这个数学元素
insert_after(a,method,args) 在排位为a的数学元素后面,用method(args)添加一个数学元素