リッチテキストエディタがbbcodeをディスプレイ数式に変換する

説明

リッチテキストエディタにbbcodeを貼り付けると、角括弧が \\[ および \\] としてエスケープされます。しかし、これにより有効なディスプレイ数式ブロックと見なされ、誤って数式としてレンダリングされてしまいます。

再現手順

  1. 以下のテキストをコピーします

    [details="summary"]
    some text
    [/details]
    
  2. メモ帳などのプログラムに貼り付けます

  3. 書式設定情報を削除するために、メモ帳からコピーします

  4. リッチテキストエディタに貼り付けます

  5. テキストはコードとして表示されるはずです。「コード」トグルボタンのチェックを外して、プレーンテキストにします

または、上記で示されたbbcodeをリッチテキストエディタに手動で入力することもできます。

期待される動作

以下のいずれか

summary

some text

これは、bbcodeの元の意味であるため問題ありません。または

\[details=“summary”]
some text
\[/details]

これは、wysiwygエディタで表示されるものであるため、これも問題ありません。

実際の動作

\[details=“summary”\]
some text
\[/details\]

これは問題です。

「いいね!」 2

この問題は再現できませんでした。Macbook ProとWindowsデスクトップの両方で試しましたが、どちらでも指示通りに再現できました。

どちらの場合も、Firefoxウェブブラウザを使用してサイトにアクセスしました。

「いいね!」 2

マークさん、こんにちは。

リッチテキストエディタに(つまり、貼り付けではなく)手動でbbcodeを入力することで再現できますか?クリップボードの書式設定は確かに複雑な問題です…

BBCode を貼り付けている人がいる場合は、discourse_math_enable_latex_delimiters を無効にすることを試すことができます。

しかし、私の方でも問題を再現できません。私の場合は、クリップボードにあったのは以下の内容でした。

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
'[details=\"summary\"]\\nsome text\\n[/details]'

または、プレーンなバージョン:

Formats: TARGETS,UTF8_STRING
'[details=\"summary\"]\\nsome plain text\\n[/details]\\n'

ブラウザのコピー/ペースト(コピーボタンではなく)を使用した場合、クリップボードには以下がありました。

Formats: TIMESTAMP,TARGETS,SAVE_TARGETS,MULTIPLE,STRING,UTF8_STRING,TEXT,text/html,text/plain,text/plain;charset=utf-8,chromium/x-internal-source-rfh-token,chromium/x-source-url
UTF8_STRING:
b'[details=\"summary\"]\\nsome text\\n[/details]'
text/html:
b'\u003cspan style=\"color: rgb(199, 199, 199); font-family: \u0026quot;JetBrains Mono\u0026quot;, Consolas, Monaco, monospace; font-size: 15.75px; font-style: normal; font-variant-ligatures: none; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgba(0, 0, 0, 0.25); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;\"\u003e[details=\"summary\"]\\nsome text\\n[/details]\u003c/span\u003e'
text/plain:
b'[details=\"summary\"]\\nsome text\\n[/details]'
text/plain;charset=utf-8:
b'[details=\"summary\"]\\nsome text\\n[/details]'

しかし、それらも問題なく貼り付けられました。

はい、リッチテキストエディタに文字を入力するだけで、この動作を確認できます。

\[details=”summary”\]
あまり隠されていない詳細はこちらです。
\[/details\]

とはいえ、リッチエディタにはポイント&クリックインターフェースでこれらの項目を入力するためのツールが用意されています。隠された詳細を入力したい場合は、そのインターフェースを使用すべきでしょう。

動作するか見てみましょう。

Summary

このテキストは本当に隠されています!!

「いいね!」 1

クリップボードに <pre><code> が挿入されるようです…

> arguments[0].clipboardData.getData('text/html')
'<pre><code class="lang-plaintext hljs language-plaintext">[details="summary"]\nsome text\n[/details]</code></pre>' 

とにかく、要点は WYSIWYG エディタで表示されているものが実際に出力されるものではないということです。

はい!

私たちのインスタンスで起こったのは、誰かが他の人が入力するためのテンプレートを提供したことです。例えば…

[details="パート 1"]
- [ ] チェック
- [ ] チェック
- [ ] チェック
[/details]
[details="パート 2"]
- [ ] チェック
- [ ] チェック
- [ ] チェック
[/details]
...

…そして、多くの人が(予期せず)次のような表示数式で戻ってきたのです…

\[details=“パート 1”\]

  • \[ \] チェック
  • \[x\] チェック
  • \[ \] チェック
    \[/details\]
    \[details=“パート 2”\]
  • \[x\] チェック
  • \[ \] チェック
  • \[x\] チェック
    \[/details\]

ご配慮いただき、重ねて感謝申し上げます!

「いいね!」 1