2009-08-02 17 views
32

Khi tôi viết toán trong LaTeX, tôi thường cần thực hiện số học đơn giản về các số trong nguồn LaTeX của tôi, như 515.1544 + 454 = ???.Có máy tính có cú pháp LaTeX không?

Tôi thường sao chép và dán mã LaTeX vào Google để nhận kết quả, nhưng tôi vẫn phải thay đổi cú pháp theo cách thủ công, ví dụ:

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

phải được thay đổi để

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

Có vẻ không quan trọng khi viết chương trình để thực hiện việc này cho các hoạt động thường được sử dụng nhất. Có máy tính nào hiểu cú pháp này không?

EDIT: Tôi biết rằng việc làm này hoàn toàn là không thể (do sự cố tạm dừng). Làm điều đó cho các trường hợp đơn giản tôi cần là tầm thường. \ frac, \ cdot, \ sqrt và một vài thẻ khác sẽ thực hiện thủ thuật. Chương trình có thể trả về lỗi cho các trường hợp không hiểu.

Trả lời

10

Các Dự án LaTeXCalc được thiết kế để làm việc đó. Nó sẽ đọc một tệp TeX và thực hiện các phép tính. Để biết thêm thông tin, hãy xem trang chủ tại http://latexcalc.sourceforge.net/

1

IIRC Mathematica có thể thực hiện.

+1

Mathematica có thể sao chép một cái gì đó như LaTeX, nhưng đánh giá những gì bạn dán vào trong đánh dấu LaTeX dường như là không thể. – Joey

+5

Ồ đúng rồi! ToExpression ["tex của bạn ở đây", TeXForm] –

5

Xem xét rằng LaTeX chính nó là một ngôn ngữ đánh dấu hoàn thành Turing-tôi chắc chắn bạn có thể xây dựng một cái gì đó như thế này mà không được xây dựng trực tiếp vào LaTeX. Hơn nữa, LaTeX math matkup tự nó không có ý nghĩa ngữ nghĩa, nó chỉ mô tả sự xuất hiện trực quan.

Điều đó đang được nói, bạn có thể có thể hack cùng một thứ gì đó nhận ra một tập hợp con không thể lập trình của đánh dấu toán LaTeX và rút ra kết quả theo cùng một cách. Nếu tất cả các bạn quan tâm là arithmetics đơn giản với phân số và số nguyên (cẩn thận với phân số thập phân, mặc dù, vì chúng có thể xuất hiện như 3{,}141... trong văn bản tiếng Đức :)) này không nên quá khó. Nhưng một khi bạn bắt đầu với tích phân, ma trận, vv Tôi sợ rằng LaTeX thiếu tính biểu cảm để mô tả chính xác ý định của bạn. Nó là một hệ thống chuẩn bị tài liệu, sau khi tất cả và do đó không phải là rất thích hợp làm đầu vào cho các hệ thống đại số máy tính.

Side lưu ý: Bạn có thể chuyển sang Word mà có trong ngôn ngữ phiên bản một đánh dấu toán học hiện nay đó là đủ LaTeX giống như nhưng vẫn thân thiện với Google với các điều kiện đơn giản:

Illustration of math markup in Microsoft Word http://hypftier.de/dump/word_math_1.png

với sự miễn phí của Microsoft Math add-in bạn thậm chí có thể để cho Lời tính toán biểu thức tại chỗ:

Illustration of the Microsoft Math add-in for Microsoft Word, calculating an expression http://hypftier.de/dump/word_math_2.png

+0

Tôi có lẽ sẽ chỉ viết một kịch bản đơn giản trong elisp để làm những gì bạn đề nghị. Tôi chỉ muốn biết nếu nó đã được viết. –

+0

Không phải là tôi biết, ít nhất. Nhưng tôi nghĩ với một ngôn ngữ kịch bản phong nha, người ta có thể xây dựng một cái gì đó mà ít nhất là làm việc trong khoảng một buổi chiều. – Joey

1

có n một, bởi vì nó thường không thể.

Đánh dấu chế độ toán LaTeX là đánh dấu hiện tại và có những trường hợp mà nó không cung cấp đủ thông tin để tính toán biểu thức.

Đó là một trong những lý do đánh dấu nội dung MathML được tạo ra và cũng là lý do MathML được sử dụng trong Mathematica.MathML thực sự là loại hai ngôn ngữ trong một:

  • đánh dấu trình bày
  • đánh dấu nội dung

Để thực hiện những gì bạn đang sau bạn sẽ phải có MathML với trình bày comibned và đánh dấu nội dung (xem MathML spec).

Theo quan điểm của tôi, tốt nhất bạn nên sử dụng MathML (ngay cả khi nó dài dòng) và chuyển đổi thành LaTeX khi cần thiết. Điều đó nói rằng, tôi cũng thích cú pháp LaTeX tốt nhất và có lẽ những gì chúng ta cần là một cú pháp nhỏ gọn cho MathML (một cái gì đó tương tự trong tinh thần để RelaxNG compact syntax).

11

calc package cho phép bạn thực hiện một số phép tính trong nguồn, nhưng chỉ trong các lệnh như \setcounter\addtolength. Theo như tôi có thể nói, đây không phải là những gì bạn muốn.

Nếu bạn đã sử dụng sage, thì gói sagetex là khá tuyệt vời (nếu không, nó quá mức cần thiết). Nó cho phép bạn có được đầu ra được định dạng độc đáo từ đầu vào như sau:

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)} 
2

Để tính toán với LaTeX, bạn có thể sử dụng gói CalcTeX. Gói này hiểu các yếu tố của ngôn ngữ LaTeX và làm một phép tính, ví dụ vấn đề của bạn là avialble trên http://sg.bzip.pl/CalcTeX/examples/frac.tgz hoặc chỉ xin viết

\ noindent Đối với tính toán xin vui lòng sử dụng enviromentals sau $ 515,1544 + 454 $ hoặc \ [\ frac {154.7} {25} - (289- \ frac {1337} {42.}) \] hoặc \ bắt đầu {phương trình} 154.7/25- (289-1337/42.) \ kết thúc {equation}

Để biết thêm thông tin, vui lòng xem trang web dự án hoặc liên hệ với tác giả của dự án này. .

3

Có cách để làm những gì bạn muốn không hoàn toàn như cách bạn mô tả.

Bạn có thể sử dụng gói fp (\ usepackage [options] {fp}) gói dấu chấm động sẽ làm bất cứ điều gì bạn muốn; giải phương trình, thêm phân chia và nhiều hơn nữa. Thật không may, nó sẽ không đọc toán LaTeX mà thay vào đó bạn phải làm một cái gì đó khác một chút, tài liệu rất nghèo nên tôi sẽ đưa ra một ví dụ ở đây.

ví dụ nếu bạn muốn làm (2x3)/5 bạn nên gõ: lệnh

\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 luôn ibvisible, chỉ FPprint in kết quả gắn liền với nó để tài liệu của bạn sẽ không được lộn xộn, Các lệnh FP có thể được đặt bất cứ nơi nào bạn muốn (không phải động từ) miễn là chúng nằm trước FPprint liên quan.

1

Để thực hiện phép toán trong chính LaTeX, bạn cũng có thể xem gói pgfmath, gói này mạnh hơn và thuận tiện hơn gói calc. Bạn có thể tìm hiểu cách sử dụng nó từ Phần VI của Hướng dẫn sử dụng gói TikZ và PGF mà bạn có thể tìm thấy ở đây (phiên bản 2.10 hiện tại): http://mirror.unl.edu/ctan/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf

1

Máy tính của tôi có thể thực hiện điều đó. Để có được đầu ra được định dạng, bấm đúp vào công thức kết quả và nhấn ctrl + c để sao chép nó.

Nó có thể làm những thứ khá tiên tiến (phân biệt, tích phân dễ dàng (và không dễ dàng) ...).

https://calculator-algebra.org/cgi-bin/calculator?request=calculator&mainInput=%5cfrac%7b1%2b2%7d%7b3%7d%3b%0ad%2fdx%28arctan%20%282x%2b3%29%29

+0

Liên kết của bạn đã chết. –

+0

Cảm ơn bạn đã nhắc tôi, cập nhật liên kết. –

+0

Cảm ơn bạn đã làm điều đó! –

2

Chế độ calc Emacs chấp nhận đầu vào mủ cao su. Tôi sử dụng nó hàng ngày. Nhấn "d", tiếp theo là "L" để vào chế độ đầu vào mủ cao su. Nhấn "'" để mở lời nhắc nơi bạn có thể dán tex của mình.

Bất cứ ai saing nó là không thể là sai.

+0

Âm thanh tuyệt vời.Đã thử nó và tôi thực sự có thể vượt qua chuỗi ở trên, nhưng sau đó tôi bị mất vì tôi không biết làm thế nào để chuyển đổi nó thành một dạng có thể đọc được. Nó cũng không đơn giản hóa tự động. Tôi phải nhập "0 +" để đánh giá nó. –

5

Như Andy đã nói, câu trả lời là có một máy tính có thể hiểu hầu hết các công thức cao su: Emacs.

Hãy thử các bước sau (giả sử emacs vani):

  1. mở emacs
  2. Mở tập tin .tex của bạn (hoặc kích hoạt mủ-mode)
  3. vị trí điểm ở đâu đó giữa hai $$ hoặc ví dụ bên trong môi trường bắt đầu/kết thúc của công thức (hoặc thậm chí là ma trận).
  4. sử dụng calc nhúng chế độ cho khiếp sợ tối đa

Vì vậy, với điểm trong công thức bạn đã cho ở trên:

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

báo chí C-x * d để trùng lặp công thức ở dòng bên dưới và nhập calc-embedded chế độ nên đã kích hoạt một biến thể latex của calc cho bạn. Bộ đệm của bạn bây giờ trông giống như sau:

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

$\frac{-37651}{150}$` 

Lưu ý rằng phần đã được chuyển đổi hết mức có thể.Làm như vậy một lần nữa (C-x * d) và nhấn c f để chuyển đổi các phân đoạn thành một số điểm nổi mang lại bộ đệm sau:

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

$\frac{-37651}{150}$ 

$-251.006666667$ 

tôi đã sử dụng C-x * d lặp lại trong các công thức và sau đó vào chế độ nhúng để có các giá trị trung gian Tuy nhiên, cũng có C-x * e tránh trùng lặp và chỉ cần nhập chế độ được nhúng cho công thức hiện tại.

Nếu bạn quan tâm bạn thực sự cần có một cái nhìn tại trang thông tin cho Emacs Calc - Embedded Mode. Và nói chung sự giúp đỡ cho Gnu Emaca Calculator cùng với sự tương tác tuyệt vời tutorial.

3

Bạn chỉ có thể dán nó vào symbolab mà như một phần thưởng có bước miễn phí bởi các giải pháp bước. Cũng kể từ khi symbolab sử dụng mathquill nó ngay lập tức định dạng mủ của bạn.

1

Có là không có, bởi vì nó thường là không thể. Chế độ toán LaTeX đánh dấu là đánh dấu hiện tại và có các trường hợp trong đó không cung cấp đủ thông tin để tính toán biểu thức.

Bạn đang đúng. LaTeX vì nó không cung cấp đủ thông tin để thực hiện bất kỳ phép tính nào. Hơn nữa, nó không đại diện cho bất kỳ thông tin nào để thực hiện nó. Nhưng không ai ngăn cản việc định dạng LaTeX thành văn bản chứa thông tin như vậy. Đó là một con đường khó khăn, bởi vì bạn cần xây dựng một hệ thống các quy tắc chồng lên nội dung của văn bản trong định dạng Latex cần phải chứa rằng nó sẽ được người thông dịch của bạn nhận ra. Và sau đó thuyết phục người dùng rằng nó là cần thiết để tìm hiểu, vv ... Cách dễ nhất để tạo ra một máy tính hợp lý và trực quan của các biểu thức toán học. Và biểu thức đã có thể chuyển đổi latex. Nó gần giống như những gì bạn nói. Điều này được thực hiện trong chương trình mà tôi đã chỉ ra. AnEasyCalc cho phép nhập một biểu thức khi bạn nhập văn bản mặt phẳng vào bất kỳ trình soạn thảo văn bản nào. Nó kiểm tra, tính toán và tạo ra chuỗi LateX bởi chính nó sau đó. Công việc rất dễ dàng và nhanh chóng của nó. Chỉ cần thử và bạn sẽ thấy điều đó.

0

Đây không phải là chính xác những gì bạn đang yêu cầu nhưng nó là một gói đẹp mà bạn có thể bao gồm trong một tài liệu LaTeX để làm tất cả các loại hoạt động bao gồm cả số học, giải tích và thậm chí vectơ và ma trận:

Gói tên là "máy tính"

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

+1

Vui lòng bao gồm thêm thông tin trong câu trả lời của bạn từ tệp PDF. –

+0

Hmm ... Tôi không chắc chắn ý bạn là gì. Tất cả thông tin có trong tệp PDF. Bây giờ, nếu câu trả lời của tôi quá ngắn, hãy chuyển nó từ "trả lời" sang "bình luận". Tôi không biết làm thế nào để làm điều đó, và ngay cả khi tôi biết tôi sẽ không có ưu tiên. Danh tiếng của tôi chỉ là "1" :(. –

Các vấn đề liên quan