2013-02-02 77 views
5

我經常遇到很多用Java和Fortran實現的物理方程。在大多數情況下,這些方程式直接從高級物理教科書或出版物中複製而來。原始形式的等式很容易閱讀,因爲它們通常是在LaTeX中排版的。但是,當這些方程式轉化爲代碼時,它們看起來就像是亂碼。即使使用短域特定的變量名稱as suggested here,或將公式分解爲多行,也不會使其看起來像排版版本一樣直觀。將源代碼轉換成LaTeX

是否有任何工具可以解析Java/Fortran源文件並將其輸出到LaTeX中,將所有數學表達式轉換爲它們的LaTeX等價物。例如,

Math.sqrt(Math.pow(a,2) + Math.pow(b,2)) 

轉化爲

\sqrt{a^2 + b^2} 

只要是明確的。我不在尋找允許LaTeX作爲評論/ javadoc的一部分被包括在內的解決方案。因爲那隻會創建我的評論的LaTeX輸出而不是源代碼中的表達式。

+0

你是否還需要一些能夠處理自定義函數e.t.c.的東西? – thkala

+0

自定義功能可以保持原樣。但我希望支持Math類的標準方法。同樣作爲獎勵,如果該工具能夠理解變量名稱中的下標符號,那將是非常好的。例如,t_out將被翻譯爲't'下標'out'。 – Shahriar

+0

那麼,對於_this_ specfic的例子,你可以使用某種腳本來替換'Math.'的反斜槓,'''''''和'''''''''你需要定義的是'\ newcommand {\ pow} [2] {#1^{#2}}'並且您有LaTeX等效輸出代碼... –

回答

1

我想我已經看過類似於jetbrains mps的投影編輯器的請求。它用來在源代碼中將算術表達式顯示爲類似乳膠的渲染方程。雖然我不記得確切,但我在哪裏看到它。也許它是mbeddr

但是,您對從源到乳膠的方式更感興趣,所以這裏是我的建議: ATL提供了模型到模型的轉換。您可以使用它將您的Java表達式轉換爲乳膠表達式。因此您需要Java的EMF modelMoDisco已經附帶Java 1.5模型。我不知道乳膠EMF模型。要將模型序列化到膠乳來源,您可以使用Xtext

+1

我發現了一些執行Java AST解析的庫:[Java Parser](http://www.semanticdesigns.com/Products/FrontEnds/JavaFrontEnd.html),[Eclipse JDT](http://www.vogella.com/ articles/EclipseJDT/article.html)和[Spoon](http://spoon.gforge.inria.fr/) – Shahriar