
Ich versuche, die Silbentrennung für transliteriertes Sanskrit, die von Polyglossia bereitgestellt wird, zum Laufen zu bringen. Ein zugegebenermaßen merkwürdiges Problem, auf das ich stoße, ist, dass eine Zeichenfolge (eigentlich vier zusammengesetzte Wörter, die durch Sandhi zusammengefügt sind), die sich über mehr als eine Zeile erstreckt, nicht getrennt wird:
\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}
Natürlich könnte ich hier beliebige Trennstriche verwenden, aber ich würde mich lieber darauf verlassen, dass Latex (xelatex) die Silbentrennung übernimmt. Warum funktioniert das hier nicht?
Antwort1
Da hast Du großes Pech: Wenn ich es \tracingparagraphs=1
in das Dokument einfüge, zeigt die Logdatei die von XeTeX unternommenen Versuche zum Zeilenumbruch; ich setze es auch \hspace*{0pt}
an den Anfang, damit die Silbentrennung des ersten Wortes möglich ist.
@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
Was man sehen kann, ist, dass im letzten Teil des langen Wortes keine möglichen Trennstellen gefunden werden.
...-yā-dhīnatvadarśanād
und eine Silbentrennung danach yā
würde eine zu kurze Zeile ergeben.
Dies hängt mit der Unfähigkeit von (Xe)TeX zusammen, Wörter mit mehr als 63 Zeichen korrekt zu trennen, siehe Teil 42 „Silbentrennung“ in „TeX, das Programm“ ( texdoc tex
, S. 344 ff).
Ich fürchte, Sie müssen \penalty0 \hspace{0pt}
an den entsprechenden Stellen beliebige Ausdrücke hinzufügen, oder einige davon, damit die automatische Silbentrennung bei zusammengesetzten Wörtern weiterhin möglich ist.
Wenn Sie beispielsweise \-
wie unten gezeigt einfügen, ist die Silbentrennung möglich, aber die Zeile ist trotzdem überfüllt; eine Silbentrennung zwischen tva
und da
wäre auch nicht sinnvoll.
\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}