diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx')
-rw-r--r-- | macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx | 652 |
1 files changed, 652 insertions, 0 deletions
diff --git a/macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx b/macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx new file mode 100644 index 0000000000..22f69bf0f8 --- /dev/null +++ b/macros/latex/contrib/babel-contrib/serbianc/serbianc.dtx @@ -0,0 +1,652 @@ +% \iffalse meta-comment +% +%Copyright 2019 Uroš Stefanović, +%2002--2019 Filip Brčić +%All rights reserved. +% +% This file is intended to be used with the Babel system. +% ------------------------------------------------------ +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Uroš Stefanović. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% \fi +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{serbianc.dtx} +%</dtx> +%<code>\ProvidesLanguage{serbianc} +%\fi +%\ProvidesFile{serbianc.dtx} + [2019/01/12 3.0 Serbian Cyrillic support for the Babel system] +%\iffalse +%% File `serbianc.dtx' +% +% This file is part of the babel system, it provides the source +% code for the Serbian Cyrillic language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +\usepackage[T2A]{fontenc} +\title{The Serbian Cyrillic Language in the \babel\ system} +\author{Uroš Stefanović\footnote{\texttt{urostajms@gmail.com}}} +\newcommand*\babel{\textsf{babel}} +\newcommand*\langvar{$\langle \it lang \rangle$} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\begin{document} + \maketitle + \DocInput{serbianc.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{serbianc.dtx} +% +% \section*{Serbian Cyrillic Language} +% +% The file \file{\filename} defines all the language definition +% macros for Serbian language, typeset in a Cyrillic script. +% +% For this language the character |"| is made active. In +% table~\ref{tab:serbianc-quote} an overview is given of its +% purpose. One of the reasons for this is that, in the Serbian +% language, some special characters are used. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"-| & An explicit hyphen sign, allowing hyphenation +% in the rest of the word; inserts a hyphen which is repeated at the beginning of the +% next line (recommended to use for compound words with hyphen). \\ +% \verb="|= & Disables ligature at this position. \\ +% |""| & Similar to |"-| but prints no hyphen sign. \\ +% |"~| & Compound word mark without a breakpoint, prints hyphen +% prohibiting hyphenation at the point. \\ +% |"=| & A compound word mark with a breakpoint, prints hyphen +% allowing hyphenation in the composing words. \\ +% |"`| & German opening double quote (looks like ,\kern-0.08em,). \\ +% |"'| & German closing double quote (looks like ``). \\ +% |"'| & (if the \Lopt{quotes} attribute is used) Closing double quote (looks like ''). \\ +% |"<| & French opening double quote (looks like $<\!\!<$). \\ +% |">| & French closing double quote (looks like $>\!\!>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{serbianc.ldf}}\label{tab:serbianc-quote} +% \end{center} +% \end{table} +% +% Macro |\today| prints the date in Serbian. Alternatively, if attribute \Lopt{datei} is used, +% |\today| prints the current date, but prints `јуни' and `јули' for `June' and `July'. +% If you prefer to use `јуни' and `јули' instead of default `јун' and `јул', +% use the \Lopt{datei} attribute. Also, the |\today*| macro prints the date without dot after the year +% (used when after the date is the punctuation mark, such as comma). +% Alternatively, the commands |\todayRoman| and |\todayRoman*| print the current date using Roman numerals for months. +% +% The alphabetical enumerations in texts use the Cyrillic alphabet and alphabetic order. +% In principle, enumerations are a matter for class and style designers but the same can be +% said also about things, other than enumerations, such as names of sections and bibliography lists. +% +% Apart from defining shorthands, we need to make sure that the +% first paragraph of each section is indented. Furthermore, the +% following new math operators are defined: |\sh|, |\ch|, |\tg|, |\ctg|, +% |\arctg|, |\arcctg|, |\th|, |\cth|, |\arsh|, +% |\arch|, |\arth|, |\arcth|, |\cosec|, |\Prob|, |\Expect|, |\Variance|, +% |\arcsec|, |\arccosec|, |\sech|, |\cosech|, |\arsech|, |\arcosech|, +% |\NZD|, |\nzd|, |\NZS|, |\nzs|. Cyrillic letters +% in math mode can be typed with the aid of text commands such as |\textbf|, |\textsf|, |\textit|, +% |\texttt|, e.t.c. +% +% By default, ekavian spelling is enabled. Ijekavian +% spelling can be enabled by setting the attribute to \Lopt{ijekav}. To set +% an attribute, put the |\languageattribute| macro within a document preamble after +% \babel, for example, +%\begin{verbatim} +% \usepackage[english,serbianc]{babel} +% \languageattribute{serbianc}{ijekav} +%\end{verbatim} +% Setting the \Lopt{ijekav} attribute changes the built-in strings (caption names). +% For example, the part will be entitled as +% `Део' by default and as `Дио' if the +% Serbianc language attribute is set to \Lopt{ijekav}. +% Same result can be achieved using a modifier as follows: +%\begin{verbatim} +% \usepackage[english,serbianc.ijekav]{babel} +%\end{verbatim} +% Using a modifier in a package option is often better. A modifier is set after +% the language name, and is prefixed with a dot (only when the language is set +% as package option — neither global options nor the main key accept them). +% Also, it's possible to use more than one attribute: +%\begin{verbatim} +% \usepackage[english,serbianc.ijekav.datei.quotes]{babel} +%\end{verbatim} +% +% The file \file{serbianc.ldf} is designed to work both with +% legacy non-unicode (8-bit) and new Unicode encodings of the source document +% files (input encodings) and of the font files (font encodings). This is +% achieved by excluding (bypassing) the |\cyr...| macros, which map every letter +% in a source file with given input encoding to a corresponding code point in a +% font file with a given font encoding when running modern engines, such as +% Lua\LaTeX\ or Xe\LaTeX, in native Unicode mode instead of legacy engines, such +% as \LaTeX\ or PDF\LaTeX, or Unicode engines in a compatibility (8-bit) mode. +% +% For Lua\LaTeX\ or Xe\LaTeX\ one needs to load the |fontspec| package. +% The following example shows how to load Computer Modern Unicode (CMU) fonts (which is a +% part of all modern \LaTeX\ distributions), and also to get correct italic shape of the letters |б|, |г|, |д|, |п| and |т| for Serbian language: +%\begin{verbatim} +% \usepackage{fontspec} +% \defaultfontfeatures{Ligatures={TeX},Language=Serbian,Script=Cyrillic} +% \setmainfont{CMU Serif} +% \setsansfont{CMU Sans Serif} +% \setmonofont{CMU Typewriter Text} +% \usepackage[english,serbianc]{babel} +%\end{verbatim} +% +% \StopEventually{} +% +% \section*{The code} +% +% The macro |\LdfInit| takes care of preventing this file from +% loading more than once, checking the category code of the +% \texttt{@} sign, etc. +% +% \begin{macrocode} +%<*code> +\LdfInit{serbianc}{captionsserbianc} +% \end{macrocode} +% +% First, we check if Lua\LaTeX\ or Xe\LaTeX\ is running. If it is, we set +% the boolean key |\if@srbc@uni@ode| to true. It will be used to eliminate |\cyr...| +% commands, which were introduced in \LaTeX2e\ to handle various +% Cyrillic input encodings. With the introduction of Unicode, \LaTeX\ is +% moving to universal input encoding, so we consider these |\cyr...| +% commands obsolete. However, they are still preserved for backward +% compatibility in case \LaTeX\ or PDF\LaTeX\ are running. +% +% \begin{macrocode} +\ifdefined\if@srbc@uni@ode + \PackageError{babel}{if@srbc@uni@ode already defined.} + \relax +\fi +\newif\if@srbc@uni@ode +\ifdefined\luatexversion \@srbc@uni@odetrue \else +\ifdefined\XeTeXrevision \@srbc@uni@odetrue \fi\fi +% \end{macrocode} +% +% Check if hyphenation patterns for the Serbianc language have been +% loaded in \file{language.dat}. Namely, we check for the existence of +% |\l@serbianc|. If it is not defined, we declare Serbianc as dialect +% for the default language number 0, which is almost certainly English. +% +% \begin{macrocode} +\ifx\l@serbianc\@undefined + \@nopatterns{Serbianc} + \adddialect\l@serbianc0 +\fi +% \end{macrocode} +% +% There is a limited list of encodings appropriate for Serbian Cyrillic text. We +% will look at which one of them is declared and keep its name in the macro +% |\cyrillicencoding|. +% The correct 7-bit Cyrillic encoding is \texttt{OT2}. +% The correct 8-bit Cyrillic encodings are +% \texttt{T2A} (default for 8-bit compilers) and \texttt{X2}. +% The correct utf8 encodings are +% \texttt{TU} (default for Xe\LaTeX\ and Lua\LaTeX), +% \texttt{EU1} (obsolete, formerly used for Xe\LaTeX), +% \texttt{EU2} (obsolete, formerly used for Lua\LaTeX). +% +% In 8-bit (\LaTeX) mode, the user may choose a different non-unicode Cyrillic +% encoding---\texttt{X2} or \texttt{OT2}. If one wants +% to use another font encoding rather than default (\texttt{T2A}), +% he or she has to load the corresponding file \emph{before} \file{babel.sty}. +% +% Remember that, for the Serbian language, the \texttt{T2A} encoding is +% better than \texttt{X2}, because \texttt{X2} does not contain Latin +% letters, and users should pay attention and switch the language +% every time they want to type a Latin word inside a Serbian phrase +% or vice versa. +% +% We parse the |\cdp@list| containing encodings known to \LaTeX\ +% in the order in which they have been loaded by the time \texttt{babel} is called. +% We set the |\cyrillicencoding| to the \emph{last} loaded encoding in the +% list of supported Cyrillic encodings: \texttt{OT2}, +% \texttt{X2}, \texttt{T2A}. In Unicode mode, +% |\cyrillicencoding| is set to \texttt{TU} by \texttt{fontspec}. Nevertheless, +% here we provide similar definitions; 8-bit encodings are kept for Unicode +% compilers (Lua\LaTeX\ and Xe\LaTeX) since they can run in compatibility +% (8-bit) mode. +% +% \begin{macrocode} +\def\@setcyrillicencoding{% + \def\sce@a##1##2{% + \edef\sce@b{##1}% + \edef\sce@c{##2}% + \ifx\sce@b\sce@c + \let\cyrillicencoding\sce@c + \fi}% + \def\cdp@elt##1##2##3##4{% + \sce@a{##1}{OT2}% + \sce@a{##1}{X2}% + \sce@a{##1}{T2A}% + \if@srbc@uni@ode + \sce@a{##1}{TU}% + \fi}% + \cdp@list +} +\ifx\cyrillicencoding\undefined + \@setcyrillicencoding +\fi +\@onlypreamble\@setcyrillicencoding +\@onlypreamble\sce@a +\@onlypreamble\sce@b +\@onlypreamble\sce@c +\ifx\cyrillicencoding\undefined + \if@srbc@uni@ode + \edef\cyrillicencoding{TU} + \else + \edef\cyrillicencoding{T2A} + \fi + \PackageWarning{babel}% + {No Cyrillic font encoding has been loaded so far.\MessageBreak + A font encoding should be declared before babel.\MessageBreak + Default `\cyrillicencoding' encoding will be loaded + }% + \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% + \AtBeginDocument{\@setcyrillicencoding} +\fi +% \end{macrocode} +% +% We define the macro |\Serbianc| simply as an alias for +% |\selectlanguage{serbianc}|. +% +% \begin{macrocode} +\DeclareRobustCommand{\Serbianc}{\selectlanguage{\serbianc}} +% \end{macrocode} +% +% We define |\cyrillictext| and its alias |\cyr|; these macros are intended for use within the \texttt{babel} macros and +% do not perform the complete change of the language. +% +% In particular, they to do not change the captions and the name of current +% language stored in the macro |\languagename|. This inconsistency might +% break some assumptions embedded into \texttt{babel}. +% For example, the |\iflanguage| macro will fail. +% +% Furthermore, |\cyrillictext| does +% not activate shorthands, so |"<|, |">|, |"`|, |"'|, e.t.c. will not work. +% +% Lastly, |\cyrillictext| does not write its trace +% to \file{.aux} file, which might result in wrong typesetting of +% table of contents, list of tables and list of figures in multilingual +% documents. +% +% For these reasons, the use of the declaration |\cyrillictext| and +% its aliases in ordinary text is strongly discouraged. Instead of the +% declaration |\cyrillictext|, it is recommended to use |\Serbianc| or the +% command |\foreignlanguage| defined in the \texttt{babel} core; their +% functionality is similar to |\selectlanguage{serbianc}|, but they do not +% change caption names, dates and shorthands. +% +% \begin{macrocode} +\DeclareRobustCommand{\cyrillictext}{% + \fontencoding\cyrillicencoding\selectfont + \let\encodingdefault\cyrillicencoding + \expandafter\set@hyphenmins\serbianchyphenmins + \language\l@serbianc}% +\let\cyr\cyrillictext +% \end{macrocode} +% +% The macro |\textcyrillic| takes an argument which is then typeset using the +% |\cyrillictext| declaration. +% +% \begin{macrocode} +\DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +% \end{macrocode} +% +% For Serbian, the \texttt{"} character is made active. This is done +% once; later on, its definition may vary. Other languages in the +% same document may also use the \texttt{"}~character for +% shorthands; we specify that the Serbian group of shorthands +% should be used. We save the original double quote character +% in the |\dq| macro to keep it available. The shorthand \texttt{"-} +% should be used in places where a word contains an explictit +% hyphenation character. According to the rules of the Serbian language, when +% a word break occurs at an explicit hyphen, it must appear both at the end of the +% first line and at the beginning of the second line. +% +% \begin{macrocode} +\initiate@active@char{"} +\begingroup \catcode`\"12 +\def\reserved@a{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\reserved@a +\declare@shorthand{serbianc}{"`}{\quotedblbase} +\declare@shorthand{serbianc}{"'}{\textquotedblleft} +\declare@shorthand{serbianc}{"<}{\guillemotleft} +\declare@shorthand{serbianc}{">}{\guillemotright} +\declare@shorthand{serbianc}{""}{\hskip\z@skip} +\declare@shorthand{serbianc}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{serbianc}{"=}{\nobreak-\hskip\z@skip} +\declare@shorthand{serbianc}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}} +\declare@shorthand{serbianc}{"-}{\nobreak\discretionary{-}{-}{-}\bbl@allowhyphens} +% \end{macrocode} +% +% The |\cyrdash| macro will be defined if it hadn't already been defined in a fontenc file. For |T2A| and |X2| fonts, +% |cyrdash| will be placed in the code of the English emdash. +% +% \begin{macrocode} +\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}} +% \end{macrocode} +% +% The macro |\captionsserbianc| defines all strings used in the four +% standard documentclasses provided by \LaTeX. +% +% \begin{macrocode} +\if@srbc@uni@ode + \addto\captionsserbianc{% + \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{Речник}% + }% + \let\captionsserbianc@ijekav=\captionsserbianc + \addto\captionsserbianc@ijekav{ + \def\partname{Дио}% + \def\glossaryname{Рjечник}% + } +\else + \addto\captionsserbianc{% + \def\prefacename{{\cyr\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}}% + \def\refname{{\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% + \def\abstractname{{\cyr\CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk}}% + \def\bibname{{\cyr\CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra}}% + \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% + \def\appendixname{{\cyr\CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk}}% + \def\contentsname{{\cyr\CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje}}% + \def\listfigurename{{\cyr\CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra}}% + \def\listtablename{{\cyr\CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra}}% + \def\indexname{{\cyr\CYRI\cyrn\cyrd\cyre\cyrk\cyrs}}% + \def\figurename{{\cyr\CYRS\cyrl\cyri\cyrk\cyra}}% + \def\tablename{{\cyr\CYRT\cyra\cyrb\cyre\cyrl\cyra}}% + \def\partname{{\cyr\CYRD\cyre\cyro}}% + \def\enclname{{\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri}}% + \def\ccname{{\cyr\CYRK\cyro\cyrp\cyri\cyrje\cyre}}% + \def\headtoname{{\cyr\CYRP\cyrr\cyri\cyrm\cyra}}% + \def\pagename{{\cyr\cyrs\cyrt\cyrr\cyra\cyrn\cyra}}% + \def\seename{{\cyr\cyrv\cyri\cyrd\cyri}}% + \def\alsoname{{\cyr\cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre}}% + \def\proofname{{\cyr\CYRD\cyro\cyrk\cyra\cyrz}}% + \def\glossaryname{{\cyr\CYRR\cyre\cyrch\cyrn\cyri\cyrk}}% + }% + \let\captionsserbianc@ijekav=\captionsserbianc + \addto\captionsserbianc@ijekav{ + \def\partname{{\cyr\CYRD\cyri\cyro}}% + \def\glossaryname{{\cyr\CYRR\cyrje\cyre\cyrch\cyrn\cyri\cyrk}}% + } +\fi +% \end{macrocode} +% +% The macro |\dateserbianc| redefines the commands |\today|, |\today*|, |\todayRoman| and |\todayRoman*| to produce Serbian dates. +% +% \begin{macrocode} +\if@srbc@uni@ode + \addto\dateserbianc{% + \def\month@serbianc{\ifcase\month\or + јануар\or + фебруар\or + март\or + април\or + мај\or + јун\or + јул\or + август\or + септембар\or + октобар\or + новембар\or + децембар\fi} + \def\today{\number\day.~\month@serbianc\ \number\year\@ifstar{}{.}} + \def\todayRoman{\number\day.~\@Roman\month~\number\year\@ifstar{}{.}}} + \let\dateserbianc@datei=\dateserbianc + \addto\dateserbianc@datei{ + \def\month@serbianc@datei{\ifnum\month=6 јуни% + \else\ifnum\month=7 јули\else\month@serbianc\fi\fi} + \def\today{\number\day.~\month@serbianc@datei\ \number\year\@ifstar{}{.}}} +\else + \def\dateserbianc{% + \def\month@serbianc{\ifcase\month\or + \cyrje\cyra\cyrn\cyru\cyra\cyrr\or + \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\or + \cyrm\cyra\cyrr\cyrt\or + \cyra\cyrp\cyrr\cyri\cyrl\or + \cyrm\cyra\cyrje\or + \cyrje\cyru\cyrn\or + \cyrje\cyru\cyrl\or + \cyra\cyrv\cyrg\cyru\cyrs\cyrt\or + \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyra\cyrr\or + \cyro\cyrk\cyrt\cyro\cyrb\cyra\cyrr\or + \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyra\cyrr\or + \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyra\cyrr\fi} + \def\today{\number\day.~\month@serbianc\ \number\year\@ifstar{}{.}} + \def\todayRoman{\number\day.~\@Roman\month~\number\year\@ifstar{}{.}}} + \let\dateserbianc@datei=\dateserbianc + \addto\dateserbianc@datei{ + \def\month@serbianc@datei{\ifnum\month=6\cyrje\cyru\cyrn\cyri% + \else\ifnum\month=7\cyrje\cyru\cyrl\cyri\else\month@serbianc\fi\fi} + \def\today{\number\day.~\month@serbianc@datei\ \number\year\@ifstar{}{.}} +} +\fi +% \end{macrocode} +% +% The Serbian hyphenation patterns can be used with |\lefthyphenmin| and +% |\righthyphenmin| set to 2. (Actually, the “official” definition even allows one character for |lefthyphen|, but in that case, +% the \LaTeX{} hyphenation patterns will give the wrong results.) +% +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +\providehyphenmins{serbianc}{\tw@\tw@} +% \end{macrocode} +% +% We instruct babel to switch font encoding using earlier defined macros +% |\cyrillictext| and |\latintext|. +% +% \begin{macrocode} +\addto\extrasserbianc{\cyrillictext} +\addto\noextrasserbianc{\latintext} +% \end{macrocode} +% +% Also, we specify that the Serbian group of shorthands should be used. +% +% \begin{macrocode} +\addto\extrasserbianc{\languageshorthands{serbianc}} +\addto\extrasserbianc{\bbl@activate{"}} +\addto\noextrasserbianc{\bbl@deactivate{"}} +% \end{macrocode} +% +% Serbian typesetting requires |frenchspacing|. So, we add commands to +% |\extrasserbianc| and |\noextrasserbianc| to turn it on and off, respectively. +% +% \begin{macrocode} +\addto\extrasserbianc{\bbl@frenchspacing} +\addto\noextrasserbianc{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% In Serbian, the first paragraph of each section should be indented. +% +% \begin{macrocode} +\let\@aifORI\@afterindentfalse +\def\bbl@serbiancindent{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue} +\def\bbl@nonserbiancindent{\let\@afterindentfalse\@aifORI\@afterindentfalse} +\addto\extrasserbianc{\bbl@serbiancindent} +\addto\noextrasserbianc{\bbl@nonserbiancindent} +% \end{macrocode} +% +% We redefine the macro |\Alph|, which now produces (uppercase) Cyrillic letters instead of Latin +% ones when Serbian is switched on. +% +% \begin{macrocode} +\addto\extrasserbianc{ +\babel@save\@Alph +\if@srbc@uni@ode + \def\@Alph#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 Ш\else\@ctrerr\fi} +\else + \def\@Alph#1{\ifcase#1\or + \CYRA\or\CYRB\or\CYRV\or\CYRG\or\CYRD\or\CYRDJE\or\CYRE\or\CYRZH\or\CYRZ\or + \CYRI\or\CYRJE\or\CYRK\or\CYRL\or\CYRLJE\or\CYRM\or\CYRN\or\CYRNJE\or\CYRO\or + \CYRP\or\CYRR\or\CYRS\or\CYRT\or\CYRTSHE\or\CYRU\or\CYRF\or\CYRH\or\CYRC\or + \CYRCH\or\CYRDZHE\or\CYRSH\else\@ctrerr\fi} +\fi +} +% \end{macrocode} +% +% The macro |\alph| produces lowercase Cyrillic letters. +% +% \begin{macrocode} +\addto\extrasserbianc{ +\babel@save\@alph +\if@srbc@uni@ode + \def\@alph#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 ш\else\@ctrerr\fi} +\else + \def\@alph#1{\ifcase#1\or + \cyra\or\cyrb\or\cyrv\or\cyrg\or\cyrd\or\cyrdje\or\cyre\or\cyrzh\or\cyrz\or + \cyri\or\cyrje\or\cyrk\or\cyrl\or\cyrlje\or\cyrm\or\cyrn\or\cyrnje\or\cyro\or + \cyrp\or\cyrr\or\cyrs\or\cyrt\or\cyrtshe\or\cyru\or\cyrf\or\cyrh\or\cyrc\or + \cyrch\or\cyrdzhe\or\cyrsh\else\@ctrerr\fi} +\fi +} +% \end{macrocode} +% +% An |ijekav| attribute changes the default behavior and activates an +% alternative set of captions suitable for typesetting in ijekavian dialect. +% The |quotes| attribute changes the |"'| shorthand to produce '' as closing quotation mark, +% instead of the traditional `` quotation mark of Serbian language. +% Also, the |datei| attribute will produce `јуни' and `јули' instead `јун' and `јул' +% for date. +% +% \begin{macrocode} +\bbl@declare@ttribute{serbianc}{ijekav}{% + \PackageInfo{babel}{Serbianc attribute set to ijekav}% + \let\captionsserbianc=\captionsserbianc@ijekav } +\@onlypreamble\captionsserbianc@ijekav +\bbl@declare@ttribute{serbianc}{quotes}{% + \PackageInfo{babel}{Serbianc attribute set to quotes}% + \declare@shorthand{serbianc}{"'}{\textquotedblright} } +\bbl@declare@ttribute{serbianc}{datei}{% + \PackageInfo{babel}{Serbianc attribute set to datei}% + \let\dateserbianc=\dateserbianc@datei } +\@onlypreamble\dateserbianc@datei +% \end{macrocode} +% +% Some math functions in Serbian math books have other names: +% e.g. |sinh| in Serbian is written as |sh| etc. So we define a +% number of new math operators. +% +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} +\def\ch{\mathop{\operator@font ch}\nolimits} +\def\tg{\mathop{\operator@font tg}\nolimits} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +\def\arctg{\mathop{\operator@font arctg}\nolimits} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +\addto\extrasserbianc{% + \babel@save{\th}% + \let\ltx@th\th + \def\th{\textormath{\ltx@th}% + {\mathop{\operator@font th}\nolimits}}% + } +\def\cth{\mathop{\operator@font cth}\nolimits} +\def\arsh{\mathop{\operator@font arsh}\nolimits} +\def\arch{\mathop{\operator@font arch}\nolimits} +\def\arth{\mathop{\operator@font arth}\nolimits} +\def\arcth{\mathop{\operator@font arcth}\nolimits} +\def\cosec{\mathop{\operator@font cosec}\nolimits} +\def\arcsec{\mathop{\operator@font arcsec}\nolimits} +\def\arccosec{\mathop{\operator@font arccosec}\nolimits} +\def\sech{\mathop{\operator@font sech}\nolimits} +\def\cosech{\mathop{\operator@font cosech}\nolimits} +\def\arsech{\mathop{\operator@font arsech}\nolimits} +\def\arcosech{\mathop{\operator@font arcosech}\nolimits} +\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits} +\def\Expect{\mathop{\kern\z@\mathsf{E}}\nolimits} +\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits} +\if@srbc@uni@ode + \def\nzs{\mathop{\mathrm{нзс}}\nolimits} + \def\nzd{\mathop{\mathrm{нзд}}\nolimits} + \def\NZS{\mathop{\mathrm{НЗС}}\nolimits} + \def\NZD{\mathop{\mathrm{НЗД}}\nolimits} +\else + \def\nzs{\mathop{\textnormal{\cyrn\cyrz\cyrs}}\nolimits} + \def\nzd{\mathop{\textnormal{\cyrn\cyrz\cyrd}}\nolimits} + \def\NZS{\mathop{\textnormal{\CYRN\CYRZ\CYRS}}\nolimits} + \def\NZD{\mathop{\textnormal{\CYRN\CYRZ\CYRD}}\nolimits} +\fi +% \end{macrocode} +% +% The macro |\ldf@finish| takes care of looking for a +% configuration file, setting the main language to be switched on +% at |\begin{document}| and resetting the category code of +% \texttt{@} to its original value. +% +% \begin{macrocode} +\ldf@finish{serbianc} +%</code> +% \end{macrocode} +% +% \Finale +%% +%% \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 \~} +%% +\endinput
\ No newline at end of file |