Please upgrade here. These earlier versions are no longer being updated and have security issues.
HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
LaTeX editor
cdavid
New
Dear all,
I am interested in developing a Math Forum version of Vanilla that would contain some sort of LaTeX editor in which you can put LaTeX code and then have the post result as XHTML (+MathML).
We have a tool (a daemon running here http://tex2xml.kwarc.info/test/edit.php ) that is able to take LaTeX code as input and output XHTML (+MathML for the math) via a version of LaTeXML ( http://dlmf.nist.gov/LaTeXML/ ), but I am not sure how to go about modifying VanillaForums.
The first idea that I have would be to have in the MySQL Discussion table two columns, Body and BodySrc and when you are done editing a webpage, what you wrote should be kept in BodySrc and a hook should be launched to send the LaTeX content that you wrote to the daemon running and the result will be put in the Body column and displayed.
In my mind, that would require changes in only three places:
1. In the MySQL table structure (which I am familiar with)
2. In the PHP files where the adding to the database is done where I should:
a. save to BodySrc instead of Body
b. call the daemon with BodySrc
c. get the result from the daemon and put it in Body.
3. In the PHP files, when the content of the Body should be edited, it should load BodySrc instead of Body
Unfortunately, I am not very familiar with how VanillaForums works and would need guidance to see where things happen and to modify in the appropriate place.
If anyone is willing to give me a file name and the line of code where the magic happens, I would be eternally grateful.
Catalin
P.S.: MathML only works in Firefox, or other Gecko based browsers. Don't expect anything for Webkit based browsers or any other.
I am interested in developing a Math Forum version of Vanilla that would contain some sort of LaTeX editor in which you can put LaTeX code and then have the post result as XHTML (+MathML).
We have a tool (a daemon running here http://tex2xml.kwarc.info/test/edit.php ) that is able to take LaTeX code as input and output XHTML (+MathML for the math) via a version of LaTeXML ( http://dlmf.nist.gov/LaTeXML/ ), but I am not sure how to go about modifying VanillaForums.
The first idea that I have would be to have in the MySQL Discussion table two columns, Body and BodySrc and when you are done editing a webpage, what you wrote should be kept in BodySrc and a hook should be launched to send the LaTeX content that you wrote to the daemon running and the result will be put in the Body column and displayed.
In my mind, that would require changes in only three places:
1. In the MySQL table structure (which I am familiar with)
2. In the PHP files where the adding to the database is done where I should:
a. save to BodySrc instead of Body
b. call the daemon with BodySrc
c. get the result from the daemon and put it in Body.
3. In the PHP files, when the content of the Body should be edited, it should load BodySrc instead of Body
Unfortunately, I am not very familiar with how VanillaForums works and would need guidance to see where things happen and to modify in the appropriate place.
If anyone is willing to give me a file name and the line of code where the magic happens, I would be eternally grateful.
Catalin
P.S.: MathML only works in Firefox, or other Gecko based browsers. Don't expect anything for Webkit based browsers or any other.
Tagged:
0
Comments
This sounds like a good use case for a custom Input Formatter.
Our current MySQL table structure has a Body column, as well as a Format column. When the HTML formatter is enabled, posts go into the Comment and Discussion tables with the Format 'Html'. Something similar could be done with a LaTeX plugin and corresponding Format value. The plugin can hook the comment/discussion save and load events and do any formatting it needs to before sending the comment to the browser / database.
Check out the bundled HtmLawed plugin for a fully functional example of this.
Tim
Vanilla Forums COO [GitHub, Twitter, About.me]
Oki, so first of all thanks for the input.
I started reading the documentation of htmLawed and tried to find a way to display MathML inside a post, but failed to find some configuration and also bumped into this:
" * It cannot handle input that has non-HTML code like SVG and MathML. One way around is to break the input into pieces and passing only those without non-HTML code to htmLawed. "
So, for now, my first priority is to be able to display MathML code into a post; e.g.: if I put this code in a post, it should render nicely as x^2 in Firefox:
x2+2=3
Once I can configure VanillaForums to display the exact XHTML fragment from the database, we can go on to the next step (which would be transforming the LaTeX source from the post to XHTML and storing this somehow in the database).
So, what happens now is that if I enable htmLawed, only the stuff inside the XML gets kept, while if I disable it, I guess HTMLPurifier kicks in and replaces the <> with < > at rendering. I saw that the HTMLPurifier add-on should allow HTML, but is not namespace aware, therefore, not that useful for MathML. So, in the end, is there any way in which I can tell VanillaForums to display directly the content from the database, without any modifications? I imagine that, afterwards, I should restrict only to the MathML namespace ( xmlns:m="http://www.w3.org/1998/Math/MathML" ).
I will try to understand even further what happens behind the scenes and will come back with questions/answers.
Thanks a lot for your help. Highly appreciated.
Catalin
If all plugins are disabled, I still see that < , > , & , ' and " are replaced by their HTML counterparts, resulting in posts that contain the HTML code, only with <, > etc. Unfortunately, I can't see where these replacements are made in the PHP, because in the database, the content is preserved as HTML. I've narrowed it down to lines 386 + 20 of library/core/class.format.php ... Working on this.
Thanks again,
Catalin
Among the hacks:
I have made some adjustments to the core in order to be able to serve application/xhtml+xml in order to be able to display MathML.
Did some jQuery hack to enable XHTML in jQuery (usually breaks in the each function).
Adjusted jquery.autogrow to support XHTML markup (the bundled one breaks due to the bad design).
Adjust HtmLawed to accept MathML tags in the m namespace (consider having xmlns:m="http://www.w3.org/1998/Math/MathML" ).
The deployment of this forum will be a redesigned PlanetMath ( http://planetmath.org ).
Hoping to release soon,
Catalin
/cd