public void ShowData(string title, string message = null, string rightExpression = null, List <FormulaNode> userExpression = null) { Title.text = title.Trim(); if (string.IsNullOrEmpty(message)) { Detail.gameObject.SetActive(false); } else { Detail.gameObject.SetActive(true); Detail.text = message; } if (rightExpression == null) { ExpressionPanel.SetActive(false); } else { ExpressionPanel.SetActive(true); LatexEquationRender.Render(rightExpression, res => { Expression.FitImage(res, 220, 50); }); } if (userExpression == null) { FormulaControllerPanel.SetActive(false); } else { FormulaControllerPanel.SetActive(true); Formula.LoadFormula(userExpression); Formula.interactable = false; } }
/// <summary> /// 异步校验表达式 /// </summary> /// <param name="error"></param> public void Validate(UnityAction <bool, string> error) { var text = StringExpressionInput.text; Loading.SetActive(true); try { var sym = CalcArgs.GetSymexpr(text); var list = new List <string>(); GetAllFactors(sym, list); foreach (var item in RecordManager.tempRecord.quantities) { if (item.processMethod == 1) { if (list.Contains("k_" + item.Symbol) || list.Contains("Δ" + item.Symbol)) { Loading.SetActive(false); error?.Invoke(false, $"直接计算的物理量{item.Name}不能使用变化量或变化率"); return; } } else if (item.processMethod == 2) { if (list.Contains("k_" + item.Symbol) || list.Contains(item.Symbol)) { Loading.SetActive(false); error?.Invoke(false, $"逐差法处理的物理量{item.Name}不能直接使用其测量平均值或变化率"); return; } } else if (item.processMethod == 3 || item.processMethod == 4) { if (list.Contains(item.Symbol) || list.Contains("Δ" + item.Symbol)) { Loading.SetActive(false); error?.Invoke(false, $"物理量{item.Name}不能直接使用其测量平均值或变化量"); return; } } } LatexEquationRender.Render(sym.ToLaTeX(), action: _ => { Loading.SetActive(false); var(res, message) = StaticMethods.ValidExpression(ExpressionToCalc(text)); error?.Invoke(res, message); }, errorHandler: () => { Loading.SetActive(false); error?.Invoke(false, "表达式渲染失败"); }); } catch { Loading.SetActive(false); error?.Invoke(false, "表达式格式不正确"); } }
private void RenderFormula() { var tex = EnterExpression.ExpressionToShow(RecordManager.tempRecord.stringExpression); LatexEquationRender.Render(tex, res => { FormulaImage.FitImage(res, 270, 40); }); }
public void Render() { var text = _Expression.text; LatexEquationRender.Render(CalcArgs.GetSymexpr(text).ToLaTeX(), x => { _Image.FitHeight(x); }); }
/// <summary> /// 渲染合成量表达式图片 /// </summary> public void Render() { var exp = CalcArgs.GetSymexpr( EnterExpression.ExpressionToShow(RecordManager.tempRecord.stringExpression)) .ToLaTeX(); LatexEquationRender.Render(exp, x => { _Image.FitImage(x, 270, 40); }); }
/// <summary> /// 渲染表达式 /// </summary> public void Render() { var text = StringExpressionInput.text; if (string.IsNullOrEmpty(text)) { LatexEquationRender.Render("expr.", LoadSprite); } else { LatexEquationRender.Render(CalcArgs.GetSymexpr(text).ToLaTeX(), LoadSprite); } }
private void Start() { Instance = this; }
private void ShowImage() { var latex = $@"{{\Delta {quantity.Symbol}}}=\frac{{\delta {quantity.Symbol}}}{{{quantity.DifferencedData.data.Count}}}"; LatexEquationRender.Render(latex, res => previewImage.FitImage(res, 170, 40)); }
private void ShowImage() { LatexEquationRender.Render("y=a+bx", previewImage.FitWidth); }