Problem mit Code-Block-Formatierung in Discourse – Roter Text und unbeabsichtigtes Hervorheben

Ich stoße auf ein Problem mit der Formatierung von Codeblöcken in Discourse. Beim Posten von Python-Code werden bestimmte Teile des Codes (wie URLs und Pfade) rot hervorgehoben oder unerwartet formatiert, wie im folgenden Screenshot gezeigt:

Problembeschreibung

  • Wenn ich Python-Code mit dreifachen Backticks für Codeblöcke poste, werden bestimmte Textteile (wie Unterstriche in URLs oder Pfaden) rot hervorgehoben oder falsch formatiert.
  • Ich habe versucht, Zeichen zu escapen, HTML-Entitäten zu verwenden und die Syntaxhervorhebung zu deaktivieren, indem ich die Sprache nicht angegeben habe, aber das Problem besteht weiterhin.

Beispielcode

Hier ist ein Ausschnitt des Codes, der Probleme verursacht (Python):

import degirum as dg
zoo = dg.connect(dg.CLOUD, “https://cs.degirum.com”, “”)
model = zoo.load_model(“mobilenet_v2_ssd_coco–300x300_quant_n2x_orca_1”)
result = model(“https://docs.degirum.com/images/samples/TwoCats.jpg”)
display(result.image_overlay)

Was ich versucht habe

  • Unterstriche mit einem Backslash escapen.
  • HTML-Entitäten verwenden, um Unterstriche zu ersetzen.
  • Die Syntaxhervorhebung deaktivieren, indem ich python im Codeblock nicht angebe.
  • Den Code als reinen Text ohne jegliche Formatierung posten.

Informationen zu den Einstellungen

  • Unter den Einstellungen sind dies die hervorgehobenen Sprachen:
  • bash, c, cpp, csharp, css, diff, go, graphql, ini, java, javascript, json, kotlin, lua, makefile, markdown, objectivec, perl, php, php-template, plaintext, python, python-repl, r, ruby, rust, scss, shell, sql, swift, typescript, xml, yaml, wasm

Bitte um Unterstützung

  • Ist dieses Problem schon bei anderen aufgetreten?
  • Gibt es eine empfohlene Methode, um zu verhindern, dass Discourse Teile des Codes falsch interpretiert?
  • Gibt es Einstellungen oder Konfigurationen, die ich überprüfen sollte und die die Darstellung von Codeblöcken beeinträchtigen könnten?

Ich bin mit dem Syntax-Hervorhebungssystem / den Einstellungen als Ganzes nicht vertraut, aber wenn Sie nur den roten Text entfernen möchten, könnten Sie CSS in Ihrem Website-Theme verwenden:

code.language-python span {
    color: inherit;
}

Das Rot wird zur Anzeige von Zeichenfolgen verwendet. Wenn Sie dies nur in eine andere Farbe ändern möchten, könnten Sie Folgendes tun:

code.language-python span.hljs-string {
    color: #FFF; /* Ersetzen Sie dies durch die gewünschte Farbe */
}

Abgesehen vom roten Text gab es noch andere Teile, die falsch formatiert sind?

Vielen Dank für deinen Vorschlag, @bryce! Ich werde versuchen, das CSS im Theme unserer Website anzupassen, um das Problem mit dem roten Text zu beheben.

Ich werde versuchen, das CSS im Theme unserer Website anzupassen, um das Problem mit dem roten Text zu beheben.

Ich denke, das Hauptproblem ist, dass die Schriftart in meinem ursprünglichen Screenshot nicht wie Code formatiert ist – ihr fehlt der einheitliche Schriftstil, der normalerweise für Codeblöcke verwendet wird. Idealerweise hoffte ich, dass der Code eher so aussehen würde, mit der richtigen Schriftart und Schriftfarbe:

Screenshot 2024-08-12 at 12.04.53 PM

Gibt es eine Möglichkeit, sicherzustellen, dass der Code in einer einheitlichen Schriftart angezeigt wird, ähnlich der in diesem Beispiel?

Abgesehen davon sind mir keine weiteren größeren Formatierungsprobleme aufgefallen, aber ich werde weiter testen und dich informieren, wenn etwas anderes auftaucht.

Vielen Dank nochmals für deine Hilfe!

Die Hervorhebungsfarben können durch Überschreiben dieser CSS-Variablen geändert werden:

  1. --hljs-comment: Wird für Code-Kommentare verwendet
  2. --hljs-number: Wird für Zahlenwerte in Code verwendet
  3. --hljs-string: Wird für Zeichenkettenwerte in Code verwendet
  4. --hljs-literal: Wird für Literalwerte in Code verwendet
  5. --hljs-tag: Wird für HTML/XML-Tags verwendet
  6. --hljs-attribute: Wird für Attribute in HTML/XML-Tags verwendet
  7. --hljs-symbol: Wird für Symbole in Code verwendet
  8. --hljs-bg: Wird für die Hintergrundfarbe von Codeblöcken verwendet
  9. --hljs-builtin-name: Wird für integrierte Funktionsnamen verwendet

Zum Beispiel, um die Zeichenkettenfarbe zu überschreiben:

:root {
   --hljs-string: pink;
}

Es scheint, dass hljs (die verwendete Hervorhebungsbibliothek) möglicherweise keine Python-Bezeichner wie degirum in Ihrem Beispiel unterstützt, aber Sie sollten ziemlich nah herankommen, indem Sie die anderen Farben ändern.

Was die Schriftart betrifft, ist das seltsam – Codeblöcke sollten standardmäßig mit einer Monospace-Schriftart angezeigt werden. Ich würde vorschlagen, Ihr Theme noch einmal zu überprüfen, um sicherzustellen, dass dort nichts überschrieben wird.

1 „Gefällt mir“

Nur zur Klarstellung: Wir verwenden derzeit das Standardthema ohne zusätzliche Komponenten, daher ist es seltsam, dass die Monospace-Schriftart nicht standardmäßig für Codeblöcke angewendet wird. Es sieht nicht so aus, als würde etwas sie überschreiben.

Zur Referenz: Ich arbeite mit Chrome Version 127.0.6533.100 unter macOS 14.6.1.

Können Sie das Problem auf try.discourse.org reproduzieren?

Ich habe es versucht, aber die Links wurden nicht hervorgehoben.

1 „Gefällt mir“

Ich habe den Code auf try.discourse.org getestet, und die Ergebnisse sind im Screenshot unten zu sehen:

Die Schriftart sieht korrekt aus und die Links sind wie erwartet hervorgehoben. In unserer Community tritt das Problem jedoch weiterhin auf, dass die Schriftart nicht korrekt angezeigt wird und die Links nicht wie vorgesehen hervorgehoben werden.

Ich bin mir nicht sicher, warum diese Diskrepanz auftritt.

Als Referenz finden Sie hier den Link zur Seite in unserer Community.

Der abgesicherte Modus sieht in Ordnung aus, schätze ich. Zumindest was die Schriftart angeht.

Das Problem liegt also bei einem Plugin, einem Theme oder einer Komponente.

Das ist Java-Hervorhebung

und auf deinem Forum ist es Makefile

Es gibt eine Anleitung unter Selecting the programming language used in code blocks
Du kannst auch eine Standardsprache in den Site-Einstellungen auswählen

Der Screenshot auf deinem Forum wurde ohne den abgesicherten Modus aufgenommen, daher ist die Schriftart für mich Monospace.

1 „Gefällt mir“

Vielen Dank, dass Sie sich beide die Zeit genommen haben, mir dabei zu helfen. Es ist gut zu wissen, dass die Schriftart für andere als Monospace angezeigt wird.

Da sie auf meiner Seite nicht korrekt angezeigt wird, könnte es sich um ein Problem handeln, das spezifisch für meine Einrichtung oder Umgebung ist. Sie wird bei mir sowohl unter Chrome als auch unter Safari (beide neueste Versionen) falsch angezeigt. Sie wird auch bei anderen in meiner Organisation auf PCs falsch angezeigt.

Ich habe gerade von einem persönlichen Computer aus nachgesehen, und das Problem besteht auch dort fort. Die Code-Schriftart wird immer noch nicht als Monospace angezeigt, und die Links werden nicht richtig hervorgehoben.

Dies scheint ein Problem mit meiner primären Einrichtung auszuschließen, da das Problem auf verschiedenen Geräten konsistent ist.

Haben Sie versucht, Theme-Anpassungen im abgesicherten Modus zu deaktivieren?

https://community.degirum.com/t/pysdk-quick-start-guide/71?safe_mode=no_themes

Ich habe gerade im abgesicherten Modus nachgesehen, und das Problem scheint dort behoben zu sein – die Code-Schriftart wird als Monospace angezeigt und die Links werden korrekt hervorgehoben.

Das ist verwirrend, da wir das Standard-Theme ohne zusätzliche Komponenten verwenden, daher bin ich mir nicht sicher, was das Problem im normalen Modus verursachen könnte.

Hier sind unsere Standard-Theme-Einstellungen:

Das würde ich auch erwarten. Diese Zeichenfolgen haben eine andere Farbe, damit Sie schnell erkennen können, dass es sich um Zeichenfolgen handelt. Sieht das in Ihrem Texteditor nicht so aus?

Ich glaube, Sie möchten einfach nur SiteSetting.default_code_lang in „text“ oder „“ ändern. Es gibt auch eine Einstellung für highlighted_languages. Ich bin ziemlich sicher, dass hier die Standardsprache für Code auf etwas wie „text“ geändert wurde, also

Das sieht so aus:

result=model("https://big.bang")

und wenn ich es mit ```python erzwinge, sieht es so aus

result=model("https://big.bang")

Standard-Sprache für Code wurde auf automatisch gesetzt. Ich habe sie gerade auf Text geändert, aber es hat sich bei mir nichts geändert.

Hier sind unsere hervorgehobenen Sprachen:

Das sieht in meinem Texteditor so aus:

Als ich nachsah, dachte die automatische Erkennung, es sei eine Makefile und kein Python.

Hast du die Programmiersprache zum Codeblock hinzugefügt in deinen Beiträgen?

1 „Gefällt mir“

So sieht es aus, wenn ich Python in den Codeblock einfüge:

Da ich die Community verwalte, ist es mein Ziel, sie so zu sehen, wie die Endbenutzer sie sehen sollten. Wie Sie auf der rechten Seite sehen können, sieht es einfach nicht richtig aus.

Was haben wir in Common: CSS hinzugefügt?

1 „Gefällt mir“