
必要に応じて、ZWNJ (U+200C) 文字で行を分割してもよいことを LaTeX に通知します。これを許可するには、行分割パターン (ハイフネーション) をどのように変更すればよいでしょうか。
\hyphenation が機能せず、入力に 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}
改行を許可するように入力できます。もちろん、ドキュメント全体を書き直すのは大変な作業になりますが、ZWNJ をアクティブにして\discretionary{}{}{^^^^200c}
その置き換えとして割り当てることで、XeTeX が ZWNJ に遭遇したときに常にこのシーケンスを挿入するように指示できます。newunicodechar
パッケージを使用すると、これが簡単に行えます。
\usepackage{xepersian}
\usepackage{newunicodechar}
\settextfont{Shabnam.ttf}
\newunicodechar{^^^^200c}{\discretionary{}{}{^^^^200c}}
\begin{document}
\showthe\hyphenchar\font
شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده شخصیسازیشده
\end{document}
(これは、必要でない場合は TeX で改行を回避したいが (ハイフネーションなど)、ハイフンを挿入したくないことを前提としています。)
答え3
あなたのフォントにアクセスできないので、私が考えていることを別の Unicode 文字で示します。
tokcycle
私は昨日リリースされたばかりの新しいパッケージを使用します:https://www.ctan.org/pkg/tokcycleこのような問題では、パッケージを LaTeX トークンで動作する強化されたストリーム エディターと考えることができます。
ここでは、ストリーム内の連続する各トークンを検索します。指定された Unicode 文字 (ここでは⁊
) と一致する場合、出力ストリームに別のものを配置します。最初のケースでは、(Hi Mom)
出力ストリームに を配置します。2 番目のケースでは、\-
任意のハイフンである を出力ストリームに配置します。
また、お気づきのとおり、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}