如何高效的聯合使用 Mathematica 和 LaTeX?

Mathematica的長處是計算,LaTeX的長處是排版,怎麼樣把他們結合起來,高效的使用。

如果是基於LaTeX的調用Mathematica的方式(我不知道有沒有這樣的宏包),就像SageTeX一樣可以在TeX中包含Sage代碼,編譯完畢將代碼部分轉為計算結果排版輸出。如果能夠動態的編譯,可以實時預覽,那就最好不過了。

如果是基於Mathematica的話,感覺排版不是十分給力(初學,好多功能不懂,說錯了請輕拍)。內含的排版工具簡單的學習了一下,但是感覺不太好用。一方面各種各樣的菜單操作讓人很不爽,雖然Alt+數字定義了一些樣式,但是遠遠不夠用。很常用的Item在裡面就木有。另一方面,自動編號功能太弱了,還要不停地要使用菜單操作。還有我不知道怎麼實現這麼一個效果,比如:我要在文本中間插入某一個運算結果:{text}{input}{text},當我輸完中間的input樣式部分,按ctrl+Enter,該行就分散對齊了,不知道什麼原因。我想要的效果是 如果我輸入: {bla}{Simplify[Sin{2x]/Cos[x]]}{blabla}:它會輸出:{blabla}{sin x}{blabla},不過出現帶input,output編號的東東。

應該怎麼解決這麼一個問題??


更新!!!

今天看到一個屌爆天的東西,也許正是樓主你需要的。

https://github.com/Akollek/LaTeX-Alpha

用calc{Mathematica Code}直接在LaTeX中引用Mmtc的計算,用graphic引用作圖。

放兩張圖大家感受一下:

====================================================

這個問題問的好亂,,(但願是我理解力差吧),下面針對你題干里提到的問題我一條一條說。

不過能力所限,這個答案沒提到「高效聯合使用」,見諒。

  1. LaTeX要調用Mathematica代碼的話,很重要的一個問題是MathKernel得是開啟狀態,我自己並沒有覺得有這樣的必要。需要計算就直接用Mathematica計算好了,Mathematica可以輸出為標準LaTeX格式的代碼,到LaTeX里直接粘貼就OK了。

  2. Mathematica本身也可以當一個不錯的排版工具用,當然這個排版更適合作為一種文檔查看,而不是像LaTeX那樣更傾向於列印效果或者紙版文檔的效果。Mathematica自家的大多文檔、演示、以及SlideShow(即演示幻燈),這是Mathematica9自帶的SlideShow模板庫。

  3. 你說的Item,以及你沒提到的ItemNumbered等,都是內置在Mathematica裡面的。

  4. 在Mathematica中輸入文本和Expression混排,我覺得是不合適的。LaTeX是排版軟體,它可以不關心你的dy/dx其中d和x/y是什麼關係,但Mathematica不行,它必須明確其中任何一個字母的含義,是文本就是文本,是表達式就是表達式。要想混排,我想到一個權宜之計就是全轉換成文本。


你可以試試LyX,它可以呼叫mathematica等代數運算工具,充當他們的前端,我沒用過這個功能,不知方便不方便;

排版方面,LyX的內核是latex,完全可以滿足你的精細排版需求。

如果你用LyX進行有關中文的寫作,可以參考我寫的這個設置嚮導:

LyX中文配置 Tips

英文寫作的支持度很高,無需專門設置。


TeXmacs 可以作為很多數學軟體的前端,包括Mathematica。雖然不是LaTeX或者TeX的前端但是可以導出為LaTeX代碼。(多謝 @黃知虎 指出~)

TeXmacs的Mathematica插件需要自己編譯,我參考的是:

[TeXmacs] TeXmacs Mathematica plugin HowTo


使用LyX直接調用Mathematica,可以看這個鏈接Running Mathematica without the Notebook interface.

如果你用的是Mac的話可以這樣做:

  1. 在建立/usr/local/bin下建立一個Unix executable的文件,命名為math (沒有後綴),文件的內容為:

    #!/bin/sh
    /Applications/Mathematica.app/Contents/MacOS/MathKernel "$@"

  2. 我用的是development version 的LyX 2.2.0, 可以這樣調用Mathematica:

Edit-&>Math-&>Use Computer Algebra System-&>Mathematica

下圖等號左邊是我輸入LyX的,等號右邊是在LyX裡面調用Mathematica直接得到的結果:

如果你不知道怎麼建立Unix executable可以這樣做:

打開Terminal

輸入:cd /usr/local/bin
touch math
nano math

把上面的兩行代碼複製進去,保存退出,然後Terminal 裡面輸入

chmod 755 math


簡單使用的話

用Mathematica的方式排版,轉換成Tex,使用字元串處理優化

有些Tex則使用ImportString,轉換成單元Cell,[有些不是很能解析的,可以用Mathematica字元串處理轉換一下]

重度使用的話應該使用樓上回答的那個程序包,有空玩一下。

我通常使用較多的是mathjax的有些輕量級的Tex跟Mathematica排版的相互轉化。


推薦閱讀:

如何提高 LaTeX 輸入速度?
康托爾集的基數為什麼是2^{?0}?
如何在網上學習數學?有什麼網站或者視頻教程嗎?
橢圓函數、超幾何函數、貝塞爾函數在物理和工程方面有怎樣的應用?
2^2^2^2^2^2....直到N個2次方,數學符號如何表示?

TAG:數學 | WolframMathematica | LaTeX |