2013-02-02 41 views
5

Tôi thường xuyên gặp rất nhiều phương trình vật lý được thực hiện trong Java và Fortran. Trong hầu hết các trường hợp, các phương trình này được sao chép trực tiếp từ một sách giáo khoa vật lý tiên tiến hoặc một ấn phẩm. Các phương trình ở dạng ban đầu của chúng khá dễ đọc vì chúng thường là các kiểu trong LaTeX. Tuy nhiên, khi các phương trình này được dịch thành mã, chúng trông giống như vô nghĩa. Ngay cả khi sử dụng tên biến tên miền ngắn cụ thể as suggested here hoặc chia phương trình thành nhiều dòng không làm cho nó trông trực quan như phiên bản sắp chữ.Biến đổi mã nguồn thành LaTeX

Có công cụ nào có thể phân tích cú pháp tệp nguồn Java/Fortran và xuất nó trong LaTeX, chuyển tất cả các biểu thức toán học thành tương đương LaTeX của chúng. Ví dụ,

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

được chuyển thành

\sqrt{a^2 + b^2} 

Chỉ cần được rõ ràng. Tôi không tìm kiếm các giải pháp cho phép LaTeX được đưa vào như một phần của bình luận/javadoc. Bởi vì điều đó sẽ chỉ tạo ra đầu ra LaTeX của các nhận xét của tôi chứ không phải biểu thức trong mã nguồn.

+0

Bạn có cần thứ gì đó cũng sẽ xử lý các chức năng tùy chỉnh e.t.c. không? – thkala

+0

Chức năng tùy chỉnh có thể được giữ nguyên. Nhưng tôi mong đợi các phương thức chuẩn từ lớp Math được hỗ trợ. Cũng như là một tiền thưởng, nó sẽ là tuyệt vời nếu công cụ có thể hiểu được ký hiệu subscript trong tên biến. Ví dụ t_out sẽ được dịch là 't' subscript 'out'. – Shahriar

+0

Vâng, đối với ví dụ _this_ specfic, bạn coudl sử dụng một số loại tập lệnh để thay thế 'Math.' bằng dấu gạch chéo ngược, và' (',') 'với' {','} 'tương ứng tất cả những gì bạn cần xác định là '\ newcommand {\ pow} [2] {# 1^{# 2}}' và bạn có mã đầu ra tương đương LaTeX ... –

Trả lời

1

Tôi nghĩ rằng tôi đã nhìn thấy một cái gì đó như bạn yêu cầu thực hiện với các biên tập viên chiếu của jetbrains mps. Nó được sử dụng để hiển thị các biểu thức số học trong mã nguồn như phương trình kết xuất bằng latex. Mặc dù tôi không thể nhớ chính xác, nơi tôi nhìn thấy nó. Có lẽ nó là mbeddr.

Tuy nhiên, bạn quan tâm đến cách từ nguồn đến cao su, vì vậy, đây là đề xuất của tôi: ATL cung cấp phép chuyển đổi mô hình thành mô hình. Bạn có thể sử dụng nó để chuyển đổi các biểu thức Java của bạn thành các biểu thức latex. Vì vậy, bạn cần một số EMF model của Java. MoDisco đã được cung cấp với một mô hình Java 1.5. Tôi không biết một mô hình EMF cao su. Để tuần tự hóa mô hình thành các nguồn latex, bạn có thể sử dụng Xtext.

+1

Tôi tìm thấy một số thư viện thực hiện phân tích cú pháp AST của Java: [Java Parser] (http://www.semanticdesigns.com/Products/FrontEnds/JavaFrontEnd.html), [Eclipse JDT] (http://www.vogella.com/ bài viết/EclipseJDT/article.html) và [Spoon] (http://spoon.gforge.inria.fr/) – Shahriar