Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Student Proposal: Math equations parsing in elm-markdown by building a Latex parser #15

Open
btofficiel opened this issue Apr 11, 2021 · 1 comment

Comments

@btofficiel
Copy link

Math equations parsing in elm-markdown by building a Latex parser

Name : Bhaskar Thakur
Name in Slack : bhaskarthakur
Email: bhaskar.dezire@gmail.com
Possible Mentor: Dilon Kearns @dillonkearns

Summary

The project would focus on parsing latex strings written in Markdown and converting those to HTML. Currently dillonkearns/elm-markdown doesn't seem to provide a way of writing Math equations in Markdown and converting those to HTML. There are hacks to do that using MathJax and custom elements or elm katex package but none of those two are pure Elm. The project aims to solve that problem using Pure elm and no other JavaScript libraries.

How will I achieve this

  • Create an appropriate way of writing math equations in markdown. For example [Latex] (latex string).
  • Build a Latex parser using elm/parser package to parse into a Latex Block in dillonkearns/elm-markdown package.
  • Work on ways to render the Latex Block as HTML

What will the project focus on

The project has two primary parts to focus on:-

  • Building a Latex parser using elm/parser
  • Figuring out the right way to render a Latex Block as HTML.

Benefits

Projects such as elm-pages will benefit from these as it will enable mathematical writing for blog writers who are using elm-pages or similar static site generators for their blogs. Static Site generators in JS ecosystem already can do this using MathJax or Katex and thus it's essential for the elm community to enable such a feature using Pure Elm rather than using ports or building custom elements.

Timeline

May 17 - June 7 (Community bonding)

Get familiar with the team and the mentors and study Dilon's elm-markdown implementation in more depth. This period would be used to schedule the tasks and checkpoints so that the progress of the project can be kept in check.

June 8 - June 22

This period would contain most of the work that is to be done in the project. Specifically, I plan to complete the building of Latex Parser during this period of time. If some time is left, then would use that in figuring out the correct way to structure and render the Latex Block as HTML.

June 23 - July 11

The focus in this period would be to get done with the rendering part of the project. The remaining time will be used to fix bugs if any exist. The commitment from my side will see a dip during this phase as my midterms happen during the end of June.

July 12 - July 16 (First Evaluation)

The work will be reviewed by the mentor in this period and any changes required in the project would be scheduled as tasks to complete further.

July 17 - July 31

The changes prescribed by the mentor in the previous phase would be completed during this period.

August 1 - August 15

Documentation work related to the changes made in the library would be done during this period. The remaining time would be spent on fixing any major bugs that are left in the package.

August 16 - August 23 (Code Submission and Final Evaluation)

I will get my final work reviewed by the mentors and would recap my experience in GSoc in a blog post.

Goals

  • Latex in Markdown to Latex Block in Elm Parser using elm/parser package
  • Converting Latex Block to HTML
  • Fix bugs and edge cases
  • Documentation of the work done

Requirements

Language: Elm
Packages: elm/parser, dillonkearns/elm-markdown

@razzeee
Copy link
Member

razzeee commented Apr 11, 2021

I think goals should also reference "Tests" in some way, even if that's a given for most people.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants