長いサンスクリット語の文字列はハイフンで区切られません

長いサンスクリット語の文字列はハイフンで区切られません

私は、polyglossia が提供するサンスクリット語の音訳のハイフネーションを機能させようとしています。私が遭遇した 1 つの奇妙な問題は、1 行を超える文字列 (実際には、sandi によって結合された 4 つの複合語) がハイフネーションされないことです。

\documentclass[12pt]{article}

\usepackage{fontspec}
\usepackage{polyglossia}

\setdefaultlanguage{sanskrit}
\newfontfamily\sanskritfont{TeX Gyre Pagella}

\setotherlanguage{english} 
\newfontfamily\englishfont{TeX Gyre Pagella}

\begin{document}

asmadādiviśeṣaṇaśūnyasyārthasākṣātkāritvamātrasyaivendriyādhīnatvadarśanād anaikāntikatvam asambhavīti cet | yady evam arthasākṣātkāritvamātrasyendiryavadālokādhīnatvam upalabdham iti na santamase paśyeyur ulūkādayaḥ | atha vyabhicāradarśanād ālokasyāvyāpakatvam, vyabhicāraśaṅkayā tarhīndriyasyāpy avyāpakatvam | vyāptyā śaṅkā khaṇḍyata iti cet | śaṅkāsambhavād vyāptir evāsambhavinī yadi prathamata eva vyāptiḥ, vyabhicāro 'pi na dṛśyeta | 


\end{document}

サンプル出力

もちろん、ここで任意のハイフンを使用することもできますが、ハイフネーションの処理はむしろ LaTeX (xelatex) に任せたいです。なぜここでは機能しないのでしょうか?

答え1

非常に運が悪いですね。\tracingparagraphs=1文書に追加すると、ログ ファイルには XeTeX による改行の試行が表示されます。また、\hspace*{0pt}先頭にも追加したので、最初の単語をハイフンでつなぐことも可能になります。

@firstpass
@secondpass
[]| \EU1/TeXGyrePagella(0)/m/n/10 a-sma-dā-di-vi-śe-ṣa-ṇa-śū-nya-syā-rtha-sā-kṣ
ā-tkā-ri-tva-mā-tra-syai-ve-ndri-yā-dhīnatvadarśanād 
@ via @@0 b=* p=0 d=*
@@1: line 1.3 t=0 -> @@0
a-nai-kā-nti-ka-tvam a-sa-mbha-vīti cet | yady e-vam a-rtha-sā-kṣā-tkā-ri-tva-m
ā-tra-sye-ndi-
@\discretionary via @@1 b=16 p=50 d=3176
@@2: line 2.3- t=3176 -> @@1
rya-va-dā-lo-kā-dhī-na-tvam u-pa-la-bdham iti na sa-nta-mase pa-śye-yur u-lū-kā
-da-yaḥ | 
@ via @@2 b=3 p=0 d=169
@@3: line 3.2 t=3345 -> @@2
a-tha vya-bhi-cā-ra-da-rśa-nād ā-lo-ka-syā-vyā-pa-ka-tvam, vya-bhi-cā-ra-śa-ṅka
yā ta-rhī-ndri-
@\discretionary via @@3 b=13 p=50 d=3029
@@4: line 4.3- t=6374 -> @@3
ya-syāpy a-vyā-pa-ka-tvam | vyā-ptyā śa-ṅkā kha-ṇḍyata iti cet | śa-ṅkā-sa-mbha
-vād 
@ via @@4 b=3 p=0 d=169
@@5: line 5.2 t=6543 -> @@4
vyā-ptir e-vā-sa-mbha-vinī yadi pra-tha-mata eva vyā-ptiḥ, vya-bhi-cāro 'pi na 
dṛśyeta 
@ via @@5 b=1 p=0 d=121
@@6: line 6.2 t=6664 -> @@5
| 
@\par via @@6 b=0 p=-10000 d=*
@@7: line 7.2- t=6664 -> @@6

長い単語の最後の部分には、適切なハイフネーションポイントが見つからないことがわかります。

...-yā-dhīnatvadarśanād

その後にハイフンでつなぐと行が短くなりすぎます。

これは、(Xe)TeX が 63 文字を超える単語を正しくハイフネーションできないことに関係しています。「TeX プログラム」( texdoc tex、344 ページ以降) のパート 42「ハイフネーション」を参照してください。

残念ながら、\penalty0 \hspace{0pt}複合語で自動ハイフネーションが依然として可能になるように、任意のハイフンを追加したり、適切な場所にいくつかのハイフンを追加したりする必要があります。

たとえば、\-以下のように挿入するとハイフネーションが可能になりますが、行はまだいっぱいです。tvaとの間にハイフネーションしてdaも意味がありません。

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setdefaultlanguage{sanskrit}
\newfontfamily\sanskritfont{TeX Gyre Pagella}

\begin{document}

asmadādiviśeṣaṇaśūnyasyārthasākṣātkāritvamātrasyaivendriyādhīnatvada\-rśanād
anaikāntikatvam asambhavīti cet | yady evam
arthasākṣātkāritvamātrasyendiryavadālokādhīnatvam upalabdham iti na santamase
paśyeyur ulūkādayaḥ | atha vyabhicāradarśanād ālokasyāvyāpakatvam,
vyabhicāraśaṅkayā tarhīndriyasyāpy avyāpakatvam | vyāptyā śaṅkā khaṇḍyata iti
cet | śaṅkāsambhavād vyāptir evāsambhavinī yadi prathamata eva vyāptiḥ,
vyabhicāro 'pi na dṛśyeta |

\end{document}

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

関連情報