我使用的是多语系统,文本是梵语。我期望用连字符来断开,但线超出了边界。我甚至尝试使用 \enablehyphenation,但没有成功。
\documentclass[12pt,titlepage,openany]{book}
\usepackage{polyglossia}
\setdefaultlanguage{sanskrit}
\setmainfont{Sanskrit2003}
\begin{document}
पुरन्दरत्रिपुरहरवसुविरिञ्चिपावकपवमानहिमभानुचित्रभानुकृशानुनिखिलनक्षत्रगणसकलसुरासुरयक्षगन्धर्वकिन्नरचारणसिद्धसाध्यनरनागलोकपालनाकपालकालकरालव्यालमालमौलिसम्पूजितपादारविन्दलेखाधीशमुकुटमणिसंलालितचरणसरोजरजोमकरन्दत्रैलोक्यलक्ष्मीनवनलिनललितलोचनलसितकमनकटाक्षसंवीक्षितशुभेक्षितभव्यसौन्दर्यसारसर्वस्वसकलसुषमासारभूतमनोरमसार्वभौमशर्वरीप्राणवल्लभसंव्रीडकमदनमानपीडकवदनसरसीरुहनिसर्गनिहितसुधितसुधामाधुरीकश्रीवत्सलाञ्छनशरच्छशाङ्काननमधुरमन्दस्मिततुहिनांशुदीधितिविहितप्रपन्नहृदयसरसीकैरवविकासललितलीलाविलासमहालक्ष्मीनिवासक्षीरसागरसम्मन्थनसञ्जातकणसंस्पर्शभग्नभक्तभूरिभवभयव्रणपाणिपल्लवजगतीतलपाथोधिप्लवनाशितप्रणिपातक्लवविरचितगणिकागजाजामिलपङ्किलपङ्ककलङ्कभवविहितभवसंस्तवकरुणार्णवसकलशरण्यवरेण्यतरुणारुणसरसिजचरणतरुणतमालनीलसरसीरुहमरकतमणिकालिन्दीकीलालविनिन्दकभुवनाभिरामश्यामशरीरदामिनीद्युतिविनिन्दकसंवीतपीतपरिधानम्लानमदमत्तमनोभवधीरमधुकैटभनरकमुरप्रचुरमहासुरभूरिमदगर्वितगजेन्द्रगण्डस्थलविनिर्गतशोणितकरकमलकलितकौमोदकीधरशङ्खचक्रधरकमलकलितकमलकरकेयूरकुण्डलकटकवनमालानूपुरादिभूषणमण्डितसकलकलाकलापपण्डितकमलामलमुखचन्द्रचकोरवैकुण्ठविहरणपरायणनारायणप्रभविष्णुविष्णुर्हृदयमन्दिरे महीयते। अस्य प्रायशो विश्वस्मिन् विश्वे प्रचारः प्रसारश्च।
\end{document}
答案1
您遇到的问题是 (Xe)TeX 无法对长度超过 63 个字符的单词进行连字符连接。但是,由于您使用的是 XeTeX,因此您可以使用其\XeTeXinterchartoks
功能解决此问题。
这个想法是为了识别天城文的元音和辅音,并在它们之间插入自由选择的连字符(无论如何,这正是多语种加载的连字符模式试图做的)。
\documentclass[12pt,titlepage,openany]{book}
\usepackage{polyglossia}
\setdefaultlanguage{sanskrit}
\setmainfont{Sanskrit 2003}
% Enable the character classes functionality
\XeTeXinterchartokenstate = 1
% Define new character classes for Devanagari-script consonants (with implicit 'a') and for vowel signs
\newXeTeXintercharclass \DevanagariConsonant
\newXeTeXintercharclass \DevanagariVowelSign
\newcount\tmpchar
% Assign characters (code points) क to ह (in the Unicode block for Devanagari) to "consonant" class
\tmpchar = `क
\loop
\XeTeXcharclass \tmpchar = \DevanagariConsonant
\ifnum \tmpchar < `ह
\advance \tmpchar by 1
\repeat
% Assign characters (code points) ा to ौ to "vowel sign" class
\tmpchar = `ा
\loop
\XeTeXcharclass \tmpchar = \DevanagariVowelSign
\ifnum \tmpchar < `ौ
\advance \tmpchar by 1
\repeat
% Define what to insert at transition between these character classes (discretionary hyphen)
\XeTeXinterchartoks \DevanagariConsonant \DevanagariConsonant = {\-}
\XeTeXinterchartoks \DevanagariVowelSign \DevanagariConsonant = {\-}
\begin{document}
पुरन्दरत्रिपुरहरवसुविरिञ्चिपावकपवमानहिमभानुचित्रभानुकृशानुनिखिलनक्षत्रगणसकलसुरासुरयक्षगन्धर्वकिन्नरचारणसिद्धसाध्यनरनागलोकपालनाकपालकालकरालव्यालमालमौलिसम्पूजितपादारविन्दलेखाधीशमुकुटमणिसंलालितचरणसरोजरजोमकरन्दत्रैलोक्यलक्ष्मीनवनलिनललितलोचनलसितकमनकटाक्षसंवीक्षितशुभेक्षितभव्यसौन्दर्यसारसर्वस्वसकलसुषमासारभूतमनोरमसार्वभौमशर्वरीप्राणवल्लभसंव्रीडकमदनमानपीडकवदनसरसीरुहनिसर्गनिहितसुधितसुधामाधुरीकश्रीवत्सलाञ्छनशरच्छशाङ्काननमधुरमन्दस्मिततुहिनांशुदीधितिविहितप्रपन्नहृदयसरसीकैरवविकासललितलीलाविलासमहालक्ष्मीनिवासक्षीरसागरसम्मन्थनसञ्जातकणसंस्पर्शभग्नभक्तभूरिभवभयव्रणपाणिपल्लवजगतीतलपाथोधिप्लवनाशितप्रणिपातक्लवविरचितगणिकागजाजामिलपङ्किलपङ्ककलङ्कभवविहितभवसंस्तवकरुणार्णवसकलशरण्यवरेण्यतरुणारुणसरसिजचरणतरुणतमालनीलसरसीरुहमरकतमणिकालिन्दीकीलालविनिन्दकभुवनाभिरामश्यामशरीरदामिनीद्युतिविनिन्दकसंवीतपीतपरिधानम्लानमदमत्तमनोभवधीरमधुकैटभनरकमुरप्रचुरमहासुरभूरिमदगर्वितगजेन्द्रगण्डस्थलविनिर्गतशोणितकरकमलकलितकौमोदकीधरशङ्खचक्रधरकमलकलितकमलकरकेयूरकुण्डलकटकवनमालानूपुरादिभूषणमण्डितसकलकलाकलापपण्डितकमलामलमुखचन्द्रचकोरवैकुण्ठविहरणपरायणनारायणप्रभविष्णुविष्णुर्हृदयमन्दिरे महीयते। अस्य प्रायशो विश्वस्मिन् विश्वे प्रचारः प्रसारश्च।
\end{document}
请注意,有很多“Overfull \hbox”警告,并且文本没有完全对齐(XeTeX 无法正确计算单词的宽度)。我不知道为什么,但这似乎是一个单独的问题,值得提出一个新问题。您可以将整个文档排版为右侧不对齐(即没有对齐),这样就不会那么明显了。
我认为,在语义上有意义的地方添加明确的(或至少是自由选择的)连字符会更好(例如“पुरन्दर-त्रिपुरहर-वसु-विरिञ्चि-पावक-पवमान-हिमभानु-चित्रभानु-क ृशानु-निखिल-नक्षत्रगण-सकल-सुरासुर-यक्ष-गन्धर्व-किन्नर-चारण-…”); 它肯定会对读者有所帮助。