Nun, ich habe mehr ausgegeben, als ich zugeben möchte, um fehlerhafte Inhalte nach dem Upgrade auf das neue Mathe-Plugin zu konvertieren und zu reparieren. Daher poste ich hier die wichtigen Befehle, die ich verwendet habe (entschuldigen Sie die hässliche Bastelei, ich war zu faul). Einige manuelle Korrekturen des Inhalts waren immer noch notwendig, aber in unserem Fall nicht so viel.
HINWEIS: Dies dient der Inspiration. Erinnern Sie sich an das Gedicht „Ich übernehme keine Verantwortung…“. Führen Sie dies nicht blind aus, wenn Sie es nicht verstehen.
# Ersetzt \\\\ durch \\ (was auch \\\\\\\\ in \\\\ übersetzt)
Post.where('raw ~ ?', "\\\\\\\\").each{|p| p.raw=p.raw.gsub(/\\\\\\\\/, "\\\\"); p.save; print "."; $stdout.flush;}; puts "";
# Ersetzt {align} durch {aligned} und entfernt alle Sternchen-Versionen
Post.where('raw ~ ?', "\\\\begin\\{align").each{|p| p.raw=p.raw.gsub(/(begin|end)\\{align.*?\\}/, "\\\\1{aligned}"); p.save; print "."; $stdout.flush;}; puts "";
# Ersetzt {array} durch {matrix} und entfernt alle Sternchen-Versionen
Post.where('raw ~ ?', "\\\\begin\\{array").each{|p| p.raw=p.raw.gsub(/(begin|end)\\{array\\*?\\}/, "\\\\1{matrix}"); p.save; print "."; $stdout.flush;}; puts "";
# Ersetzt `\begin{equation}` durch `$$`
Post.where('raw ~ ?', "\\\\begin\\{equation").each{|p| p.raw=p.raw.gsub(/\\s*\\\\(begin|end)\\{equation\\*?\\}\\s*/, "$$"); p.save; print "."; $stdout.flush;}; puts "";
# Fügt neue Zeilen vor und nach `$$` ein
Post.where('raw ~ ?', "\\$\\$").each{|p| p.raw=p.raw.gsub(/\$\$/,"\\n$$\\n"); p.save; print "."; $stdout.flush;}; puts "";
# Fügt `$$` vor und nach `{aligned}`-Blöcken ein
Post.where('raw ~ ?', "\\\\begin\\{align").each{|p| p.raw=p.raw.gsub(/\\s*(\\\\begin\\{align)/m,"\\n$$\\n\\\\1").gsub(/(\\\\end\\{align.*?\\})\\s*/m,"\\\\1\\n$$\\n"); p.save; print "."; $stdout.flush;}; puts "";
# ... doppelte `$$` in `{aligned}` korrigieren
Post.where('raw ~ ?', "\\\\begin\\{aligned").each{|p| p.raw=p.raw.gsub(/(\\\\end\\{align.*?\\}\\n\\$\\$)\\n\\$\\$/,"\\\\1").gsub(/\\$\\$\\n(\\$\\$\\n\\\\begin\\{align)/,"\\\\1"); p.save; print "."; $stdout.flush;}; puts "";
## Wenden Sie die obigen beiden Befehle auf andere Umgebungen an, die Sie möglicherweise neben {aligned} haben
# MANUELLE KORREKTUR EMPFOHLEN FÜR FOLGENDE:
# Beiträge, bei denen `$$` in zitierten `> ` Umgebungen vorkommen. Nur das öffnende und
# schließende `$$` müssen mit einem Präfix versehen werden, d. h. `> $$`, der Inhalt dazwischen darf nicht
# oder es wird als mathematische Größer-als-Zeichen gerendert.
# Führen Sie dies aus, um die Beiträge zu identifizieren:
Post.where('raw ~ ?', ">\\s*\\n\\s*\\$\\$").each{|p| puts "https://discourse.domain.com/p/#{p.id}";};
# ... ODER führen Sie dies aus, um eine automatische Korrektur zu versuchen, wenn auch riskant
# (hat für uns gut funktioniert, ein paar Beiträge benötigten weitere manuelle Arbeit):
Post.where('raw ~ ?', ">\\s*\\n\\s*\\$\\$").each{|p| p.raw=p.raw.gsub(/(\u003e\s*)\$\$(.*?)\$\$\s*?\n/m,"\\1\u003e $$\\2\u003e $$\n\u003e"); p.save; print "."; $stdout.flush;}; puts "";
# Kosmetisch, optional: 3+ aufeinanderfolgende neue Zeilen durch 2 neue Zeilen ersetzen
Post.where('raw ~ ?', "\\n{3,}").each{|p| p.raw=p.raw.gsub(/\n{3,}/,"\n\n"); p.save; print "."; $stdout.flush;}; puts "";
# Optional: 2+ aufeinanderfolgende neue Zeilen vor und nach `$$` ersetzen
# mit einer einzelnen neuen Zeile
# WARNUNG: In der aktuellen Version des Plugins in Ordnung, aber es kann
# in einer zukünftigen Version anders angezeigt werden (?). Zum Beispiel in echtem Latex, eine leere Zeile
# nach $$ vor Text macht einen Unterschied im vertikalen Abstand.
Post.where('raw ~ ?', "\\n\\$\\$\\n{2,}|\\n{2,}\\$\\$").each{|p| p.raw=p.raw.gsub(/\n\$\$\n{2,}/,"\n$$\n").gsub(/\n{2,}\$\$/,"\n$$"); p.save; print "."; $stdout.flush;}; puts "";