
我想告訴 Latex,如果需要的話,可以在 ZWNJ (U+200C) 字元處換行。如何更改換行模式(連字號)以允許這樣做?
\連字符對我不起作用,並且當其輸入包含 ZWNJ 時給出錯誤“不是字母...”。
範例(使用 xelatex 編譯):
\documentclass{book}
\usepackage{xepersian}
\settextfont{XB Niloofar}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
答案1
\lccode
您可以透過為字元指派一個不同於 0 的值來避免連字號錯誤。
這樣的事情就可以工作(但因為我無法閱讀腳本...):
\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200B]{XB Niloofar} %don't show hyphenchar
\lccode`^^^^200c=`^^^^200c
\hyphenation{شخصی--سازی--شده}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
您也可以將 ZWJN 設定為連字號:
\documentclass{book}
\usepackage{xepersian}
\settextfont[HyphenChar="200C]{XB Niloofar}
\begin{document}
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
答案2
若要允許在 ZWNJ 處換行,您可以在其中新增任意選項,因此您可以輸入以允許換行,而不是「純」WNJ \discretionary{}{}{^^^^200c}
。當然,重寫整個文件將需要大量工作,因此您可以告訴 XeTeX 在遇到 ZWNJ 時始終插入此序列,方法是啟動 ZWNJ 並將\discretionary{}{}{^^^^200c}
其指定為替換。該newunicodechar
包使這變得簡單:
\usepackage{xepersian}
\usepackage{newunicodechar}
\settextfont{Shabnam.ttf}
\newunicodechar{^^^^200c}{\discretionary{}{}{^^^^200c}}
\begin{document}
\showthe\hyphenchar\font
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
答案3
我無法存取您的字體,因此我用另一個 unicode 字元演示了我的想法。
我使用tokcycle
昨天剛發布的新軟體包:https://www.ctan.org/pkg/tokcycle。在這樣的問題中,您可以將該套件視為與 LaTeX 令牌一起使用的美化的串流編輯器。
在這裡,我搜尋流中的每個連續標記。如果它與指定的 unicode 字元(此處⁊
)匹配,則會在輸出流中放置不同的內容。在第一種情況下,它放置(Hi Mom)
在輸出流中。在第二種情況下,它將 a 放置\-
在輸出流中,這是一個任意連字符。
而且,正如您將注意到的,tokcycle
還可以正確處理空間、巨集和群組,甚至可以跨部分邊界工作。
\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}