Problema con la formattazione del blocco di codice in Discourse – testo rosso e evidenziazione indesiderata

Sto riscontrando un problema con la formattazione dei blocchi di codice in Discourse. Quando pubblico codice Python, alcune parti del codice (come URL e percorsi) vengono evidenziate in rosso o formattate in modo imprevisto, come mostrato nello screenshot seguente:

Descrizione del problema

  • Quando pubblico codice Python utilizzando triple backtick per i blocchi di codice, parti specifiche del testo (come gli underscore negli URL o nei percorsi) vengono evidenziate in rosso o formattate in modo errato.
  • Ho provato a eseguire l’escape dei caratteri, a utilizzare entità HTML e a rimuovere l’evidenziazione della sintassi non specificando il linguaggio, ma il problema persiste.

Esempio di codice

Ecco uno snippet del codice che causa problemi (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)

Cosa ho provato

  • Eseguire l’escape degli underscore con una barra rovesciata.
  • Utilizzare entità HTML per sostituire gli underscore.
  • Rimuovere l’evidenziazione della sintassi non specificando python nel blocco di codice.
  • Pubblicare il codice come testo normale senza alcuna formattazione.

Informazioni sulle impostazioni

  • Nelle impostazioni, queste sono le lingue evidenziate:
  • 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

Richiesta di supporto

  • Qualcun altro ha riscontrato questo problema?
  • Esiste un modo consigliato per impedire a Discourse di interpretare erroneamente parti del codice?
  • Ci sono impostazioni o configurazioni che dovrei controllare che potrebbero influire sul rendering dei blocchi di codice?

Non ho familiarità con il sistema di evidenziazione della sintassi / le impostazioni nel loro complesso, ma se vuoi solo eliminare il testo rosso potresti usare CSS nel tema del tuo sito:

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

Il rosso viene utilizzato per indicare le stringhe, quindi se volessi cambiarlo in un colore diverso potresti fare qualcosa di simile:

code.language-python span.hljs-string {
    color: #FFF; /* Sostituisci con il colore desiderato */
}

Oltre al testo rosso, c’erano altre parti che vengono formattate in modo errato?

Grazie per il tuo suggerimento, @bryce! Proverò ad aggiustare il CSS nel tema del nostro sito per risolvere il problema del testo rosso.

Proverò ad aggiustare il CSS nel tema del nostro sito per risolvere il problema del testo rosso.

Penso che il problema principale sia che il font nel mio screenshot originale non è formattato per assomigliare al codice: manca lo stile del font monospaziato che viene tipicamente utilizzato per i blocchi di codice. Idealmente, speravo che il codice apparisse più simile a questo, con il font e il colore del font corretti:

Screenshot 2024-08-12 at 12.04.53 PM

C’è un modo per garantire che il codice venga visualizzato in un font monospaziato, simile a quello di questo esempio?

A parte questo, non ho notato altri problemi di formattazione importanti, ma continuerò a testare e ti farò sapere se emerge altro.

Grazie ancora per il tuo aiuto!

I colori di evidenziazione possono essere modificati sovrascrivendo queste variabili CSS:

  1. --hljs-comment: Usato per i commenti nel codice
  2. --hljs-number: Usato per i valori numerici nel codice
  3. --hljs-string: Usato per i valori stringa nel codice
  4. --hljs-literal: Usato per i valori letterali nel codice
  5. --hljs-tag: Usato per i tag HTML/XML
  6. --hljs-attribute: Usato per gli attributi nei tag HTML/XML
  7. --hljs-symbol: Usato per i simboli nel codice
  8. --hljs-bg: Usato per il colore di sfondo dei blocchi di codice
  9. --hljs-builtin-name: Usato per i nomi delle funzioni predefinite

Ad esempio, per sovrascrivere il colore delle stringhe:

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

Sembra che hljs (la libreria di evidenziazione utilizzata) potrebbe non supportare l’evidenziazione degli identificatori Python come degirum nel tuo esempio, ma dovresti essere in grado di ottenere un risultato abbastanza vicino modificando gli altri colori.

Per quanto riguarda il font, è strano: i blocchi di codice dovrebbero apparire con un font monospace per impostazione predefinita. Ti suggerirei di ricontrollare il tuo tema per assicurarti che nulla venga sovrascritto lì.

1 Mi Piace

Per chiarire, stiamo attualmente utilizzando il tema predefinito senza componenti aggiuntivi, quindi è strano che il font monospace non venga applicato di default ai blocchi di codice. Non sembra che nulla lo stia sovrascrivendo.

Come riferimento, sto lavorando da Chrome versione 127.0.6533.100 su macOS 14.6.1.

Riesci a riprodurre il problema su try.discourse.org?

Ho provato, ma i link non sono stati evidenziati.

1 Mi Piace

Ho testato il codice su try.discourse.org e i risultati sono mostrati nello screenshot qui sotto:

Il font appare corretto e i link sono evidenziati come previsto. Tuttavia, sto ancora riscontrando il problema nella nostra community dove il font non viene visualizzato correttamente e i link non sono evidenziati come dovrebbero essere.

Non sono sicuro del motivo di questa discrepanza.

Come riferimento, qui è il link alla pagina sulla nostra community.

La modalità provvisoria sembra andare benissimo, credo. Almeno per quanto riguarda i font.

Quindi il problema è qualche plugin, tema o componente lì.

Quello è l’evidenziatore java

e sul tuo forum è makefile

C’è una guida su Selecting the programming language used in code blocks
Puoi anche scegliere una lingua predefinita nelle impostazioni del sito

Lo screenshot sul tuo forum è stato acquisito senza modalità sicura, quindi per me il font è monospace.

1 Mi Piace

Grazie a entrambi per avermi dedicato del tempo per aiutarmi. È un bene sapere che il font viene visualizzato come monospazio anche per gli altri.

Dato che non viene visualizzato correttamente da parte mia, potrebbe essere un problema specifico della mia configurazione o del mio ambiente. Viene visualizzato in modo errato per me sia su Chrome che su Safari (entrambi nelle ultime versioni). Viene visualizzato in modo errato anche per altri nella mia organizzazione sui PC.

Ho appena controllato da un computer personale e il problema persiste anche lì. Il font del codice non viene ancora visualizzato come monospazio e i link non sono evidenziati correttamente.

Ciò sembra escludere un problema con la mia configurazione principale, poiché il problema è coerente su diversi dispositivi.

Hai provato a disabilitare le personalizzazioni del tema con la modalità provvisoria?

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

Ho appena controllato in Modalità provvisoria e il problema sembra essere risolto lì: il font del codice appare come monospace e i link sono evidenziati correttamente.

Questo è sconcertante perché stiamo utilizzando il tema Predefinito senza componenti aggiuntivi, quindi non sono sicuro di cosa possa causare il problema in modalità normale.

Ecco le impostazioni del tema predefinito:

È quello che mi aspetterei. Quelle stringhe sono di un colore diverso in modo da poter capire rapidamente che si tratta di stringhe. Non è così che appare nel tuo editor di testo?

Penso che tu voglia solo cambiare SiteSetting.default_code_lang in “text” o “”. C’è anche un’impostazione highlighted_languages. Sono abbastanza sicuro che qui abbiano cambiato la lingua predefinita del codice in qualcosa come text, quindi

Questo appare così:

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

e se lo forzo con ```python allora appare così

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

La lingua predefinita del codice è stata impostata su automatico. L’ho appena cambiata in testo, ma non è cambiato nulla da parte mia.

Ecco le nostre lingue in evidenza:

Questo è come appare nel mio editor di testo:

Quando ho dato un’occhiata, l’autodetection ha pensato che fosse makefile, non python.

Hai aggiunto il linguaggio di programmazione al blocco di codice nei tuoi post?

1 Mi Piace

Ecco come appare quando aggiungo Python al blocco di codice:

Dato che gestisco la community, il mio obiettivo è poterla vedere come dovrebbero vederla gli utenti finali. Come puoi vedere sul lato destro, semplicemente non ha un bell’aspetto.

Cosa hai aggiunto in comune: CSS?

1 Mi Piace