%% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% %\iffalse % % (c) Copyright 2019 Apostolos Syropoulos Bat-erdene Altangerel % This program can be redistributed and/or modified under the % terms of the LaTeX Project Public License Distributed from % http://www.latex-project.org/lppl.txt; either % version 1.3c of the License, or any later version. % % This work has the LPPL maintenance status `maintained'. % % Please report errors or suggestions for improvement to % % Apostolos Syropoulos (asyropoulos@yahoo.com) % %\fi % \CheckSum{228} % \iffalse This is a Metacomment % %\ProvidesFile{xecyrmongolian.sty} % % [2019/12/14 v1.0.0 Package `xecyrmongolian.sty'] % % \begin{macrocode} %<*driver> \documentclass{ltxdoc} \GetFileInfo{xecyrmongolian.drv} \usepackage{xltxtra} \usepackage{fullpage} \begin{document} \setmainfont[Mapping=tex-text]{Arno Pro} \setmonofont{UM Typewriter} \setsansfont[Mapping=tex-text]{GFS Neohellenic} \DocInput{xecyrmongolian.dtx} \end{document} % % \end{macrocode} % \fi %\StopEventually{} %\title{Mongolian Cyrillic Support for\\ \XeLaTeX\ and Lua\LaTeX} %\author{Apostolos Syropoulos\\ % Xanthi, Greece\\ % \texttt{asyropoulos@yahoo.com} \and % Bat-erdene Altangerel\\ % Ulaanbaatar, Mongolia\\ % \texttt{echingiss@gmail.com} %} % \date{2019/12/14} %\maketitle % \begin{abstract} % The \textsf{xecyrmongolian} package provides basic support for Mongolian Cyrillic so to be able % to prepare documents with either \XeLaTeX or Lua\LaTeX. %\end{abstract} % %\section{Introduction} % % The package \textsf{xecyrmongolian} has been designed for people who want to prepare documents whose % main language is Mongolian Cyrillic and want to typeset their work with either \XeLaTeX or Lua\LaTeX. % The package allows users to load other hyphenation patterns so to be able to create trully % multilingial documents. In addition, all standard enumerations use the Cyrillic alphabet used in % Mongolia. The following simple \LaTeX\ code is a typical usage example of the package. %\begin{verbatim} % \documentclass[a4paper]{article} % \usepackage{xltxtra} % \usepackage{enumitem} % \usepackage{xecyrmongolian} % \begin{document} % \setmainfont{MenkGarqagTig.ttf} % or any font you like % \begin{enumerate}[label=(\Alph*)] % \item an apple % \item a banana % \item a carrot % \item a durian % \end{enumerate} % \Useg{12} % \end{document} %\end{verbatim} % \section{The Source Code} % First we define the various strings that correspond to the standard \LaTeX\ captions. % \begin{macrocode} %<*xecyrmongolian> \message{Package `xecyrmongolian' version 1.0.0 by ^^J% Apostolos Syropoulos and Bat-erdene Altangerel} \def\prefacename{Оршил}% \def\refname{Ашигласан ном}% \def\abstractname{Товчлол}% \def\bibname{Ашигласан номзүй}% \def\chaptername{Бүлэг}% \def\appendixname{Хавсралт}% \def\contentsname{Гарчиг}% \def\listfigurename{Зургийн жагсаалт}% \def\listtablename{Хүснэгтийн жагсаалт}% \def\indexname{Товъёог}% \def\figurename{Зураг}% \def\tablename{Хүснэгт}% \def\partname{Хэсэг}% \def\enclname{Оруулах}% \def\ccname{Мэдэгдэл}% \def\headtoname{}% \def\pagename{Хуудас}% \def\seename{Үзнэ үү}% \def\alsoname{мөн үзнэ үү}% \def\proofname{Баталгаа:}% \def\glossaryname{Тайлбар}% % \end{macrocode} % \begin{macro}{\Useg} % \begin{macro}{\useg} % Next, we define the macros |\Useg| and |\useg| that are the Mongolian counterpart of |\Alph| and % |\alph|, respectively. However, these commands should not be used in enumerations, etc. It % is better to make the |\Alph| commands to produce Cyrillic letters by giving the command % |\usegalph|. The behavior of this command is the default behavior of the package. % \begin{macrocode} \def\Useg#1{\ifcase#1\or А\or Б\or В\or Г\or Д\or Е\or ᠎Ё\or Ж\or З\or И\or ᠎Й\or К\or Л\or М\or Н\or О\or Ө\or П\or Р\or С\or Т\or У\or Ү\or Ф\or Х\or Ц\or Ч\or Ш\or Щ\or Ъ\or Ы\or Ь\or Э\or Ю\or Я\else\@ctrerr\fi} \def\useg#1{\ifcase#1\or а\or б\or в\or г\or д\or е\or ё\or ж\or з\or и\or й\or к\or л\or м\or н\or о\or ө\or п\or р\or с\or т\or у\or Ү\or ф\or х\or ц\or ч\or ш\or щ\or ъ\or ы\or ь\or э\or ю\or я\else\@ctrerr\fi} % \end{macrocode} % \end{macro} % \end{macro} % The previous commands do not work if their argument is a counter. And since we may want to % use them in enumeration or to number chapters, we introduce the following commands that work % properly when their arguments are counters. % \begin{macrocode} \def\useg@mong#1{\expandafter\useg\expandafter{\the#1}} \def\Useg@mong#1{\expandafter\Useg\expandafter{\the#1}} % \end{macrocode} % \begin{macro}{\mongmonth} % Now we redefine |\today| so as to produce dates in Mongolian. The % names of months are defined by the macro |\mongmonth|. % \begin{macrocode} \def\mongmonth{% \ifcase\month\or 1-р ~сарын\or 2-р ~сарын\or 3-р ~сарын\or 4-р ~сарын\or 5-р ~сарын\or 6-р ~сарын\or 7-р ~сарын\or 8-р ~сарын\or 9-р ~сарын\or 10-р ~сарын\or 11-р ~сарын\or 12-р ~сарын\fi} \def\today{\number\year~оны~\mongmonth\space \number\day} % \end{macrocode} % \end{macro} % Lua\LaTeX\ and \XeLaTeX\ have different ways to load hyphenation patterns. Package % \textsf{luahyphenrules} by Javier Bezos facilitates this process for people who % want to use Lua\LaTeX\ and the ``traditional'' way to load hyphenation patterns. % To ensure proper inclusion of LuaTeX staff, I use the following ``idiom'': % \begin{center} % |\ifx\directlua\undefined |\texttt{\textit{non Lua\LaTeX\ code}}|\else |% % \texttt{\textit{Lua\LaTeX\ code}}|\fi| % \end{center} % \begin{macrocode} \ifx\directlua\undefined\else\RequirePackage{luahyphenrules}\fi % \end{macrocode} % The code that follows loads the hyphenation patterns. The \XeLaTeX\ code % is quite standard and depends on the \textsf{babel} pattern loading mechanism, while the % Lua\LaTeX\ code uses the |\HyphenRules| macro, which has essentially the functionality % of the |\selectlanguage| macro. % \begin{macrocode} \ifx\directlua\undefined% \language\l@mongolian\else\HyphenRules{mongolian}\fi% % \end{macrocode} % By default the Mongolian alphabetic enumeration is used instead of enumerations with Latin letters. % \begin{macrocode} \let\latin@alph\@alph \let\latin@Alph\@Alph \let\@alph\useg@mong \let\@Alph\Useg@mong % \end{macrocode} % \begin{macro}{\nousegalph} % \begin{macro}{\usegalph} % If for some reason, the user needs to have the original enumeration back, then the user should used % the command |\nousegalph|. And if she wants to switch back, then she has to use the |\usegalph| % command: % \begin{macrocode} \def\nousegalph{% \let\@alph\latin@alph \let\@Alph\latin@Alph} \def\usegalph{% \let\@alph\useg@mong \let\@Alph\Useg@mong} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\setlanguage} % We provide the |\setlanguage| command which % activates the hypehnation patterns of some other language. It is similar % to babel's |\selectlanguage|, but we opted to use a new name to avoid possible name conflicts. % Valid arguments include |monogreek|, |mongolian|, and |american|. As was noted % previously, package \textsf{luahyphenrules} provides the command |\HyphenRules| which has exactly % the same functionality as this command. So when using Lua\LaTeX\ users will actually use the % |\HyphenRules| command. And since the main language of the documenyt will be Mongolian, we % have to load the Mongolian hypehnation patterns. % \begin{macrocode} \ifx\directlua\undefined% \def\setlanguage#1{% \expandafter\ifx\csname l@#1\endcsname\relax% \typeout{^^J Error: No hyphenation pattern for language #1 loaded,}% \typeout{ default hyphenation patterns are used.^^J}% \language=0% \else\language=\csname l@#1\endcsname\fi} \else \let\setlanguage\HyphenRules \fi \setlanguage{mongolian} % % \end{macrocode} % \end{macro} % \Finale