改行パターンの変更

改行パターンの変更

必要に応じて、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}

ここに画像の説明を入力してください

関連情報