mathnet/mathnet-symbolics

Latex

troelschristensen opened this issue ยท 8 comments

Hi.

I'm writing my code in visual basic. I can get the code to work, when trying to simplify algebra strings. This works.
But I can't get it to stop simplifying/reducing, when "converting" to latex.
Is there any way to make an expression (like Infix.ParseOrThrow("2/5q+2/5q"), that not gets simplifyed (to 4/5*q)?

Eg.
Dim str = "2/5q+2/5q"
Dim str_latex = LaTeX.Format(str ) *!! I know this does not work!!
Dim str_simplify = Infix.ParseOrThrow(str)
Dim str_simplify_latex = LaTeX.Format(str_simplify )

dim str_new = str_latex & " = " & str_simplify_latex

I know that this does not work, but it explains, what I'm trying to do. I dont always want it to simplify the expression, but can't do LaTeX.Format(str ).

If I use the str_simplify_latex, then it shows ' 4/5*q
But I really want it to show \frac{2}{5}q+\frac{2}{5}q

Can anyone help me? Thx.

I think it's impossible currently (unsure since I didn't use the library for a while)

But this feature is planned, see

#79 (comment)

for details.

Thank you @FoggyFinder.๐Ÿ‘ Ok, then I must wait for it to be added. Could be so great.๐Ÿ‘Œ๐Ÿ™Œ

Sent with GitHawk

@troelschristensen actually there is support for it already.

You can use Infix.parseVisual function to create VisualExpression and turn it to the latex via LaTeX.formatVisual.

Sample:

open MathNet.Symbolics

let visual = Infix.parseVisual "2/5 * q + 2/5 * q"

let latex = 
    visual
    |> Result.map(fun ve -> LaTeX.formatVisual ve)

match latex with
| Result.Ok l -> printfn "Ok: %s" l
| Result.Error err -> printfn "Error: %s" err

Output

Ok: \frac{2}{5}q + \frac{2}{5}q

Thank you, @FoggyFinder .

Sadly I don't understand F# and therefore can't try your code.
Do you by any chance think that you could write this in vb.net (or c#) ?

I would be very gratefull. This would really be of great help.

I tried this, but this is not working:
Dim strvisual = Infix.ParseVisual("2/5 * q + 2/5 * q")
Dim strlatex = LaTeX.FormatVisual(strvisual)

It says error (LaTeX.FormatVisual(strvisual)) Value of type 'FSharpResult(Of VisualExpression, String)' cannot be converted to 'VisualExpression'.

Sure

Imports MathNet.Symbolics
Module Program
    Sub Main(args As String())
        Dim visual = Infix.ParseVisual("2/5 * q + 2/5 * q")
        If visual.IsOk Then
            Dim strlatex = LaTeX.FormatVisual(visual.ResultValue)
            Console.WriteLine(strlatex)
        End If
    End Sub
End Module

GREAT @FoggyFinder !! Now it works. Thank you for your help.

Only thing I can't get to "work" now is for the multiplication sign to be shown on some occasions.

Eg.

2*( 3 +3x) displays 2(3+3x)
I would like it to display 2
(3+3x) or 2ร—(3+3x) or 2โ‹…(3+3x)

My users on my website can choose between these 3 types of multiplication signs ( *, ร— and โ‹…).

Can this be done? Can I somehow define a symbol in the string, that the latex.formatvisual function skips?

Can I somehow define a symbol in the string, that the latex.formatvisual function skips ?

I'd suggest creating a separate issue for this.

You could try to copy the part of code that produces the output from the source and change it appropriately.

Ok, thanks @FoggyFinder .

I'm not that experienced. That would be way over my head. :) But I close the issue and mark as solved. Starting a new issue after that.