XeLaTeX 覆盖默认的梵文连字,如果没有指示则不使用连字

XeLaTeX 覆盖默认的梵文连字,如果没有指示则不使用连字

梵语连字在 xelatex 中不是很好,因为它可能无法识别长复合词。我想覆盖默认连字并仅在命令指示的地方使用连字\\-。下面有一个最小的工作示例,我用它\usepackage[none]{hyphenat}来禁用连字和 sloppyvar 环境(没有它就会溢出)。我想禁用除我的\\-命令之外的所有默认连字,但不知道如何做到这一点。例如,我输入了单词,स्वादमनुभूत\\-वन्तोऽस्याः但连字不被尊重 - 整个单词打印在第 2 页的第四行,第三行有多余的空格。同样,我不想सुचरितविग्रहाः拆分但它被拆分了。如何才能实现在指示的地方使用连字而其他地方不使用的双重目标?

\documentclass{article}
\usepackage{graphicx}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{metalogo}
\usepackage{array}
\usepackage[margin=2.5cm]{geometry}
\usepackage{longtable}
\usepackage{setspace}
\usepackage{fancyhdr}
\usepackage{xstring}
\usepackage{draftwatermark}
\usepackage{pdflscape}
\usepackage{ragged2e}
\usepackage[none]{hyphenat}
\setmainlanguage{sanskrit}
\setdefaultlanguage{sanskrit}
\setmainfont[Script=Devanagari]{Arial Unicode MS} 
\newfontfamily\devanagarifont[Script=Devanagari]{Arial Unicode MS}
\newcommand{\devanagarinumeral}[1]{   \devanagaridigits{\number\csname c@#1\endcsname}}
\parindent 0pt
\addtolength{\parskip}{2mm}
\tolerance=500
\raggedbottom
\overfullrule=10pt
\hyphenpenalty=100
\setcounter{secnumdepth}{-1}
\renewcommand{\contentsname}{\centering \Huge अनुक्रमणिका}
\SetWatermarkText{\shortstack[c]{DRAFT2}}
\SetWatermarkLightness{0.95}
\SetWatermarkScale{0.25} 
\renewcommand{\tabcolsep}{0.5pt}
\title{MyDoc}       
\author{Me}     
\date{}
\renewcommand{\thesection}{\devanagarinumeral{section}}
\renewcommand{\thepage}{\Large \devanagarinumeral{page}}
\renewcommand{\theenumi}{\devanagarinumeral{enumi}}
\usepackage{hyperref,bookmark}
\hypersetup{
    pdftitle={MyDoc},
    pdfauthor={Me},
    pdfkeywords={Blah},
    pdfsubject={Blah Blah},
    bookmarksnumbered,
    pdfstartview={FitH},
    colorlinks,
    urlcolor=cyan,
    linkcolor=blue
}
\begin{document}
\renewcommand{\contentsname}{\centering \Huge अनुक्रमणिका}
\tableofcontents
\pagebreak
\fontsize{16}{18}\selectfont
\section[\texorpdfstring{\Large नान्दीवाक्}{Foreword}]{\huge नान्दीवाक्}
\justifying
\begin{longtable}{>{\setlength\parfillskip{0pt}}p{85mm}l}
यावत्स्थास्यन्ति गिरयः सरितश्च महीतले & । \\ \nopagebreak
तावद्रामायणकथा लोकेषु प्रचरिष्यति & ॥ \\ 
\end{longtable}
\vspace{-6mm}
\begin{sloppypar}   इति। सहस्र\-धारा भगवती भागीरथीव संदृश्यते रामकथा\-परम्परा। त एव स्वादमनुभूत\-वन्तोऽस्याः कथाया येऽस्यां निमग्नाः। 
यथाऽपरिमेय\-सलिलाकरस्सागरश्शत\-शताऽवर्तैः प्रनृत्यन्नीर\-चक्रवालैः कशाभिघात\-प्रतीकाशैस्तरङ्गोच्चयैर्डिण्डीर\-बुद्बुदशक्ति\-शङ्खादिभिश्च 
विलक्षणमेव किमपि हरिचन्दन\-नयनासेचनकं जनयन् महतीमभिख्यामुपयाति तथैव भगवतो रामभद्रस्य सुचरितप्रवाहोऽपि कविप्रतिभा\-प्रसूत\-नूतनप्रस्थानैः 
प्रकरण\-वक्रिमभिश्च काप्यपूर्वामेव सारस्वतीं विच्छित्तिं जनयति। कियद्भिरेव प्राचेतसोत्तर\-वर्तिभिः कविपुङ्गवैः 
भास\-कालिदास\-भवभूति\-कुमारदासाभिनन्द\-भट्टि\-मुरारि\-मायुराज\-राजशेखर\-भोजदेव\-जयदेव\-महादेव\-शक्तिभद्र\-विरूपाक्ष\-रामभद्र\-दीक्षित\-मल्लिनाथ\-प्रभृतिभिः दृश्य\-श्रव्य\-राघव\-कथाकारैः  
साभिनवकल्पनं स्वकाव्यानि प्रणीतानि। हन्त। न तथापि निरवकाशा जाता दशरथ\-नन्दन\-यशश्चन्द्रिका। रामकथा अद्यापि कविभिः प्रणीयन्ते प्रणेष्यन्ते 
च भविष्यत्कालेऽपि। यतो हि सार्व\-कालिको रामः। सार्व\-देशिको रामः। सर्वधर्म\-व्याख्येयो  रामः। सर्वसम्प्रदाय\-समाधेयो रामः। 
सर्वभाषा\-साहित्य\-सङ्कीर्तनीयो रामः। एतादृशं लोकवन्दनीयं लोकमर्यादा\-प्रतिमानभूतं निष्कलङ्कं चरितं क्वान्यत्र संदृश्यते। 
पदे पदे सन्ति समराङ्गण\-सूत्रधाराः इतिहास\-वर्णिताः। वदान्यानां लोकोपकार\-प्रवणानां दानदाक्षिण्य\-कलावतंसानां महीपानां लोकधुर्याणाञ्चापि नैयून्यं न संल्लक्ष्यते। 
तथाप्यप्रतिमो रामः। अतुलनीयो रामः। सर्वथाऽनिर्वचनीयो रामः प्रतिभाति। इदमेवाऽस्ति रामचरितस्य सनातनत्वम्। इदमेवास्ति रामचरितस्य सनातनत्वम्। 
इदमेवास्ति राम\-चरितस्याक्षुण्णत्वम्। सर्वेऽपि नायकत्वेनोप\-कल्प्यमानाः सुचरितविग्रहाः कालातीताः प्रतीयन्ते। 
परन्तु नित्य\-कीर्तनीयस्तिष्ठति केवलं वैदेहीजानिर्भगवान् दशरथनन्दन एव। 
येन राम\-कथानुशंसया न पवित्रीकृताऽत्मकाव्य\-प्रतिभा वृथैव जातं तत्कवित्वम्। ततएवाऽद्यापि कवीनुत्कयति रामकथा। \\
\end{sloppypar} 
\end{document}

答案1

你应该尝试添加

\hyphenrules{nohyphenation}

之后\begin{sloppy},它应该禁止连字符,除非明确允许\-

答案2

由于您使用的是 Polyglossia,因此 polyglossia 有自己的禁用连字符的机制。具体来说,我引用了 polyglossia 文档中的“第 5 节”——

在一些非常特殊的环境中(例如创作乐谱),应避免使用 TEX 连字,因为它可能会引起麻烦。 polyglossia 提供两个函数: \disablehyphenation\enablehyphenation。请注意,当您选择新语言时,连字将处于与之前相同的状态(启用或禁用)。当您重新启用它时,它将采用最后选择的语言。

相关内容