Zeilenumbruch auch bekannt als Zeilenumbruch ist der Vorgang des Aufbrechens eines Textabschnitts in Zeilen, so dass er in die verfügbare Breite einer Seite, eines Fensters oder eines anderen Anzeigebereichs passt . In der Textanzeige ist Zeilenumbruch die Funktion, mit einer neuen Zeile fortzufahren, wenn eine Zeile voll ist, so dass jede Zeile in das sichtbare Fenster passt, sodass Text ohne horizontalen Bildlauf von oben nach unten gelesen werden kann . Der Zeilenumbruch ist das Zusatzmerkmal der meisten Texteditoren, Textverarbeitungsprogramme und Webbrowser, das Zeilenumbrüche zwischen Wörtern und nicht innerhalb von Wörtern einschließt, wenn dies möglich ist. Durch den Zeilenumbruch ist es nicht mehr erforderlich, Zeilenumbrüche in Absätzen fest zu codieren, und die Anzeige von Text kann flexibel und dynamisch an Anzeigen mit unterschiedlichen Größen angepasst werden.
Weiche und harte Rückläufe [ edit ]
Ein weicher Rücklauf oder weicher Umbruch ist der Bruch, der durch Zeilenumbruch oder Zeilenumbruch (entweder automatisch oder manuell) hervorgerufen wird Hard Wrap ist ein absichtlicher Bruch, der einen neuen Absatz erzeugt. Bei einem harten Rücksprung kann (und sollte) eine Absatzumbruchformatierung angewendet werden (entweder Einzug oder vertikaler Whitespace). Durch weiches Wrapping können Linienlängen automatisch angepasst werden, wobei die Breite der Fenster- oder Randeinstellungen des Benutzers angepasst wird. Dies ist eine Standardfunktion aller modernen Texteditoren, Textverarbeitungsprogramme und E-Mail-Clients. Manuelle Soft-Pausen sind nicht erforderlich, wenn der Zeilenumbruch automatisch durchgeführt wird. Wenn Sie die "Enter" -Taste drücken, wird in der Regel eine harte Rückkehr ausgeführt.
Alternativ kann "Soft Return" einen absichtlich gespeicherten Zeilenumbruch bedeuten, der kein Absatzumbruch ist. Es ist zum Beispiel üblich, Postadressen in einem mehrzeiligen Format zu drucken, aber die mehreren Zeilen werden als ein einziger Absatz verstanden. Zeilenumbrüche werden benötigt, um die Wörter der Adresse in Zeilen der entsprechenden Länge zu unterteilen.
In den aktuellen grafischen Textverarbeitungsprogrammen Microsoft Word und OpenOffice.org wird von den Benutzern erwartet, dass zwischen jedem Absatz ein Wagenrücklauf ( ↵ Enter ) eingegeben wird. Formatierungseinstellungen wie Einrückung der ersten Zeile oder Abstand zwischen Absätzen werden dort wirksam, wo der Wagenrücklauf den Umbruch markiert. Ein Zeilenumbruch ohne Absatz, der eine weiche Rückkehr ist, wird mit ⇧ Shift + ↵ Enter oder über die Menüs eingefügt und steht für Fälle zur Verfügung, in denen der Text mit a beginnen soll neue Zeile, aber keine der anderen Nebenwirkungen beim Starten eines neuen Absatzes sind erwünscht.
In textorientierten Markup-Sprachen wird normalerweise ein Soft Return als Markup-Tag angeboten. In HTML gibt es beispielsweise ein Tag
das den gleichen Zweck hat wie der Soft Return in Textprozessoren, die oben beschrieben wurden.
Unicode [ edit ]
Der Unicode-Zeilenumbruchalgorithmus bestimmt eine Reihe von Positionen, die als bekannt sind, und bieten Gelegenheit, mit denen Sie beginnen können Neue Zeile. Die tatsächlichen Zeilenumbrüche werden von der übergeordneten Software, die den Algorithmus aufruft, und nicht vom Algorithmus selbst aus den Unterbrechungsmöglichkeiten ausgewählt, da nur die übergeordnete Software die Breite der Anzeige kennt, auf der der Text angezeigt wird die Glyphen, aus denen sich der angezeigte Text zusammensetzt [1]
Der Unicode-Zeichensatz enthält ein Zeilentrennzeichen sowie ein Absatztrennzeichen, um die Semantik von Soft Return und Hard Return darzustellen.
- 0x2028 LINE SEPARATOR
- * kann verwendet werden, um diese Semantik eindeutig darzustellen.
- 0x2029 PARAGRAPH SEPARATOR
- * kann verwendet werden, um diese Semantik eindeutig zu repräsentieren.
Wortgrenzen, Hyphenation und harte Räume edit ]
Die weichen Renditen werden normalerweise nach den Enden vollständiger Wörter oder nach der Interpunktion platziert, die auf vollständige Wörter folgt. Der Zeilenumbruch kann jedoch auch nach einem Bindestrich innerhalb eines Wortes auftreten. Dies ist manchmal nicht erwünscht und kann durch Verwendung eines nicht brechenden Trennstrichs oder eines harten Trennstrichs anstelle eines regulären Trennstrichs blockiert werden.
Ein Wort ohne Bindestrich kann durch weiche Bindestriche einwickelbar gemacht werden. Wenn das Wort nicht umbrochen ist (d. H. Nicht über Zeilen hinweg gebrochen ist), ist der weiche Bindestrich nicht sichtbar. Wenn das Wort jedoch zeilenweise umbrochen wird, geschieht dies am weichen Bindestrich. Dann wird es in der oberen Zeile, in der das Wort gebrochen ist, als sichtbarer Bindestrich angezeigt. (In dem seltenen Fall eines Wortes, das durch Brechen zwischen Zeilen, aber ohne Bindestrich, der je dargestellt werden soll, umwickelt werden kann, wird ein Leerzeichen an der zulässigen Bruchstelle in der Liste eingefügt Wort.)
Manchmal ist der Zeilenumbruch zwischen benachbarten Wörtern unerwünscht. In solchen Fällen kann der Zeilenumbruch normalerweise unter Verwendung eines harten Leerraums oder oder eines nicht-brechenden Leerraums zwischen den Wörtern anstelle von regulären Leerzeichen blockiert werden.
Zeilenumbruch in Text, der Chinesisch, Japanisch und Koreanisch enthält [ edit ]
In Chinesisch, Japanisch und Koreanisch kann der Wortumbruch normalerweise vor und nach jedem Han-Zeichen auftreten bestimmte Interpunktionszeichen dürfen keine neue Zeile beginnen. [2] Japanische Kana, Buchstaben des japanischen Alphabets, werden in derselben Weise wie Han-Zeichen (Kanji) behandelt, dh Wörter können ohne Bindestrich gebrochen werden oder andere Anzeichen dafür, dass dies geschehen ist.
Unter bestimmten Umständen ist jedoch kein Zeilenumbruch erwünscht. Zum Beispiel,
- Ein Umbruch von Wörtern in persönlichen Namen ist möglicherweise nicht erwünscht, und
- ein Umbruch von Wörtern ist in zusammengesetzten Wörtern möglicherweise nicht erwünscht (wenn der Text linksbündig ist, jedoch nur in einigen Stilen).
Die meisten vorhandenen Textverarbeitungsprogramme und Satzsätze Software kann mit keinem der oben genannten Szenarien umgehen.
Die CJK-Interpunktion folgt möglicherweise Regeln, die den oben genannten besonderen Umständen ähneln. In CJK müssen die Regeln zum Zeilenumbruch eingehalten werden.
Ein Sonderfall von Zeilenumbruchregeln in CJK gilt jedoch immer: Zeilenumbruch darf niemals innerhalb des Strichs und der Ellipse von CJK erfolgen. Obwohl jedes dieser Interpunktionszeichen aufgrund einer Einschränkung aller vorhandenen Zeichencodierungen durch zwei Zeichen dargestellt werden muss, handelt es sich bei jedem von ihnen um ein einzelnes Interpunktionszeichen, das zwei ems breit ist, nicht zwei ein em breite Interpunktionszeichen.
Algorithm [ edit ]
Word Wrapping ist ein Optimierungsproblem. Je nachdem, für was optimiert werden muss, werden unterschiedliche Algorithmen verwendet.
Minimale Zeilenzahl [ edit ]
Eine einfache Möglichkeit zum Zeilenumbruch besteht darin, einen gierigen Algorithmus zu verwenden, der möglichst viele Wörter in eine Zeile setzt und dann weitergeht In der nächsten Zeile müssen Sie dasselbe tun, bis keine weiteren Wörter mehr vorhanden sind. Diese Methode wird von vielen modernen Textverarbeitungsprogrammen verwendet, z. B. von OpenOffice.org Writer und Microsoft Word [Zitat benötigt ] . Dieser Algorithmus verwendet immer die minimal mögliche Anzahl von Zeilen, kann jedoch zu Zeilen mit sehr unterschiedlichen Längen führen. Der folgende Pseudocode implementiert diesen Algorithmus:
SpaceLeft: = LineWidth für jedes Wort im Text if (Width (Word) + SpaceWidth)> SpaceLeft Einfügen von Zeilenumbrüchen vor Word in Text SpaceLeft: = LineWidth - Breite (Word) sonst SpaceLeft: = SpaceLeft - (Breite (Word) + SpaceWidth)
Wobei LineWidth
die Breite einer Linie ist, SpaceLeft
ist die verbleibende Breite des zu besetzenden Stranges, SpaceWidth
ist die Breite einer einzelnen Zeile Leerzeichen, Text
ist der Eingabetext, der wiederholt werden soll, und . Wort
ist ein Wort in diesem Text.
Minimale Uneinheitlichkeit [ edit ]
Ein anderer in TeX verwendeter Algorithmus minimiert die Summe der Quadrate der Längen der Leerzeichen am Zeilenende, um ein ästhetischeres Ergebnis zu erzielen erfreuliches Ergebnis. Im folgenden Beispiel wird diese Methode mit dem Greedy-Algorithmus verglichen, der den quadratischen Speicherplatz nicht immer minimiert.
Für den Eingabetext
AAA BB CC DDDDD
mit Strichstärke 6 würde der gierige Algorithmus Folgendes erzeugen:
------ Linienbreite: 6 AAA BB Verbleibender Speicherplatz: 0 CC Verbleibender Platz: 4 DDDDD Verbleibender Speicherplatz: 1
Die Summe des quadratischen Raums, der durch dieses Verfahren übrig bleibt, ist . Die optimale Lösung erreicht jedoch die kleinere Summe :
------ Linienbreite: 6 AAA verbleibender Speicherplatz: 3 BB CC Verbleibender Platz: 1 DDDDD Verbleibender Speicherplatz: 1
Der Unterschied hier ist, dass die erste Linie vor BB
statt nach danach gebrochen wird, was einen besseren rechten Rand und niedrigere Kosten ergibt 11.
Durch Verwendung eines dynamischen Programmieralgorithmus zur Auswahl der Positionen, an denen die Linie durchbrochen werden soll, kann die Lösung mit minimalen Unebenheiten nicht gierig gewählt werden, sondern mit der Zeit wobei ist die Anzahl der Wörter im Eingabetext. Normalerweise sollte die Kostenfunktion für diese Technik so geändert werden, dass der verbleibende Platz in der letzten Zeile eines Absatzes nicht gezählt wird. Durch diese Änderung kann ein Absatz ohne Strafe in der Mitte einer Zeile enden. Es ist auch möglich, dieselbe dynamische Programmiertechnik anzuwenden, um komplexere Kostenfunktionen zu minimieren, die andere Faktoren wie die Anzahl der Zeilen oder die Kosten für die Silbentrennung langer Wörter kombinieren. [3] Es sind schnellere, aber kompliziertere lineare Zeitalgorithmen, die auf dem SMAWK-Algorithmus basieren auch bekannt für das Problem der minimalen Unebenheit und für einige andere Kostenfunktionen, die ähnliche Eigenschaften haben. [4][5]
History [ edit ]
Ein primitiver Zeilenumbruch wurde 1955 in einem verwendet "Seitendrucker-Steuereinheit", entwickelt von Western Union. Dieses System verwendete eher Relais als programmierbare digitale Computer und benötigte daher einen einfachen Algorithmus, der ohne Datenpuffer implementiert werden konnte. Im Western Union-System wurde jede Zeile beim ersten Leerzeichen, das nach dem 58. Zeichen erscheint, oder beim 70. Zeichen, wenn kein Leerzeichen gefunden wurde, unterbrochen. [6]
Der gierige Algorithmus für Zeilenumbruch geht der dynamischen Programmiermethode voraus, die Donald Knuth in einem nicht veröffentlichten Memo von 1977 dargelegt hatte, in dem sein TeX-Satzsystem [7] beschrieben und später von Knuth & Plass (1981) ausführlicher veröffentlicht wurde.
Siehe auch [ edit ]
Referenzen [ edit
- ^ . Heninger, Andy, ed. (2013-01-25). "Unicode Line Breaking Algorithm" (PDF) . Technische Berichte . Anhang Nr. 14 (Vorgeschlagener Update-Unicode-Standard): 2 . 10. März 2015 abgerufen.
WORD JOINER sollte verwendet werden, wenn lediglich ein Zeilenumbruch verhindert werden soll
- Lunde, Ken (1999), CJKV-Informationsverarbeitung: Chinesisch, Japanisch, Koreanisch und Vietnamesisch Computing , O'Reilly Media, Inc., p. 352, ISBN 9781565922242
- ^ Knuth, Donald E.; Plass, Michael F. (1981), "Absätze in Zeilen aufteilen", Software: Praxis und Erfahrung 11 (11): 1119–1184, doi: 10.1002 / spe.4380111102 .
- ^ Wilber, Robert (1988), "Das konkave Subsequenzproblem mit dem geringsten Gewicht wurde erneut behandelt", Journal of Algorithms 9 (3): 418–425, doi: 10.1016 / 0196-6774 (88) 90032-6, MR 0955150 .
- ^ Galil, Zvi; Park, Kunsoo (1990), "Ein linearer Zeitalgorithmus für konkave eindimensionale dynamische Programmierung", Informationsverarbeitungsbuchstaben 33 (6): 309–311, doi: 10.1016 / 0020-0190 (90) 90215-J, MR 1045521 .
- ^ Harris, Robert W. (Januar 1956), "Keyboard standardization", Western Union Technical Review 10 (1): 37–42 .
- ^ Knuth, Donald (1977), TEXDR.AFT abgerufen 2013-04- 07 . Nachdruck Knuth, Donald (1999), Digitale Typografie CSLI-Vorlesungsunterlagen, 78 Stanford, Kalifornien: Zentrum für das Studium von Sprache und Information, ISBN 1-57586 -010-4 .
Externe Links [ edit ]
Knuths Algorithmus [ edit
- "Knuth-Plass-Linie -breaking Revisited "
- " tex_wrap ":" Implementiert den TeX-Algorithmus zum Aufteilen von Absätzen in Zeilen. " Referenz: "Absätze in Zeilen aufteilen", D.E. Knuth und M.F. Plass, Kapitel 3 von _Digital Typography_, CSLI-Vorlesungsnotizen Nr. 78.
- Text :: Reflow - Perl-Modul zum Umfließen von Textdateien mit dem Absicherungsalgorithmus von Knuth. "Der Reflow-Algorithmus versucht, die Zeilen auf der gleichen Länge zu halten, versucht jedoch auch, die Interpunktion zu unterbrechen und einen Bruch innerhalb eines Eigennamens oder nach bestimmten Verbindungselementen (" a "," the "usw.) zu vermeiden. Das Ergebnis ist eine Datei mit ein mehr "unregelmäßiger" rechter Rand, als er von fmt oder Text :: Wrap erzeugt wird, aber er ist einfacher zu lesen, da weniger Phrasen über Zeilenumbrüche gebrochen werden. "
- Einstellung des Knuth-Algorithmus, um den" weichen Bindestrich "zu erkennen. [19659027] Knuths Bruchalgorithmus. "Die ausführliche Beschreibung des Modells und des Algorithmus ist in der Veröffentlichung" Breaking Paragraphs in Lines "von Donald E. Knuth zu finden, die in dem Buch" Digital Typography "(Stanford, Kalifornien, Zentrum für das Studium von Sprache und Information) veröffentlicht wurde. 1999), (CSLI Lecture Notes, Nr. 78.) "; Teil von Google Summer Of Code 2006
- "Überbrückung der Algorithmuslücke: Ein lineares Funktionsprogramm für die Absatzformatierung" von Oege de Moor, Jeremy Gibbons, 1999
No comments:
Post a Comment