RTL and MathJax

Hello all :slight_smile:
I have some small question on how to use topics that mix English and RTL language like Hebrew, especially if they use the MathJax plugin. In our Discourse forum it looks like:

The final result is great! The only problem is to write those equations. It could get really hard to write long equations. I understand that mixing RTL with LTR could make problems but I was wondering if it’s doable? Is there a way to solve it?

You could try enabling the support mixed text direction site setting. Have a look at What does the support mixed text direction setting do? for details about the setting.

When enabled, the setting adds a Toggle Direction button to the composer:

I haven’t tested this with the MathJax plugin, but it should make it a lot easier to write long equations. If you try the setting and run into any issues, please let us know.

1 Like

Thanks for the reply!
I actually have tried it before posting this topic but forgot to mention it. It does help to look better at equations that are separated with $$-$$, but it does not help for one-liner equations. Also, it converts the RTL language to be LTR (because you can’t switch directions for only one line) which also makes it look messy. Do you have other ideas?
Thanks again for the reply :slight_smile:

1 Like

Hi all :slight_smile:
Trying my luck again. Is it possible to somehow achieve LTR in between the code and MathJax blocks? It feels awkward to write code or formulas in RTL forums:

It should look like:

Anyway to achieve this?

Yes, that would be difficult. It’s not an ideal solution, but you can add a direction toggle to the composer with a theme component. That will allow you to switch the direction of the entire composer edit area to ltr when you are writing code. The code below is extracted from the code that is used when the support mixed text direction site setting is enabled. If your site’s default direction is rtl, keep the code as it is. If the default direction is ltr, replace 'rtl' in the ternary operator with 'ltr' to avoid having to double click the first time the toggle is used.

<script type="text/discourse-plugin" version="0.8.32">
    api.onToolbarCreate(toolbar => {
            id: "toggle-direction",
            group: "extras",
            icon: "exchange-alt",
            shortcut: "Shift+6",
            title: "Toggle Direction",
            perform: () => {
                const $textArea = $(".d-editor-input");
                let currentDir = $textArea.attr("dir") ? $textArea.attr("dir") : 'rtl', // set the default to your site's default text direction.
                    newDir = currentDir === "ltr" ? "rtl" : "ltr";
                $textArea.attr("dir", newDir).focus();

Click the Toggle Direction icon to change the composer’s direction: