Wie bekomme ich ein Tabulatorzeichen?

123

In HTML gibt es kein Zeichen für einen Tab, aber ich bin verwirrt, warum ich hier eines kopieren und einfügen kann :. (Sie können nicht die gesamte Breite sehen, aber wenn Sie auf klicken, um meine Frage zu bearbeiten, wird das Zeichen angezeigt.) Wenn ich ein Tabulatorzeichen kopieren und einfügen kann, sollte es ein Unicode-Äquivalent geben, das in HTML codiert werden kann . Ich weiß, dass es das nicht gibt, aber das ist ein Rätsel, das ich nie erfassen konnte.

Meine Frage lautet also: Warum gibt es kein Unicode-Zeichen für einen Tab, auch wenn ich ihn kopieren und einfügen kann?

Abtei Graebner
quelle
6
Hier ist ein Tabulatorzeichen für Sie: "". Schreiben Sie mir einfach, wenn Sie andere Zeichen benötigen! Ich habe auch Leerzeichen, Bindestriche und griechische Buchstaben!
Madhead
Unter Unix: Strg + Umschalt + U und dann 9 für Einrückungszeichen.
NeverMind9
StackOverflow munges kommentiert Text stärker als Fragen oder Antworten. ``, '' und "" wurden TAB-Zeichen eingefügt, die auf verschiedene Arten zitiert wurden.
MarkHu

Antworten:

165

Sicher gibt es eine Entität für Registerkarten:

	

(Die Registerkarte enthält das ASCII-Zeichen 9 oder Unicode U + 0009.)

Genau wie bei wörtlichen Tabulatoren (die Sie in Ihren Texteditor eingeben) werden alle Tabulatorzeichen von HTML-Parsern als Leerzeichen behandelt und in einem einzigen Leerzeichen zusammengefasst, mit Ausnahme derjenigen innerhalb eines <pre>Blocks, in dem wörtliche Tabulatoren als 8 Leerzeichen in a gerendert werden Monospace-Schriftart.

josh3736
quelle
1
Das ist interessant, aber wenn es sich um ein Unicode-Zeichen handelt, sollte HTML es überhaupt nicht ändern (reduzieren), oder?
Abbey Graebner
2
Unicode hat kein eigenes Tabulatorzeichen. U + 0009 entspricht dem Tabulatorzeichen, das Sie durch Drücken von erhalten Tab. (Ich denke, Sie könnten HTML-Entitäten mit dem Unicode-Zeichensatz verwechseln.)
josh3736
8
allgemeiner können Sie & # 9; in jedem Element mit CSS-Stil Leerraum: pre; wie in jsfiddle.net/cancerbero_sgx/sp269/3
Cancerbero
96

Versuchen &emsp;

gemäß den Dokumenten:

Die Zeichenentitäten &ensp;und &emsp;bezeichnen einen en-Raum bzw. einen em-Raum, wobei ein en-Raum die Hälfte der Punktgröße und ein em-Raum der Punktgröße der aktuellen Schriftart entspricht. Bei Schriftarten mit fester Tonhöhe kann der Benutzeragent das Leerzeichen als äquivalent zu einem Leerzeichen und das em Leerzeichen als äquivalent zu zwei Leerzeichen behandeln.

Link zu Dokumenten: https://www.w3.org/MarkUp/html3/specialchars.html

Abhishek Goel
quelle
48

Setzen Sie es zwischen <pre></pre>Tags und verwenden Sie diese Zeichen&#9;

Ohne die <pre></pre>Tags würde es nicht funktionieren

Raymund
quelle
4
Okay, das ist großartig, ich habe versucht, es &#9;alleine zu benutzen , aber es hat nicht funktioniert. Danke fürs Erwähnen <pre>!
Abbey Graebner
1
Hervorragender Vorschlag. Warum verhält es sich genau so?
Pkanane
1
Das <pre> -Tag definiert vorformatierten Text. Jede Textstelle innerhalb des Tags behält Leerzeichen, Zeilenumbrüche, Tabulatoren usw. bei. Es wird normalerweise in einer Schriftart mit fester Breite wie Courier
Raymund
2
Sie können jedes HTML-Tag mit einer Kombination von white-space: pre-wrap;oderwhite-space: pre;
Petr Hurtak
16

Eine weitere Alternative veröffentlichen, um vollständiger zu sein. Als ich die "vor" basierten Antworten ausprobierte, fügten sie auch zusätzliche vertikale Zeilenumbrüche hinzu.

Jede Registerkarte kann in eine Sequenz ohne Unterbrechungen konvertiert werden, für die kein Umbruch erforderlich ist.

"&nbsp;&nbsp;&nbsp;&nbsp;" 

Dies wird nicht für die wiederholte / umfassende Verwendung innerhalb einer Seite empfohlen. Ein Div-Rand / Polster-Ansatz würde viel sauberer erscheinen.

crokusek
quelle
5
Wenn Registerkarten als Werkzeug zum Ausrichten des Texts rechts von den Registerkarten verwendet werden (wobei der nicht festgelegte Schrifttext auf der linken Seite nicht gleich ist), wird das Problem durch Konvertieren in nbsp-Zeichen nicht gelöst.
Steve Midgley
4

Ich benutze <span style="display: inline-block; width: 2ch;">&#9;</span>für eine zwei Zeichen breite Registerkarte.

GrayFace
quelle
Dies ist nicht dasselbe wie Registerkarten, sondern fügt lediglich Leerzeichen hinzu, sodass keine Spalten vorhanden sind.
Salami
1

Tab ist [HT] oder Zeichennummer 9 in der Unicode-Bibliothek.

DanRedux
quelle
1

Wie bereits erwähnt, werden aus Effizienzgründen sequentielle Bereiche in einem Bereich zusammengefasst, den der Browser tatsächlich anzeigt. Denken Sie daran, wofür die ML in HTML steht. Es handelt sich um eine Auszeichnungssprache, mit der gesteuert wird, wie Text angezeigt wird. Nicht Leerzeichen: p

Sie können jedoch so tun, als ob der Browser die Registerkarten respektiert, da das TAB lediglich 4 Leerzeichen voranstellt. Dies ist mit CSS ganz einfach. entweder in einer Linie wie ...

 <div style="padding-left:4.00em;">Indenented text </div>

Oder als reguläre Klasse in einem Stylesheet

.tabbed {padding-left:4.00em;}

Dann könnte der HTML-Code so aussehen

<p>regular paragraph regular paragraph regular paragraph</p>
<p class="tabbed">Indented text Indented text Indented text</p>
<p>regular paragraph regular paragraph regular paragraph</p>
Duane Lortie
quelle
1
Das macht ein Tab nicht. Tabs richten den Inhalt aus, - in einer Zeile werden möglicherweise 3 Leerzeichen und in einer anderen 4 Leerzeichen hinzugefügt. Konzeptionell bewegt es den Cursor zum nächsten Tabulator.
BrainSlugs83