Zeilenumbruchmuster ändern

Zeilenumbruchmuster ändern

Ich möchte Latex darüber informieren, dass Zeilenumbrüche bei ZWNJ-Zeichen (U+200C) zulässig sind, falls erforderlich. Wie kann ich die Zeilenumbruchmuster (Silbentrennung) ändern, um dies zu ermöglichen?

\Die Silbentrennung funktioniert bei mir nicht und gibt den Fehler „Kein Buchstabe ...“ aus, wenn die Eingabe ein ZWNJ enthält.

Beispiel (Kompilieren mit xelatex):

\documentclass{book}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده
\end{document}

Antwort1

Sie können den Silbentrennungsfehler vermeiden, indem Sie \lccodedem Zeichen einen Wert ungleich 0 zuweisen.

Dann könnte so etwas funktionieren (da ich das Skript aber nicht lesen kann ...):

\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200B]{XB Niloofar} %don't show hyphenchar
\lccode`^^^^200c=`^^^^200c
\hyphenation{شخصی-‌-سازی-‌-شده}

\begin{document}

شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده


\end{document}

Sie können ZWJN auch als Bindestrichzeichen festlegen:

\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200C]{XB Niloofar}

\begin{document}

شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده


\end{document}

Antwort2

Um Zeilenumbrüche bei ZWNJ zuzulassen, können Sie dort optionale Elemente hinzufügen, sodass Sie anstelle eines „reinen“ WNJ \discretionary{}{}{^^^^200c}Zeilenumbrüche zulassen können. Natürlich wäre es sehr aufwändig, das gesamte Dokument neu zu schreiben, daher können Sie XeTeX anweisen, diese Sequenz immer einzufügen, wenn es auf ein ZWNJ stößt, indem Sie ZWNJ aktivieren und \discretionary{}{}{^^^^200c}als Ersatz zuweisen. Das newunicodecharPaket macht dies einfach:

\usepackage{xepersian}
\usepackage{newunicodechar}
\settextfont{Shabnam.ttf}
\newunicodechar{^^^^200c}{\discretionary{}{}{^^^^200c}}
\begin{document}
\showthe\hyphenchar\font
شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده شخصی‌سازی‌شده
\end{document}

Bildbeschreibung hier eingeben (Dies setzt voraus, dass Sie in TeX an dieser Stelle Umbrüche vermeiden möchten, wenn diese nicht erforderlich sind (wie bei der Silbentrennung), Sie jedoch keine Bindestriche einfügen möchten.)

Antwort3

Da ich keinen Zugriff auf Ihre Schriftarten habe, demonstriere ich anhand eines anderen Unicode-Zeichens, was ich vorhabe.

Ich verwende mein neues tokcyclePaket, das erst gestern veröffentlicht wurde:https://www.ctan.org/pkg/tokcycle. Bei einem Problem wie diesem können Sie sich das Paket als einen verbesserten Stream-Editor vorstellen, der mit LaTeX-Token arbeitet.

Hier suche ich nach jedem nachfolgenden Token im Stream. Wenn es mit dem angegebenen Unicode-Zeichen übereinstimmt (hier ), platziert es etwas anderes im Ausgabestream. Im ersten Fall platziert es (Hi Mom)im Ausgabestream. Im zweiten Fall platziert es ein \-in den Ausgabestream, was ein beliebiger Bindestrich ist.

Und wie Sie feststellen werden, tokcyclekönnen auch Leerzeichen, Makros und Gruppen ordnungsgemäß verarbeitet werden, sogar über Abschnittsgrenzen hinweg.

\documentclass{article}
\usepackage{fontspec,tokcycle}
\setmainfont{Segoe UI Symbol}
\begin{document}
\Characterdirective{\ifx⁊#1\addcytoks{(Hi Mom)}\else\addcytoks{#1}\fi}
\tokencyclexpress vi⁊-a-viz\endtokencyclexpress

\Characterdirective{\ifx⁊#1\addcytoks{\-}\else\addcytoks{#1}\fi}
\tokencyclexpress xxxxx vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium 
vi⁊antium vi⁊antium vi⁊antium vi⁊antium vi⁊antium

\section{Works across section boundaries!!}

Blah blah blah\endtokencyclexpress
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen