Publikuję kod python na stronie internetowej (czyli CMS). Mam skrypt w języku Python, który odczytuje dowolny skrypt w języku Python i tworzy z niego HTML w kolorze składni. Następnie kopiuję / wklejam ten HTML do okna edycji CMS.
Problem polega na tym, że mój skrypt podświetlania składni Pythona używa <pre>
tagów do przechowywania tabulatorów / spacji, które są dość ważne w Pythonie. Jednak z niektórych niejasnych powodów CMS usuwa <pre>
tag. Administrator powiedział mi, że powinienem użyć <div>
zamiast <pre>
. Czy mógłbyś mi pomóc w stylizacji, <div>
aby zachować formatowanie w przestrzeni kosmicznej?
Odpowiedzi:
Możesz to zrobić za pomocą
white-space
reguły CSS :Czcionki zawarte w tej regule sprawiają, że każdy znak ma tę samą szerokość, co wspólne formatowanie tekstu w
<pre>
znaczniku.Pamiętaj, że dzięki temu wszystkie
<div>
tagi będą się tak zachowywać. Idealnie nadajesz tym<div>
znacznikom klasę, która ma wpływ tylko na te, które chcesz naśladować<pre>
. Coś jak:Lub jeszcze lepiej, użyj
<code>
tagu, jeśli nie jest usuwany przez CMS. Działa jak<pre>
znacznik, ale jest semantycznie poprawny do wyświetlania kodu.źródło
<code>
i semantykę. Zauważ, że<code>
domyślnie otacza spacje, więc musisz także je przypisaćwhite-space:nowrap
. Ponadto<pre>
znajduje się element bloku, w którym<code>
jest wbudowany; więc naśladować<pre>
,display:block
należy podać.Aby sformatować
DIV
jakPRE
, potrzebujeszwhite-space: pre;
doDIV
. Ponadto należy użyć czcionki o stałej szerokości, jak podano w pierwszej odpowiedzi.Rozwiązanie
white-space: nowrap;
jest nieprawidłowe, ponieważ NIE wyświetla kart i nadal zwinie wiele spacji (@John Conde).nowrap
: Określenie nowrap zapewnia, że sekwencje białych znaków zostaną zwinięte w pojedynczy znak spacji, ale łamanie linii zostanie pominięte.pre
: Określenie pre gwarantuje, że sekwencje białych znaków nie zostaną zwinięte. Linie są przerywane tylko w nowych wierszach znaczników (lub w wystąpieniach „\ a” w generowanej treści).od: http://reference.sitepoint.com/css/white-space
źródło
white-space
powinna byćpre
i nienowrap
. Poprawiłem swoją odpowiedź.