【问题标题】:Is there a calculator with LaTeX-syntax?有没有 LaTeX 语法的计算器?
【发布时间】:2010-11-16 04:32:05
【问题描述】:

当我在 LaTeX 中编写数学时,我经常需要对我的 LaTeX 源中的数字执行简单的算术运算,例如 515.1544 + 454 = ???

我通常将 LaTeX 代码复制粘贴到 Google 中以获取结果,但我仍然需要手动更改语法,例如

\frac{154,7}{25} - (289 - \frac{1337}{42})

必须改为

154,7/25 - (289 - 1337/42)

为最常用的操作编写一个程序来执行此操作似乎微不足道。 有能理解这种语法的计算器吗?

编辑: 我知道这样做完美是不可能的(因为停机问题)。为我需要的简单案例做这件事是微不足道的。 \frac、\cdot、\sqrt 和其他一些标签可以解决问题。程序可能会在它不理解的情况下返回错误。

【问题讨论】:

    标签: latex math calculator


    【解决方案1】:

    WolframAlpha 可以接受 TeX 形式的输入。

    http://blog.wolframalpha.com/2010/09/30/talk-to-wolframalpha-in-tex/

    【讨论】:

    • 这是这个问题的答案。
    • 不过,Wolfram 是一个专有系统。对我们中的一些人来说,这会破坏交易。
    【解决方案2】:

    LaTeXCalc 项目就是为此而设计的。它将读取一个 TeX 文件并进行计算。欲了解更多信息,请查看主页http://latexcalc.sourceforge.net/

    【讨论】:

      【解决方案3】:

      calc package 允许您在源代码中进行一些计算,但只能在 \setcounter\addtolength 等命令中进行。据我所知,这不是你想要的。

      如果您已经使用sage,那么sagetex 包非常棒(如果没有,那就太矫枉过正了)。它允许您从输入中获得格式良好的输出,如下所示:

      The square of
      $\begin{pmatrix}
      1 & 2 \\
      3 & 4
      \end{pmatrix}$
      is \sage{matrix([[1, 2], [3,4]])^2}.
      
      The prime factorization of the current page number is \sage{factor(\thepage)}
      

      【讨论】:

        【解决方案4】:

        正如安迪所说,答案是是的有一个计算器可以理解大多数乳胶公式:Emacs。

        尝试以下步骤(假设 vanilla emacs):

        1. 打开emacs
        2. 打开您的 .tex 文件(或激活乳胶模式)
        3. 将点定位在两个 $$ 或例如在公式(甚至矩阵)的开始/结束环境中。
        4. 使用 calc 嵌入模式获得最大的震撼

        所以在上面给出的公式中有一点:

        $\frac{154,7}{25} - (289 - \frac{1337}{42})$

        C-x * d复制下面一行中的公式,然后进入calc-embedded 模式,该模式应该已经为您激活了 calc 的乳胶变体。您的缓冲区现在如下所示:

        $\frac{154,7}{25} - (289 - \frac{1337}{42})$
        
        $\frac{-37651}{150}$`
        

        请注意,分数尽可能已被转换。再次执行相同操作 (C-x * d) 并按 c f 将小数转换为浮点数会生成以下缓冲区:

        $\frac{154,7}{25} - (289 - \frac{1337}{42})$
        
        $\frac{-37651}{150}$
        
        $-251.006666667$
        

        我使用C-x * d 复制公式,然后进入嵌入模式以获得中间值,但也有C-x * e 避免重复并简单地进入当前公式的嵌入模式。

        如果你有兴趣,你应该看看Emacs Calc - Embedded Mode 的信息页面。总的来说,Gnu Emaca Calculator 的帮助以及很棒的互动 tutorial

        【讨论】:

          【解决方案5】:

          您可以在一个(主要是带有一些 R 的 TeX)文件上运行一个名为 Sweave 的 R 函数,该文件可以用它们在 Tex 中的结果替换 R 表达式。

          教程可以在这里找到:http://www.scribd.com/doc/6451985/Learning-to-Sweave-in-APA-Style

          【讨论】:

            【解决方案6】:

            我的计算器可以做到这一点。要获取格式化输出,双击结果公式并按 ctrl+c 进行复制。

            它也可以做相当高级的事情(微分、简单的积分(而不是那么简单的)......)。

            https://calculator-algebra.org/

            一个示例计算:

            https://calculator-algebra.org:8166/#%7B%22currentPage%22%3A%22calculator%22%2C%22calculatorInput%22%3A%22%5C%5Cfrac%7B1%2B2%7D%7B3%7D%3B%20d%2Fdx(arctan%20(2x%2B3))%22%2C%22monitoring%22%3A%22true%22%7D

            【讨论】:

            • 您的链接已失效。
            • 感谢您这样做!
            • 抱歉...修复了链接。不过,我正在逐渐开始行动:)
            【解决方案7】:

            有一种方法可以做你想做的事,但与你描述的不太一样。

            你可以使用 fp 包 (\usepackage[options]{fp}) 浮点包可以做任何你想做的事情;求解方程,添加除法等等。不幸的是,它不会读取 LaTeX 数学,你必须做一些不同的事情,文档很差,所以我在这里举个例子。

            例如,如果您想做 (2x3)/5,您可以输入:

            \FPmul\p{2}{3}           % \p is the assignment of the operation 2x3
            \FPupn\p{\p{} 7 round}   % upn evaluates the assignment \p and rounds to 7dp
            \FPdiv\q{\p}{5}          % divides the assigned value p by 5 names result q
            \FPupn\q{\q{} 4 round}   % rounds the result to 4 decimal places and evaluates
            $\frac{2\times3}{5}=\FPprint\q$  % This will print the result of the calculations in the math.
            

            FP 命令始终是可见的,只有 FPprint 打印与其关联的结果,这样您的文档就不会乱七八糟,FP 命令可以放在任何您希望的位置(不是动词),只要它们在关联的 FPprint 之前。

            【讨论】:

              【解决方案8】:

              您可以将其粘贴到 symbolab 中,作为奖励,它提供免费的分步解决方案。此外,由于 symbolab 使用 mathquill,它会立即格式化您的乳胶。

              【讨论】:

                【解决方案9】:

                考虑到 LaTeX 本身是一种图灵完备的标记语言,我强烈怀疑您是否可以构建类似这样的东西,而不是直接内置到 LaTeX 中。此外,LaTeX 数学 matkup 本身几乎没有语义含义,它只是描述视觉外观。

                话虽如此,您可能可以将识别 LaTeX 数学标记的非可编程子集并以相同方式吐出结果的东西组合在一起。如果您只对带有分数和整数的简单算术感兴趣(不过,请注意小数,因为它们在德语文本中可能显示为3{,}141... :)),这应该不会太难。但是一旦你从积分、矩阵等开始。我担心 LaTeX 缺乏表达能力来准确描述你的意图。毕竟它是一个文档准备系统,因此不太适合作为计算机代数系统的输入。

                旁注:您可以切换到 Word,它在当前版本中具有足够类似于 LaTeX 的数学标记语言(现在它甚至支持 LaTeX 标记),但仍然是 Google-对更简单的术语友好:

                使用免费的 Microsoft Math 插件,您甚至可以让 Word 就地计算表达式:

                【讨论】:

                • 我可能会在 elisp 中编写一个简单的脚本来执行您的建议。我只是想知道它是否已经写好了。
                • 至少我不知道。但我认为使用体面的脚本语言可以构建至少在一个下午左右工作的东西。
                • @Glorfindel:我自己的帖子总是使用 hypftier.de/dump 作为图像,因为这是我控制的位置,在可预见的未来不会消失(它也早于现在的 Imgur )。无需在下方添加源注释。
                • 好的,谢谢。我会更新我的机器人以反映这一点……可能在周末的某个地方。
                【解决方案10】:

                没有,因为通常是不可能的。

                LaTeX 数学模式标记是表示性标记,在某些情况下它不能提供足够的信息来计算表达式。

                这是创建 MathML 内容标记的原因之一,也是在 Mathematica 中使用 MathML 的原因之一。 MathML 实际上是两种语言合二为一:

                • 演示标记
                • 内容标记

                要完成你的目标,你必须拥有 MathML 以及组合的演示和内容标记(请参阅MathML spec)。

                在我看来,您最好的选择是使用 MathML(即使它很冗长)并在必要时转换为 LaTeX。也就是说,我也最喜欢 LaTeX 语法,也许我们需要一个紧凑的 MathML 语法(在精神上类似于 RelaxNG compact syntax)。

                【讨论】:

                  【解决方案11】:

                  对于使用 LaTeX 进行的计算,您可以使用 CalcTeX 包。 这个包理解 LaTeX 语言的元素并进行计算,例如你的问题是 avialble http://sg.bzip.pl/CalcTeX/examples/frac.tgz 或者只是请写

                  \noindent 计算请使用以下环境 $515.1544 + 454$ 要么 \[ \frac{154.7}{25}-(289-\frac{1337}{42.}) \] 要么 \开始{方程} 154.7/25-(289-1337/42.) \end{方程}

                  欲了解更多信息,请访问项目网站或联系该项目的作者。

                  【讨论】:

                    【解决方案12】:

                    为了在 LaTeX 本身中执行数学运算,您还可以查看 pgfmath 包,它比 calc 包更强大、更方便。您可以从 The TikZ and PGF Packages Manual 的第 VI 部分了解如何使用它,您可以在此处找到(当前版本为 2.10):http://mirror.unl.edu/ctan/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf

                    【讨论】:

                      【解决方案13】:

                      Emacs 计算模式接受乳胶输入。我每天都用它。按“d”,然后按“L”进入 Latex 输入模式。按“'”打开一个提示,您可以在其中粘贴您的 tex。

                      说不可能的人都是错的。

                      【讨论】:

                      • 听起来不错。试过了,我真的可以把上面的字符串输入进去,但后来我迷路了,因为我不知道如何将它转换为可读的形式。它也不会自动简化。我必须输入“0 +”来评估它。
                      【解决方案14】:

                      IIRC Mathematica 可以做到。

                      【讨论】:

                      • Mathematica 可以将某些内容复制为 LaTeX,但似乎无法评估您在 LaTeX 标记中粘贴的内容。
                      • 哦,是的! ToExpression["你的 tex 这里", TeXForm]
                      【解决方案15】:

                      没有,因为通常是不可能的。 LaTeX 数学模式 标记是表示性标记,在某些情况下确实如此 没有提供足够的信息来计算表达式。

                      你是对的。 LaTeX 本身并没有提供足够的信息来进行任何计算。此外,它不代表任何信息来进行计算。但是没有人阻止以 LaTeX 格式编写包含此类信息的文本。 这是一条艰难的道路,因为您需要构建一个规则系统,该系统叠加在 Latex 格式的文本需要包含哪些内容才能被您的解释器识别。然后说服用户有必要学习,等等…… 创建逻辑和直观的数学表达式计算器的最简单方法。并且表达式已经可以转换乳胶。和你说的差不多。这是在我指出的程序中实现的。 AnEasyCalc 允许在任何文本编辑器中键入平面文本时键入表达式。然后它自己检查、计算和生成 LateX 字符串。它的工作非常简单快捷。试试看,你会看到的。

                      【讨论】:

                        【解决方案16】:

                        这不是您想要的,但它是一个不错的包 您可以将其包含在 LaTeX 文档中以执行各种运算,包括算术、微积分甚至向量和矩阵:

                        包名是“计算器”

                        http://mirror.unl.edu/ctan/macros/latex/contrib/calculator/calculator.pdf

                        【讨论】:

                        • 请在您的 PDF 回答中包含更多信息。
                        • 嗯...我不确定你的意思。所有信息都在 PDF 文件中。现在,如果我的答案太短,请将其从“答案”移至“评论”。我不知道该怎么做,即使我知道我也不会有优先权。我的声誉只是“1” :( .
                        【解决方案17】:

                        试试 AnEasyCalc 程序。它可以很容易地获得乳胶配方: http://steamandwater.od.ua/AnEasyCalc/ :)

                        【讨论】:

                          【解决方案18】:

                          latex2sympy2 Python 库可以解析 LaTeX 数学表达式。

                          from latex2sympy2 import latex2sympy
                          
                          tex_str = r"""YOUR TEX MATH HERE"""
                          tex_str = r"\frac{9\pi}{\ln(12)}+22"  # example TeX math
                          
                          sympy_object = latex2sympy(tex_str)
                          evaluated_tex = float(sympy_object.evalf())
                          print(evaluated_tex)
                          

                          此 Python 3 代码将 9?/ln(12)+22(在上面的 LaTeX 中)计算为 33.37842899841745。

                          上面的 sn-p 只处理基本的代数化简(没有变量的数学表达式)。由于该库将 LaTeX 数学转换为 SymPy 对象,因此可以轻松调整和扩展上述代码以处理更复杂的 LaTeX 数学(包括求解导数、积分等...)。

                          latex2sympy2 库可以通过 pip 命令安装:pip install --user latex2sympy2

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2018-02-24
                            • 1970-01-01
                            • 2011-01-21
                            • 1970-01-01
                            相关资源
                            最近更新 更多