我正在使用 ITRANS + XeTeX 排版三种语言的印度文本。我在下面粘贴了一个例子。如何避免重复文本以获得三种不同的输出。我可以将文本设置为变量吗(就像我们在日常编程中所做的那样?)
这将使维护和纠正错误变得更容易。任何提示都会有帮助!
编辑以添加更多信息:我正在使用 ITRANS for Xetex(http://www.ctan.org/pkg/xetex-itrans). 这里是更多 tex 文件。
\documentclass[a4paper,11pt]{article}
\usepackage{ifxetex}
\RequireXeTeX
\usepackage{xltxtra}
\setlength{\parindent}{0mm}
\newcommand\devtext{\catcode`\^=11
\catcode`\~=11
\fontspec[Script=Devanagari,Mapping=itrans-dvn]{Sanskrit2003}}
\newcommand\kantext{\catcode`\^=11
\catcode`\~=11
\fontspec[Script=Kannada,Mapping=itrans-kan]{Kedage}}
\newcommand\romtext{\catcode`\^=11
\catcode`\~=11
\fontspec[Script=Greek,Mapping=itrans-iast]{Times New Roman}}
\begin{document}
\begin{center}
{\devtext % This will produce devanagari
devaM nArAyaNaM natvA sarvadoshhavivarjitam.h | \\
paripUrNaM gurUMshchAn.h gItArthaM vaxyAmi leshataH || \\
}
\bigskip
{\kantext % This will produce kannada
devaM nArAyaNaM natvA sarvadoshhavivarjitam.h \\
paripUrNaM gurUMshchAn.h gItArthaM vaxyAmi leshataH \\
}
\bigskip
{\romtext % This will produce accented roman
devaM nArAyaNaM natvA sarvadoshhavivarjitam.h | \\
paripUrNaM gurUMshchAn.h gItArthaM vaxyAmi leshataH ||
}
\end{center}
\end{document}
答案1
您不应该\fontspec
在文档正文中使用;最好使用\newfontfamily
。
为了避免代码重复,最好也抽象命令。
\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\newfontfamily\devfont[Script=Devanagari,Mapping=itrans-dvn]{Devanagari MT}
\newfontfamily\kanfont[Script=Kannada,Mapping=itrans-kan]{Kannada Sangam MN}
\newfontfamily\romfont[Script=Latin,Mapping=itrans-iast]{Times New Roman}
\newcommand{\definetrans}[2]{%
\newcommand{#1}{\catcode`\^=11 \catcode`\~=11 #2}%
}
\definetrans{\devtext}{\devfont}
\definetrans{\kantext}{\kanfont}
\definetrans{\romtext}{\romfont}
\newcommand{\definetext}{%
\begingroup\catcode`\^=11 \catcode`\~=11 \dodefinetext
}
\newcommand{\dodefinetext}[2]{%
\endgroup\newcommand{#1}{#2}%
}
\definetext{\mytext}{%
devaM nArAyaNaM natvA sarvadoshhavivarjitam.h | \\
paripUrNaM gurUMshchAn.h gItArthaM vaxyAmi leshataH ||%
}
\begin{document}
\begin{center}
{\devtext \mytext}
\bigskip
{\kantext \mytext}
\bigskip
{\romtext \mytext}
\end{center}
\end{document}
对于卡纳达语来说,结果并不理想,但我拥有的字体似乎无法理解音译图。
请注意,简单\newcommand{\mytext}{...}
的设置^
和~
将无法应用,因此我定义了一个命令来处理这个问题(\definetext
)。
不要加载xltxtra
,除非您需要其功能(这不太可能);而是加载fontspec
。