Problème avec la mise en forme du bloc de code dans Discourse – texte en rouge et mise en évidence indésirable

Je rencontre un problème avec le formatage des blocs de code dans Discourse. Lors de la publication de code Python, certaines parties du code (comme les URL et les chemins) sont mises en surbrillance en rouge ou formatées de manière inattendue, comme le montre la capture d’écran ci-dessous :

Description du problème

  • Lorsque je publie du code Python en utilisant des triples backticks pour les blocs de code, des parties spécifiques du texte (comme les underscores dans les URL ou les chemins) sont mises en surbrillance en rouge ou mal formatées.
  • J’ai essayé d’échapper les caractères, d’utiliser des entités HTML et de supprimer la coloration syntaxique en ne spécifiant pas la langue, mais le problème persiste.

Exemple de code

Voici un extrait du code qui pose problème (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)

Ce que j’ai essayé

  • Échapper les underscores avec une barre oblique inverse.
  • Utiliser des entités HTML pour remplacer les underscores.
  • Supprimer la coloration syntaxique en ne spécifiant pas python dans le bloc de code.
  • Publier le code en texte brut sans aucun formatage.

Informations sur les paramètres

  • Sous les paramètres, voici les langues mises en surbrillance :
  • 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

Demande de support

  • Quelqu’un d’autre a-t-il rencontré ce problème ?
  • Existe-t-il une méthode recommandée pour empêcher Discourse d’interpréter mal certaines parties du code ?
  • Y a-t-il des paramètres ou des configurations que je devrais vérifier et qui pourraient affecter le rendu des blocs de code ?

Je ne connais pas le système de coloration syntaxique / les paramètres dans leur ensemble, mais si vous voulez simplement vous débarrasser du texte rouge, vous pouvez utiliser du CSS dans le thème de votre site :

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

Le rouge est utilisé pour indiquer les chaînes de caractères, donc si vous vouliez simplement le changer en une autre couleur, vous pourriez faire quelque chose comme ceci :

code.language-python span.hljs-string {
    color: #FFF; /* Remplacez par la couleur souhaitée */
}

Outre le texte rouge, y avait-il d’autres parties qui étaient mal formatées ?

Merci pour votre suggestion, @bryce ! Je vais essayer d’ajuster le CSS du thème de notre site pour résoudre le problème du texte rouge.

Je vais essayer d’ajuster le CSS du thème de notre site pour résoudre le problème du texte rouge.

Je pense que le problème majeur est que la police de mon capture d’écran d’origine n’est pas formatée pour ressembler à du code — elle manque du style de police à chasse fixe qui est généralement utilisé pour les blocs de code. Idéalement, j’espérais que le code apparaisse davantage comme ceci, avec la police et la couleur de police appropriées :

Screenshot 2024-08-12 at 12.04.53 PM

Y a-t-il un moyen de s’assurer que le code est affiché dans une police à chasse fixe, similaire à celle de cet exemple ?

En dehors de cela, je n’ai pas remarqué d’autres problèmes de formatage majeurs, mais je continuerai à tester et je vous ferai savoir si autre chose se présente.

Merci encore pour votre aide !

Les couleurs de surbrillance peuvent être modifiées en remplaçant ces variables CSS :

  1. --hljs-comment : Utilisé pour les commentaires de code
  2. --hljs-number : Utilisé pour les valeurs numériques dans le code
  3. --hljs-string : Utilisé pour les valeurs de chaîne dans le code
  4. --hljs-literal : Utilisé pour les valeurs littérales dans le code
  5. --hljs-tag : Utilisé pour les balises HTML/XML
  6. --hljs-attribute : Utilisé pour les attributs dans les balises HTML/XML
  7. --hljs-symbol : Utilisé pour les symboles dans le code
  8. --hljs-bg : Utilisé pour la couleur d’arrière-plan des blocs de code
  9. --hljs-builtin-name : Utilisé pour les noms de fonctions intégrées

Par exemple, pour remplacer la couleur des chaînes de caractères :

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

Il semble que hljs (la bibliothèque de mise en surbrillance utilisée) ne prenne peut-être pas en charge la mise en surbrillance des identifiants Python comme degirum dans votre exemple, mais vous devriez pouvoir vous en approcher en modifiant les autres couleurs.

Pour la police, c’est étrange : les blocs de code devraient apparaître par défaut avec une police monospace. Je vous suggère de vérifier à nouveau votre thème pour vous assurer que rien n’est remplacé.

1 « J'aime »

Pour clarifier, nous utilisons actuellement le thème par défaut sans composants supplémentaires, il est donc étrange que la police monospace ne soit pas appliquée par défaut aux blocs de code. Rien ne semble la remplacer.

Pour référence, je travaille sur Chrome version 127.0.6533.100 sur macOS 14.6.1.

Pouvez-vous reproduire le problème sur try.discourse.org ?

J’ai essayé, mais les liens n’étaient pas mis en surbrillance.

1 « J'aime »

J’ai testé le code sur try.discourse.org, et les résultats sont présentés dans la capture d’écran ci-dessous :

La police semble correcte et les liens sont mis en surbrillance comme prévu. Cependant, je rencontre toujours le problème dans notre communauté où la police ne s’affiche pas correctement et les liens ne sont pas mis en surbrillance comme ils le devraient.

Je ne suis pas sûr de la raison de cette divergence.

Pour référence, voici le lien vers la page de notre communauté.

le mode sans échec semble très bien, je suppose. Au niveau des polices de caractères en tout cas.

Donc le problème vient d’un plugin, d’un thème ou d’un composant.

C’est la coloration syntaxique Java

et sur votre forum, c’est makefile

Il y a un guide sur Selecting the programming language used in code blocks
Vous pouvez également choisir une langue par défaut dans les paramètres du site

La capture d’écran sur votre forum a été prise sans mode sans échec, donc pour moi, la police est monospace.

1 « J'aime »

Merci à tous les deux d’avoir pris le temps de m’aider. C’est bon de savoir que la police s’affiche en chasse fixe pour les autres.

Comme elle ne s’affiche pas correctement de mon côté, il pourrait s’agir d’un problème spécifique à ma configuration ou à mon environnement. Elle s’affiche incorrectement pour moi sur Chrome et Safari (tous deux dans leurs dernières versions). Elle s’affiche également incorrectement pour d’autres personnes de mon organisation sur des PC.

J’ai juste vérifié depuis un ordinateur personnel, et le problème persiste également. La police de code ne s’affiche toujours pas en chasse fixe, et les liens ne sont pas mis en surbrillance correctement.

Cela semble exclure un problème avec ma configuration principale, car le problème est cohérent sur différents appareils.

Avez-vous essayé de désactiver les personnalisations de thème en mode sans échec ?

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

J’ai juste vérifié en mode sans échec, et le problème semble résolu là-bas : la police de code apparaît en chasse fixe et les liens sont mis en surbrillance correctement.

C’est déroutant car nous utilisons le thème par défaut sans composants supplémentaires, donc je ne suis pas sûr de ce qui pourrait causer le problème en mode normal.

Voici nos paramètres de thème par défaut :

C’est ce à quoi je m’attendrais. Ces chaînes de caractères sont d’une couleur différente pour que vous puissiez rapidement voir qu’il s’agit de chaînes de caractères. N’est-ce pas à cela que cela ressemble dans votre éditeur de texte ?

Je pense que vous voudrez peut-être simplement changer SiteSetting.default_code_lang en « text » ou « ». Il existe également un paramètre highlighted_languages. Je suis à peu près sûr qu’ici, ils ont changé la langue de code par défaut en quelque chose comme text, donc

Cela ressemble à ceci :

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

et si je le force avec ```python, alors cela ressemble à ceci

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

La langue de code par défaut était définie sur automatique. Je viens de la changer en texte, mais cela n’a rien changé de mon côté.

Voici nos langues mises en avant :

Voici à quoi cela ressemble dans mon éditeur de texte :

Quand j’ai regardé, la détection automatique pensait qu’il s’agissait de makefile, pas de python.

Avez-vous ajouté le langage de programmation au bloc de code dans vos publications ?

1 « J'aime »

Voici à quoi cela ressemble lorsque j’ajoute Python au bloc de code :

Comme je gère la communauté, mon objectif est de pouvoir la voir telle que les utilisateurs finaux devraient la voir. Comme vous pouvez le voir sur le côté droit, cela ne rend pas bien.

Qu’avez-vous ajouté en commun : CSS ?

1 « J'aime »