2013-02-02 16 views
5

Często spotykam wiele równań fizyki zaimplementowanych w Javie i Fortranie. W większości przypadków równania te są kopiowane bezpośrednio z podręcznika fizyki lub publikacji. Równania w ich pierwotnej postaci są dość łatwe do odczytania, ponieważ są zwykle składane w LaTeX. Jednak gdy te równania są tłumaczone na kod, wyglądają jak bełkot. Nawet użycie krótkich nazw zmiennych specyficznych dla domeny as suggested here lub rozbicie równania na wiele linii nie sprawia, że ​​wygląda tak intuicyjnie jak wersja składana.Przekształć kod źródłowy na LaTeX

Czy istnieje narzędzie, które może parsować plik źródłowy Java/Fortran i wyprowadzać go w LaTeX, przekształcając wszystkie wyrażeń matematycznych w ich odpowiednik LaTeX. Na przykład,

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

przekształca

\sqrt{a^2 + b^2} 

Wystarczy być jasne. Nie szukam rozwiązań, które umożliwiają uwzględnienie LaTeXa jako części komentarzy/javadoc. Ponieważ to tylko utworzyłoby wyjście LaTeX z moich komentarzy, a nie wyrażenie w kodzie źródłowym.

+0

Potrzebujesz czegoś, co poradziłoby również z niestandardowymi funkcjami e.t.c.? – thkala

+0

Niestandardowe funkcje mogą być przechowywane w niezmienionej postaci. Ale oczekiwałbym, że obsługiwane będą standardowe metody z klasy Math. Również jako bonus, byłoby świetnie, gdyby narzędzie mogło zrozumieć notację dolnego indeksu w nazwach zmiennych. Na przykład t_out zostanie przetłumaczone jako 't' subscript 'out'. – Shahriar

+0

Cóż, dla tego konkretnego przykładu, możesz użyć jakiegoś skryptu do zamiany 'Math' na odwrotny ukośnik, a' (',') 'z odpowiadającym' {','} 'wszystko, co musisz zdefiniować to '\ newcommand {\ pow} [2] {# 1^{# 2}}' i masz kod wyjścia równoważnego LaTeX ... –

Odpowiedz

1

Wydaje mi się, że widziałem coś podobnego do ciebie, wykonanego za pomocą edytora projekcji: jetbrains mps. Używało ono do pokazania wyrażeń arytmetycznych w kodzie źródłowym jako równania oddane w stylu lateksu. Chociaż nie pamiętam dokładnie, gdzie to widziałem. Może to było mbeddr.

Jednak bardziej interesuje Cię sposób od źródła do lateksu, więc oto moja sugestia: ATL zapewnia transformację modelu do modelu. Można go użyć do przekształcenia wyrażeń Javy w wyrażenia lateksowe. Dlatego potrzebna jest EMF model Java. MoDisco jest już dostarczany z modelem Java 1.5. Nie znam modelu lateksu EMF. Aby przekształcić model do źródeł lateksu, można użyć Xtext.

+1

Znalazłem kilka bibliotek, które przetwarzają Java AST: [Java Parser] (http://www.semanticdesigns.com/Products/FrontEnds/JavaFrontEnd.html), [Eclipse JDT] (http://www.vogella.com/ articles/EclipseJDT/article.html) oraz [Spoon] (http://spoon.gforge.inria.fr/) – Shahriar