代码之家  ›  专栏  ›  技术社区  ›  Kasper

如何在最大值中将分数显示为混合数?

  •  4
  • Kasper  · 技术社区  · 7 年前

    3/2 1 1/2 . 我只需要这个乳胶输出。

    (%i4) tex(3/2);
    $${{3}\over{2}}$$
    (%o4)                                false
    

    因此,我想得到的不是这个:

    (%i4) tex(3/2);
    $$1 {{1}\over{2}}$$
    (%o4)                                false
    

    2 回复  |  直到 7 年前
        1
  •  3
  •   Robert Dodier    7 年前

    您可以通过以下方式指定纹理属性: texput . 有理数表示为 ((RAT) mmm nnn) 你可以通过 :lisp $x 哪里 x 是一个最大变量,它是一个有理数。因此,可以通过以下方式设置TeX属性:

    texput (?rat, texrat);
    

    texrat 定义为(例如):

    texrat(x) := block ([i, r], 
                        i:floor(x), 
                        r:x-i, 
                        sconcat ("{", i, "} {{", num(r), "}\\over{", denom(r), "}}"));
    

    例子:

    (%i11) tex(sin(12/7));
    $$\sin \left({1} {{5}\over{7}}\right)$$
    

    注意,新函数应用于有理数,即使它在另一个运算符内。

    特斯拉特

    请注意 ? 之前 rat 得克萨斯州 .

        2
  •  1
  •   Eelvex    7 年前

    我不认为这是一个选项,但它很容易使您自己的功能。

    texixed(a):= tex(printf(false, "~a ~a", a-mod(a,1) , mod(a,1)));
    texixed(5/3);
       $$\mbox{{}1 2/3{}}$$
    texixed(7/2);
       $$\mbox{{}3 1/2{}}$$