我正在排版一本以英语为主要语言、以梵语为第二语言的书。我在 MiKTeX (22.10) 上使用 LuaLaTeX (LuaHBTeX,版本 1.15.1) 对于梵语中的长复合词,我只想在特定的单词边界处使用连字符。为此,我使用\hyphenrules{nohyphenation}
and \-
(自由连字符)
这是我的 MWE。
\documentclass[twoside]{book}
\usepackage[main=english]{babel}
\babelprovide[import]{sanskrit}
\babelprovide[import]{hindi}
\babelfont[english]{rm}{Charis SIL}
\babelfont{rm}[Renderer=HarfBuzz,Script=Devanagari]{Shobhika}
\usepackage{ragged2e}
\begin{document}
\fontsize{12}{18}\selectfont
\chapter{Test}
\section{Hindi}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{hindi}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\section{Sanskrit}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{sanskrit}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\end{document}
印地语和梵语的脚本(天城文)、字体(Shobhika)和内容相同。但是,软连字符在印地语(\foreignlanguage{hindi}
)时可以正常工作,但在梵语(\foreignlanguage{sanskrit}
)时则不行。这是我看到的输出
我遗漏了什么?如何让自由连字符在梵语中像在印地语中一样起作用?
答案1
针对 Sanskrit 的 babel 设置文件 ( babel-sa.ini
) 包含以下内容:
[identification]
charset = utf8
version = 0.11
date = 2021-04-2430
name.english = Sanskrit
name.babel = sanskrit
name.polyglossia = sanskrit
tag.bcp47 = sa
language.tag.bcp47 = sa
tag.bcp47.likely = sa-Deva-IN
tag.opentype = SAN
script.name = Devanagari
script.tag.bcp47 = Deva
script.tag.opentype = deva
level = 0
encodings =
derivate = no
;; some content skipped
[typography]
frenchspacing = yes
hyphenrules = sanskrit
lefthyphenmin = 1
righthyphenmin = 3
hyphenchar =
prehyphenchar = 0
posthyphenchar =
exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
; The syntax is liable to change in 'other' values
hyphenate.other.locale = "200C "200D
hyphenate.other.script = "0CF1 "0CF2
这里最重要的部分是prehyphenchar = 0
,它关闭连字符。
您可以通过将此设置更改为空值(而不是0
)来将其重新打开,默认为连字符-
。
\documentclass[twoside]{book}
\usepackage[main=english]{babel}
\babelprovide[import,typography/prehyphenchar=]{sanskrit}
\babelprovide[import]{hindi}
\babelfont[english]{rm}{Charis SIL}
\babelfont{rm}[Renderer=HarfBuzz,Script=Devanagari]{Shobhika}
\usepackage{ragged2e}
\begin{document}
\fontsize{12}{18}\selectfont
\chapter{Test}
\section{Hindi}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{hindi}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\section{Sanskrit}
\begin{sloppypar}\justifying\hyphenrules{nohyphenation}
\textbf{\foreignlanguage{sanskrit}{उच्चो नाम शिरःस्थान\-गतस्तारस्वरः, स च दूरस्थाभाषण\-विस्मयोत्तरोत्तर\-संजल्प\-दूराह्वान\-त्रासनाबाधाद्येषु। दीप्तो नाम शिरः\-स्थान\-गतस्तारतरः, स चाक्षेप\-कलह\-विवादामर्ष\-क्रुष्टाधर्षण\-क्रोध\-शौर्य\-दर्प\-तीक्ष्ण\-रूक्षाभिधान\-निर्भर्त्सना\-क्रन्दितादिषु। मन्द्रो नाम उरः\-स्थानगतो निर्वेद\-ग्लानि\-चिन्तौत्सुक्य\-दैन्य\-व्याधि\-क्रीडागाढ\-शस्त्र\-क्षत\-मूर्छा\-मद\-गुह्यार्थ\-वचनादिषु।}}
\end{sloppypar}
\end{document}
通过此设置,印地语和梵语版本的输出相同。