So behalten Sie den Leerraumeindruck von Text bei, der in HTML & lt; pre & gt; Tags mit Ausnahme der aktuellen Einrückungsebene von & lt; pre & gt; Tag im Dokument?
Ich versuche, meine code auf einer website, aber ich habe Probleme bei der Erhaltung der Leerzeichen Einrückung korrekt.
Beispielsweise die folgenden snippet:
<html>
<body>
Here is my code:
<pre>
def some_funtion
return 'Hello, World!'
end
</pre>
<body>
</html>
Diese im browser angezeigt wird als:
Here is my code:
def some_funtion
return 'Hello, World!'
end
Wenn ich es möchte angezeigt:
Here is my code:
def some_funtion
return 'Hello, World!'
end
Der Unterschied ist der, dass aktuelle Einrückung der HTML pre-tag wird Hinzugefügt, um die Einrückung des Codes. Ich bin mit nanoc als statische website-generator und ich bin mit google prettify auch hinzufügen, syntax-highlighting.
Kann mir jemand irgendwelche Vorschläge?
Kommentar zu dem Problem
InformationsquelleAutor der Frage Michael Barton | 2011-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
PRE
soll preserve whitespace-genau so, wie es scheint, (es sei denn, geändert durchwhite-space
im CSS, das nicht genügend Flexibilität zur Unterstützung der Formatierung von code).Vor
Formatierung erhalten bleibt, aber so ist alles in die Einkerbung außerhalb der
PRE
tag. Es wäre schön, Leerzeichen Erhaltung, verwendet der Ortsbezug als Ausgangspunkt.Nach
Inhalt noch formatiert erklärt, aber das überflüssige führende Leerzeichen, verursacht durch die position der
PRE
- tag innerhalb des Dokuments werden entfernt.Ich habe mit dem folgenden plugin, um das Problem lösen zu wollen, entfernen Sie überflüssige Leerzeichen, verursacht durch die Einrückung die Gliederung des Dokuments. Dieser code verwendet die erste Zeile innerhalb des PRE-Tags, um zu bestimmen, wie viel es wurde eingerückt rein durch den Einzug des Dokuments.
Dieser code funktioniert im IE7, IE8, IE9, Firefox, und Chrome. Ich habe es getestet, kurz mit dem Prettify Bibliothek zum kombinieren der erhaltenen Formatierung mit ziemlich Druck. Stellen Sie sicher, dass die erste Zeile innerhalb der
PRE
tatsächlich repräsentiert das Basisniveau Einrücken, die Sie ignorieren möchten (oder können Sie das plugin intelligenter).Das ist die Ungefähre code. Wenn Sie einen Fehler oder es funktioniert nicht so, wie Sie wollen, bitte korrigieren/kommentieren; nicht nur downvote. Ich schrieb diesen code um ein problem zu beheben, die ich hatte, und ich bin aktiv mit, so dass ich möchte, dass es so fest wie möglich!
Dieses plugin kann dann angewendet werden, mit einem standard-jQuery-Selektor:
InformationsquelleAutor der Antwort Tim Medora
Gelang dies mit JavaScript. Es funktioniert in Internet Explorer 9 und Chrome 15, habe ich noch nicht getestet älteren Versionen. Sollte es in Firefox 11, wenn die Unterstützung für
outerHTML
Hinzugefügt wird (siehe hier), mittlerweile gibt es einige benutzerdefinierte Implementierungen auf dem web. Eine übung für den Leser ist, um loszuwerden, nachgestellte Einzug (bis ich die Zeit nehmen, es zu beenden und aktualisieren Sie diese Antwort).Werde ich auch mark diese als " community-wiki für die einfache Bearbeitung.
Bitte beachten Sie, dass müssen Sie neu formatieren, das Beispiel mit tabs als Einrückung zu ändern, oder die regex Leerzeichen.
InformationsquelleAutor der Antwort
Fand ich auch, dass wenn Sie mit haml können Sie die
preserve
Methode. Zum Beispiel:Diese beibehalten wird, das Leerzeichen in der erzeugten
yield
ist in der Regel markdown mit dem code-Blöcke.InformationsquelleAutor der Antwort Michael Barton
Dies ist umständlich, aber es funktioniert, wenn code-folding für Sie wichtig ist:
In Ihrem css,
In vim schreiben Ihren code in der Regel und dann ausführen:
für jede Zeile funktionieren würde.
InformationsquelleAutor der Antwort Paul Robert
Wenn Sie diese auf einem code-block, wie:
Können Sie einfach css verwenden, wie dies zu verrechnen, die große Menge der weißen Raum in der front.
InformationsquelleAutor der Antwort Skäggiga Mannen
Den pre-tag bleiben alle Leerzeichen, die Sie verwendet haben, während das schreiben in den Körper. Wo, wie in der Regel, wenn Sie nicht mit pre, dann zeigt es der text, der Regel...(HTML wird der browser zu vernachlässigen diejenigen, die Leerzeichen) Hier versuchen, diese ich habe die Absatz-tag.
Ausgang:-
Hier ist mein code:
def some_function
Ende
<html>
<body>
Here is my code:
<p>
def some_function<br>
<pre> return 'Hello, World!'<br></pre>
end
</p>
</body>
</html>
InformationsquelleAutor der Antwort