以多种语言排版文本而不重复文本

以多种语言排版文本而不重复文本

我正在使用 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

在此处输入图片描述

相关内容