RTL と MathJax

こんにちは :slight_smile:
英語とヘブライ語のような RTL 言語を混在させるトピックの使い方、特に MathJax プラグインを使用する場合について、小さな質問があります。私たちの Discourse フォーラムでは、以下のように表示されます。

最終的な結果は素晴らしいです!唯一の問題は、それらの数式を書くことです。長い数式を書くのは本当に大変になる可能性があります。RTL と LTR を混在させることで問題が発生することは理解していますが、実現可能かどうか気になっています。何か解決策はありますか?

「混合テキスト方向のサポート」サイト設定を有効にしてみてください。この設定の詳細については、Supporting mixed text directions をご覧ください。

有効にすると、コンポーザーに「方向切り替え」ボタンが追加されます。

MathJax プラグインとの互換性はテストしていませんが、長い数式の記述がはるかに容易になるはずです。この設定を試して問題が発生した場合は、お知らせください。

返信ありがとうございます!
実はこのトピックを投稿する前に試してみたのですが、そのことを書くのを忘れていました。$$-$$で区切られた数式はより見やすくなりますが、一行の数式には役立ちません。また、RTL言語をLTRに変換してしまいます(1行だけ方向を切り替えることができないため)。そのせいで見た目もごちゃごちゃしてしまいます。他にアイデアはありますか?
再度返信いただき、ありがとうございます :slight_smile:

こんにちは :slight_smile:
再度挑戦してみます。コードブロックと MathJax ブロックの間に LTR(左から右)方向を適用することは可能でしょうか?RTL(右から左)のフォーラムでコードや数式を書くのは不自然に感じます:

以下のように表示されるはずです:

これを達成する方法はありますか?

はい、それは確かに難しいですね。完全な解決策ではありませんが、テーマコンポーネントを使用して、コンポーザーに方向切り替えボタンを追加することができます。これにより、コード入力時にコンポーザー全体の編集エリアの方向を LTR に切り替えることができます。以下のコードは、「mixed text direction サポート」サイト設定が有効な場合に使用されるコードから抽出されたものです。サイトのデフォルトの方向が RTL の場合は、このコードをそのまま使用してください。デフォルトが LTR の場合は、三項演算子内の 'rtl''ltr' に置き換えて、切り替えボタンを初めて使用する際にダブルクリックする必要がないようにしてください。

<script type="text/discourse-plugin" version="0.8.32">
    api.onToolbarCreate(toolbar => {
        toolbar.addButton({
            id: "toggle-direction",
            group: "extras",
            icon: "exchange-alt",
            shortcut: "Shift+6",
            title: "方向の切り替え",
            perform: () => {
                const $textArea = $(".d-editor-input");
                let currentDir = $textArea.attr("dir") ? $textArea.attr("dir") : 'rtl', // デフォルトをサイトのデフォルトテキスト方向に設定
                    newDir = currentDir === "ltr" ? "rtl" : "ltr";
                $textArea.attr("dir", newDir).focus();
            }
        });
    });
</script>

方向切り替えアイコンをクリックして、コンポーザーの方向を変更します: