开始使用 Xetex 来阅读 Devangari 文字?

开始使用 Xetex 来阅读 Devangari 文字?

我学习 LaTeX 已经有一段时间了。现在,我想用 Tex 输入印度文字,我发现 XeTeX 是最好的,因为它支持 unicode 和 opentype 字体。但问题是没有任何一个教程介绍如何让 XeTeX 工作。通常,当为 XeTeX 发送 Unicode 文本文件时,它会工作,但不会考虑所有连字符和连词。经过长时间的搜索,我找到了一种使用罗马化方式和原始梵文混合的字体,如下所示作为示例 1。我只想输入显示为 .tex 文件中输入的英文字符,如示例 2 所示。

示例 1:混合使用罗马化映射或类似内容。

% This is a Unicode file.
\documentclass[12pt]{article}
\usepackage{multicol} % just to get narrow columns on one page
\usepackage{polyglossia} % the multilingual support package
% for XeLaTeX - includes Sanskrit.
% Next, from the polyglossia manual:
\setdefaultlanguage{english} % this is mostly going to be English text, with
\setotherlanguage{sanskrit} % some Sanskrit embedded in it.
% These will call appropriate hyphenation.
\usepackage{xltxtra} % standard for nearly all XeLaTeX documents
\defaultfontfeatures{Mapping=tex-text} % ditto
\setmainfont{Gandhari Unicode} %could be any Unicode font
% Now define some Devanagari fonts:
% John Smith's Nakula, input using Velthuis transliteration
\newfontinstance
\velthuis [Script=Devanagari,Mapping=velthuis-sanskrit]{Nakula}
% John Smith's Sahadeva, input using Velthuis transliteration
\newfontinstance
\sahadeva [Script=Devanagari,Mapping=velthuis-sanskrit]{Sahadeva}
% John's Sahadeva, input using scholarly romanisation in Unicode
\newfontinstance
\sahadevaunicode [Script=Devanagari,Mapping=RomDev]{Sahadeva}
% Microsoft's Mangal font (ugh!), input using standard romanisation in Unicode.
\newfontinstance
\mangal [Script=Devanagari,Mapping=RomDev]{Mangal}
% Somdev's RomDev.map is used above to get the mapping
% from Unicode -> Devanāgarī. Zdenek Wagner's velthuis-sanskrit.map
% is used to get the Velthuis->Devanāgarī mapping. These are the files
% that XeTeX uses to make all the conjunct consonants without needing
% any external preprocessor (like the old devnag.c program).
% % Set up the font commands:
%
\newcommand{\velt}[1]{{\velthuis \textsanskrit{#1}}}
\newcommand{\saha}[1]{{\sahadeva\textsanskrit{#1}}}
\newcommand{\sahauni}[1]{{\sahadevaunicode\textsanskrit{#1}}}
\newcommand{\mangaluni}[1]{{\mangal\textsanskrit{#1}}}
% \textssanskrit, above, is a Polyglossia command that gets Sanskrit hyphenation right.
% ... and here we go!
\begin{document}
\begin{multicols}{2} % narrow cols to force plenty of hyphenation
\large % ditto.
\begin{enumerate}
\item[1]
With Xe\LaTeX\ it's easy to typeset Velthuis encoded Devanagari like the following example, without using a preprocessor:
\velt{sugataan sasutaan sadharmakaayaan pra.nipatyaadarato 'khilaa.m"sca vandyaan|
sugataatmajasa.mvaraavataara.m kathayi.syaami yathaagama.m samaasaat||} Bodhicaryāvatāra 1,1.
NB: automatic hyphenation.
\item[2]
A different Devanāgarī font:
\saha{sugataan sasutaan sadharmakaayaan pra.nipatyaadarato 'khilaa.m"sca vandyaan|
sugataatmajasa.mvaraavataara.m kathayi.syaami yathaagama.m samaasaat||} Bodhicaryāvatāra 1,1.
\item[3]
Another sentence: \saha{ratnojjvalastambhamanorame.su muktaamayodbhaasivitaanake.su|
svacchojjvalasphaa.tikaku.t.time.su sungandhi.su snaanag.rhe.su te.su||} 2,10.
\item[4]
Now, thanks to Somdev's RomDev.map, we can input in Unicode, using standard scholarly transliteration, and get Devanāgarī generated for us automatically:
\sahauni{āsīdrājā nalo nāma vīrsenasuto balī||\par }
\item[5]
Plain Unicode input, no tricks:
āsīdrājā nalo nāma vīrsenasuto balī||
\item[6]
Plain Unicode romanisation input, no tricks:
\mangaluni{āsīdrājā nalo nāma vīrsenasuto balī||\par }
Plain Unicode Devanāgarī input, no tricks:
{\mangal आसीद्राजा नलो नाम वीरसेनसुतो बली|\par}
\end{enumerate}
\end{multicols}

\noindent
English and Devanāgarī are both doing okay. The only thing that isn't hyphenating well yet is Sanskrit in roman transliteration.

Other nice stuff becomes easy. E.g., define a command \verb|\example| that prints a romanised word in Nāgarī, and then repeats it in romanisation, in parentheses:

\verb|\newcommand\example[1]{\sahauni{#1}~(\emph{#1})}|\newcommand\example[1]{\sahauni{#1}~(\emph{#1})}

Input: \verb|\example{ekadhā}|

Output: \example{ekadhā}
\end{document}
%that's all folks!

示例 2:我希望教程重点关注什么?

与标准乳胶一样

\documentclass{article}
\begin{document}
\section{संस्कृतम्}
जीवनस्य लक्ष्यमेव संस्कृतस्य वर्धनम्
\subsection{कोऽम्}
संस्कृतं (Sanskrit) पृथिव्‍यां प्राचीना समृद्घा शास्त्रीया च भाषा मन्‍यते। विश्‍ववाङ्‌मयेषु संस्‍कृतं श्रेष्‍ठरत्‍नम्‌ इति न केवलं भारते अपि तु समग्रविश्‍वे एतद्‌विषये निर्णयाधिकारिभि: जनै: स्‍वीकृतम्‌। महर्षिणा पाणिनिना विरचितम् "अष्‍टाध्‍यायी" इति संस्‍कृतव्‍याकरणम्‌ अधुनापि भारते विदेशेषु च भाषाविज्ञानिनां प्रेरणास्‍थानं वर्तते। संस्‍कृतशब्‍दान् एव उत्तरभारते दक्षिणभारते च स्वमातृभाषास्य संयोजयन्‍ति। संस्कृतात् प्राय: सर्वा अपि भारतीयभाषाः उद्भूताः।
\end{document}

我真正想关注的是天文字母的输入方式与英文字母的输入方式相同。

我不想写 saṁskr̥taṁ (或任何罗马化的技巧) 来获得 संस्कृतं 作为输出。

我只是输入 संस्कृतं 来获得 संस्कृतं 然后在乳胶中输入英语来获得英语作为输出。

所以,提前感谢大家阅读这么多。有没有什么好的教程和帮助,让我开始用 xetex 排版 devangari unicode?

答案1

好吧,示例 1 付出了很大的努力(使用所有这些映射指令)来启用罗马化输入。如果您不想要这个,请忽略所有这些代码并直接开始编写例如使用类似这样的代码

\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=Devanagari]{your font}
\begin{document}
\section{संस्कृतम्}
जीवनस्य लक्ष्यमेव संस्कृतस्य वर्धनम्
\subsection{कोऽम्}
\end{document}

如果您还想写英语(或其他文字),您可能必须在语言边界插入字体切换命令。

答案2

使用fontspecpolyglossia

\documentclass{article}

% The fontspec package provides a nice interface to font loading.
\usepackage{fontspec}

% standard packages for XeLaTeX
\usepackage{xunicode}
\usepackage{xltxtra}

% The polyglossia package lets us easily use several languages.
\usepackage{polyglossia}

% Define the used fonts. Replace Nakula and XITS by your font choice.
\newfontfamily\devanagarifont[Script=Devanagari]{Nakula}
\newfontfamily\englishfont[Script=Latin]{XITS}

\setmainlanguage{sanskrit}
\setotherlanguages{english}

% Display counters with Devanagari digits
\makeatletter
\def\devanagarinumber#1{\devanagaridigits{\number#1}}
\let\orig@arabic\@arabic
\let\@arabic\devanagarinumber
\makeatother

\begin{document}

\section{संस्कृतम्}
जीवनस्य लक्ष्यमेव संस्कृतस्य वर्धनम्
\subsection{कोऽम्}
संस्कृतं \textenglish{(Sanskrit)} पृथिव्‍यां प्राचीना समृद्घा शास्त्रीया च भाषा मन्‍यते। विश्‍ववाङ्‌मयेषु संस्‍कृतं श्रेष्‍ठरत्‍नम्‌ इति न केवलं भारते अपि तु समग्रविश्‍वे एतद्‌विषये निर्णयाधिकारिभि: जनै: स्‍वीकृतम्‌। महर्षिणा पाणिनिना विरचितम् "अष्‍टाध्‍यायी" इति संस्‍कृतव्‍याकरणम्‌ अधुनापि भारते विदेशेषु च भाषाविज्ञानिनां प्रेरणास्‍थानं वर्तते। संस्‍कृतशब्‍दान् एव उत्तरभारते दक्षिणभारते च स्वमातृभाषास्य संयोजयन्‍ति। संस्कृतात् प्राय: सर्वा अपि भारतीयभाषाः उद्भूताः।

\end{document}

这呈现为(编译为xelatex

渲染示例

我无法验证输出是否正确,但它似乎没问题(拉丁连字符有效)。

您可能想要定义一个快捷方式\textenglish,例如

\newcommand\eng[1]{\textenglish{#1}}

注意:如果你使用 TeX Live 的二进制包安装,比如 Debian/Ubuntu,你需要替换

\newfontfamily\englishfont[Script=Latin]{XITS}

\newfontfamily\englishfont[Script=Latin]{xits-regular.otf}

原始解决方案,扩展了Ulrike的回答:

\documentclass{article}

% The fontspec package provides a nice interface to font loading.
\usepackage{fontspec} 

% Set the main font to Nakula (a Devanagari font I found on my system).
\setmainfont[Script=Devanagari]{Nakula}

% Define the \latinfont command to switch to the XITS font for Latin text
\newfontfamily\latinfont[Script=Latin]{XITS}
% Define the \eng command as a localized version of \latinfont
\newcommand\eng[1]{{\latinfont #1}}

\begin{document}

\section{संस्कृतम्}
जीवनस्य लक्ष्यमेव संस्कृतस्य वर्धनम्
\subsection{कोऽम्}
संस्कृतं \eng{(Sanskrit)} पृथिव्‍यां प्राचीना समृद्घा शास्त्रीया च भाषा मन्‍यते। विश्‍ववाङ्‌मयेषु संस्‍कृतं श्रेष्‍ठरत्‍नम्‌ इति न केवलं  भारते अपि तु समग्रविश्‍वे एतद्‌विषये निर्णयाधिकारिभि: जनै: स्‍वीकृतम्‌। महर्षिणा पाणिनिना विरचितम् "अष्‍टाध्‍यायी" इति संस्‍कृतव्‍याकरणम्‌ अधुनापि भारते विदेशेषु च भाषाविज्ञानिनां प्रेरणास्‍थानं वर्तते। संस्‍कृतशब्‍दान् एव उत्तरभारते दक्षिणभारते च स्वमातृभाषास्य संयोजयन्‍ति। संस्कृतात् प्राय: सर्वा अपि भारतीयभाषाः उद्भूताः।

\end{document}

答案3

请看以下示例:

    \documentclass{article}
    \usepackage{polyglossia}
    \setdefaultlanguage{sanskrit}
    \setmainfont[Script=Devanagari, Mapping=devanagarinumerals]{Devanagari font of your choice}
    \setotherlanguage{english}
    \newfontfamily\englishfont{Latin font of your choice}
    \newcommand\eng[1]{\textenglish{#1}}
    \begin{document}
    जीवनस्य लक्ष्यमेव संस्कृतस्य वर्धनम्
    \subsection{कोऽम्}
    संस्कृतं \eng{(Sanskrit)} पृथिव्‍यां प्राचीना समृद्घा शास्त्रीया च भाषा मन्‍यते।
    विश्‍ववाङ्‌मयेषु संस्‍कृतं श्रेष्‍ठरत्‍नम्‌ इति न केवलं भारते अपि तु समग्रविश्‍वे एतद्‌विषये
    निर्णयाधिकारिभि: जनै: स्‍वीकृतम्‌। महर्षिणा पाणिनिना विरचितम् "अष्‍टाध्‍यायी"
    इति संस्‍कृतव्‍याकरणम्‌ अधुनापि भारते विदेशेषु च भाषाविज्ञानिनां प्रेरणास्‍थानं वर्तते।
    संस्‍कृतशब्‍दान् एव उत्तरभारते दक्षिणभारते च स्वमातृभाषास्य संयोजयन्‍ति। संस्कृतात्
    प्राय: सर्वा अपि भारतीयभाषाः उद्भूताः।
  \end{document}

我认为,这是使用多语的最简单的例子,

  • 允许使用梵文作为主要语言您的文件,并且英语作为其他语言,
  • 告诉 fontspec脚本主字体是天城文,因此选择天城文连字,
  • 除了数学环境和\eqref命令之外的所有地方都选择天城文数字;请告诉我是否有其他环境在此设置中选择阿拉伯数字(要在数学环境和\eqref命令中获取天城文数字,请使用\setdefaultlanguage[numerals=devanagari]{sanskrit})。

现在,您已准备好输入梵文文档!此后,您可以使用其他软件包,如fontspecxltxtra。在使用某些字体(例如 Mukta)时,您可能会遇到脚注编号行为不正确的问题。在这种情况下,将参数添加no-sscript到软件包中xltxtra。您可以看看 手册描述了印度多语的使用语言;该手册是使用多语种的马拉地语编写的。

由于包括梵语在内的大多数印度语言的 ldf 文件都是完整的,因此人们必须在机器上尽可能地完成它们,以便顺利使用 Polyglossia。

最后,我想补充一点:使用语言来设置(Xe)LaTeX 文档比使用脚本更可取(除非没有必要)。

相关内容