Есть ли калькулятор с LaTeX-синтаксисом? - PullRequest
40 голосов
/ 02 августа 2009

Когда я пишу математику в LaTeX, мне часто приходится выполнять простую арифметику с числами в моем источнике LaTeX, например 515.1544 + 454 = ???.

Я обычно копирую и вставляю код LaTeX в Google, чтобы получить результат, но мне все равно приходится вручную менять синтаксис, например,

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

должно быть изменено на

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

Кажется тривиальным написать программу, которая делает это для наиболее часто используемых операций. Есть ли калькулятор, который понимает этот синтаксис?

EDIT: Я знаю, что сделать это совершенно невозможно (из-за проблемы остановки). Делать это для простых случаев, которые мне нужны, тривиально. \ frac, \ cdot, \ sqrt и несколько других тегов помогут. Программа может просто вернуть ошибку для случаев, которые она не понимает.

Ответы [ 17 ]

20 голосов
/ 05 февраля 2012

WolframAlpha может принимать данные в форме TeX.

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

15 голосов
/ 16 июня 2010

Проект LaTeXCalc предназначен именно для этого. Он прочитает файл TeX и выполнит вычисления. Для получения дополнительной информации посетите домашнюю страницу http://latexcalc.sourceforge.net/

13 голосов
/ 02 августа 2009

Пакет calc позволяет выполнять некоторые вычисления в источнике, но только внутри таких команд, как \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)}
6 голосов
/ 17 января 2015

Как говорит Энди, ответ да есть калькулятор, который может понять большинство латексных формул: Emacs.

Попробуйте выполнить следующие действия (при условии, что ванильный 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 вместе с потрясающим интерактивным учебником .

5 голосов
/ 02 августа 2009

Учитывая, что сам LaTeX является языком разметки с полной Тьюрингом, я сильно сомневаюсь, что вы можете создать нечто подобное, не встроенное непосредственно в LaTeX. Более того, сам математический математику LaTeX не имеет почти никакого семантического значения, он просто описывает внешний вид.

При этом вы, вероятно, можете взломать что-то, что распознает непрограммируемое подмножество математической разметки LaTeX и выдает результат таким же образом. Если все, что вас интересует, - это простая арифметика с дробями и целыми числами (хотя осторожно с десятичными дробями, поскольку они могут отображаться как 3{,}141... в немецких текстах :)), это не должно быть слишком сложно. Но как только вы начнете с интегралов, матриц и т. Д., Я боюсь, что LaTeX не хватает выразительности, чтобы точно описать ваши намерения. В конце концов, это система подготовки документов, и поэтому она не очень подходит в качестве входных данных для систем компьютерной алгебры.

Примечание: Вы можете переключиться на Word, который имеет - в его текущей версии - язык математической разметки, который достаточно похож на LaTeX (теперь он даже поддерживает разметку LaTeX) и при этом все еще удобен для Google для более простых терминов:

Illustration of math markup in Microsoft Word

С помощью бесплатной надстройки Microsoft Math вы даже можете позволить Word вычислять выражения на месте:

Illustration of the Microsoft Math add-in for Microsoft Word, calculating an expression

5 голосов
/ 13 апреля 2010

Вы можете запустить функцию R, называемую Sweave, в (в основном TeX с некоторым R) файле, который может заменить выражения R их результатами в Tex.

Учебное пособие можно найти здесь: http://www.scribd.com/doc/6451985/Learning-to-Sweave-in-APA-Style

4 голосов
/ 15 октября 2014

Мой калькулятор может это сделать. Чтобы получить форматированный вывод, дважды щелкните формулу результата и нажмите Ctrl + C, чтобы скопировать ее.

Он также может выполнять довольно сложные задачи (дифференцирование, простые интегралы (и не , а простые ) ...).

https://calculator -algebra.org / CGI-BIN / калькулятор? Запрос = калькулятор & mainInput =% 5cfrac% 7b1% 2b2% 7d% 7B3% 7d% 3b% 0ad% 2fdx% 28arctan% 20% 282x% 2B3 % 29% 29

3 голосов
/ 04 января 2011

Есть способ сделать то, что вы хотите, но не совсем так, как вы описываете.

Вы можете использовать пакет 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.

3 голосов
/ 19 февраля 2015

Вы можете просто вставить его в symbolab , который в качестве бонуса предлагает бесплатные пошаговые решения. Кроме того, так как Symbolab использует mathquill, он мгновенно форматирует ваш латекс.

2 голосов
/ 10 ноября 2014

Emacs calc-mode принимает латексный ввод. Я использую это ежедневно. Нажмите «d», затем «L», чтобы войти в режим ввода латекса. Нажмите «», чтобы открыть подсказку, куда вы можете вставить свой текст.

Тот, кто говорит, что это невозможно, неправ.

...