Content formatting and management are increasing requirements within the Confluence space. There are lots of great options currently available on DC and Server in the Marketplace, whether it's a solution that offers a suite of functionality as a bundle or one that offer a single individual functionality (the former are typically more expensive). The availability of these solutions however are less abundant on Cloud, understandable as Confluence Cloud is still growing. We therefore wanted to create a solution on Cloud that allows users to manage their content better and improve engagement.
One of these is LaTeX for Confluence, it allows the user to convert and display LaTeX mathematical formulas on Confluence pages.
What it does
LaTeX Macro converts inline and block LaTeX mathematical formulas into HTML so they can be displayed on a Confluence page.
How I built it
We initially built a base Confluence Cloud App before building the macros on top. These in general took a few days due to its complex functionalities. We also followed the provided Atlassian documentation https://developer.atlassian.com/cloud/confluence/getting-started/#step-4--create-a-basic-app.
Challenges I ran into
Being new to Atlassian cloud it was a challenge to learn what was possible with the API and how to achieve certain tasks. One of the issues faced was how to dynamically change the size of the parent iframe after the page was rendered. This was an issue because the LaTeX library parses text in the body of the macro after Confluence mechanisms determine the iframe size. The LaTeX library applies CSS and prettifies the contained text which in many cases enlarges the contained content which in turn forces the parent iframe to show scroll bars. This was mitigated by calling the auto resize function on the iframe to calculate a new size after the content has been prettyfied.
What I learned
How Atlassian's connect approach to add-on development works. Learning how to navigate it's limitations and API.
What's next for LaTeX for Confluence
Evaluating the performance once released and future feature updates to provide value to users.