在 Fedora 20 上的 ~/texlive 上本地安装并运行 TexLive(最新版本)。
梅威瑟:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{helvet}
\renewcommand*{\rmdefault}{\sfdefault}
\begin{document}
करमल
Hello World!
\end{document}
使用 pdflatex 编译会生成一个包含一些有趣字符的文档,即àd'Tàd'ˇ ̧ ràd'oàd'š ̋ 后跟 Hello World!
显然,我在字体方面做得不对。我需要做什么才能使用 pdflatex 成功编译多语言文档?
答案1
正如这篇文章中其他人提到的,T1 字体带有 256 个代码点;此外,据我所知,您不能将使用 CTL(复杂文本布局)功能的 Unicode 字体与 一起使用pdflatex
。如果您的操作系统相对较新,很可能它已经支持复杂文本布局 (CTL)。在这种情况下,您可以尝试使用 xelatex,它不仅支持 CTL,还内置了对 OTF 和 TTF 字体的支持。
如果您的操作系统不支持 CTL(您会看到天城文字符全部混杂在一起,例如 hrasva-i-matra 的位置错误等)或者您只想使用pdflatex
,您仍然可以排版天城文,但字体会受到限制。
下面是两个示例,一个用于pdflatex
,另一个用于xelatex
这是 pdflatex
\documentclass{article}
\usepackage{devanagari}
\begin{document}
{\dn "srii-ga.ne"sa-"saaradaa-gurubhyo nama.h}
\end{document}
注意:有些发行版的devanagari
软件包名为velthuis
。请务必检查名称。使用扩展名 .dn 保存文档(重要)。按给定顺序运行命令
$devnag <document>.dn
$pdflatex <document>.tex
你应该看到类似这样的内容——
至于 Xelatex -
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=velthuis-sanskrit]{Sanskrit 2003}
\begin{document}
"srii-ga.ne"sa-"saaradaa-gurubhyo nama.h
\end{document}
您也可以直接使用 Unicode 输入,例如:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Sanskrit 2003}
\begin{document}
॥श्री-गणेश-शारदा-गुरुभ्यो नमः॥
\end{document}
这是一个单一的处理过程;因此请使用常规扩展名保存文档.tex
。xelatex <document>.tex
应该可以解决问题,假设您还安装了 XeTeX(目前 TeXLive 和 MikTex 发行版的标准问题)。
对于第二个选项(使用 Unicode 输入),只需记住删除 [Mapping=...] 选项,否则会产生不良结果。
此外,如果你想要 TeX 中的标准引号等起作用,你必须将其替换[Mapping=velthuis-sanskrit]
为[Mapping=tex-text]
。还可以将其替换Sanskrit 2003
为你想要的任何字体(它必须安装在系统中或与文档相同的目录中。如果是后者,你还必须添加扩展名{Sanskrit 2003.ttf}
您将获得类似以下的输出
欲了解更多信息,请devanagari
查看http://www.ctan.org/pkg/devanagari。这可用于排版梵语以及印地语等本地语言。不确定是否包括马拉地语半 ra (chandra-ra)(?)。
如果你正在排版纯梵文文本等,你也可以查看sanskrit
Charles Wiknet 的软件包http://www.ctan.org/pkg/sanskrit。
最好使用支持 Unicode 的现代排版工具。XeLaTeX 和 应该可以立即使用fontspec
。polyglossia
请参阅http://www.ctan.org/pkg/fontspec和http://www.ctan.org/pkg/polyglossia分别。
值得一提的是itrans
(http://www.aczoom.com/itrans/) 附带了针对主要印度语言的自定义映射。该包多年来一直用于排版梵文等。仍有许多网站使用 Itrans 编码的文档,但该包现在已过时且不再维护;建议您不要使用它;尤其是对于新文档。
答案2
T1 字体编码只有 256 个字符(全部是欧洲字符),因此并不合适,pdflatex 只能处理 256 个字符的 8 位字体,因此您需要一个以这种方式显示字母表的 tex 设置,或者您可能会发现使用 xetex 或 luatex 比使用 pdflatex 要容易得多,因为 pdflatex 可以使用系统安装的 unicode 字体并直接处理您的 utf8 输入。
答案3
我将发布示例代码这篇博文,这让我朝着正确的方向前进。
% 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:
% At least *one* font family must be called \sanskritfont or \devanagarifont,
% so that XeTeX loads all hyphenation and other stuff for Sanskrit.
% Once the Sanskrit ``intelligence'' is loaded, it can be invoked at
% other places as needed using \selectlanguage{sanskrit}
%
% John Smith's Nakula, input using Velthuis transliteration
\newfontfamily
\sanskritfont [Script=Devanagari,Mapping=velthuis-sanskrit]{Nakula}
% John Smith's Sahadeva, input using Velthuis transliteration
\newfontfamily
\sahadevafont [Script=Devanagari,Mapping=velthuis-sanskrit]{Sahadeva}
% John's Sahadeva, input using scholarly romanisation in Unicode
\newfontfamily
\sahadevaunicodefont [Script=Devanagari,Mapping=RomDev]{Sahadeva}
% Microsoft's Mangal font (ugh!), input using standard romanisation in Unicode.
\newfontfamily
\mangalfont [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]{{{\selectlanguage{sanskrit}\sanskritfont #1}}}
\newcommand{\saha}[1]{{{\selectlanguage{sanskrit}\sahadevafont#1}}}
\newcommand{\sahauni}[1]{{{\selectlanguage{sanskrit}\sahadevaunicodefont #1}}}
\newcommand{\mangaluni}[1]{{{\selectlanguage{sanskrit}\mangalfont #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:
{\mangalfont आसीद्राजा नलो नाम वीरसेनसुतो बली|\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!
只需要在我的本地系统上安装所需的字体。