summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx')
-rw-r--r--Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx727
1 files changed, 570 insertions, 157 deletions
diff --git a/Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx b/Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx
index bc51a9190ac..22f69bf0f89 100644
--- a/Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx
+++ b/Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx
@@ -1,16 +1,28 @@
% \iffalse meta-comment
%
-% Copyright 1989-2001 Johannes L. Braams and any individual authors
-% listed elsewhere in this file. All rights reserved.
-%
-% This file is part of the Babel system release 3.7.
-% --------------------------------------------------
-%
-% It may be distributed under the terms of the LaTeX Project Public
-% License, as described in lppl.txt in the base LaTeX distribution.
-% Either version 1.2 or, at your option, any later version.
+%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
-% \CheckSum{263}
% \iffalse
% Tell the \LaTeX\ system who we are and write an entry on the
% transcript.
@@ -20,206 +32,607 @@
%<code>\ProvidesLanguage{serbianc}
%\fi
%\ProvidesFile{serbianc.dtx}
- [2011/06/06 v2.2 Serbian cyrillic]
+ [2019/01/12 3.0 Serbian Cyrillic support for the Babel system]
%\iffalse
-% Babel package for LaTeX version 2e
-% Copyright (C) 1989 - 2001
-% by Johannes Braams, TeXniek
-%
-% Please report errors to: J.L. Braams
-% JLBraams@cistron.nl
+%% File `serbianc.dtx'
%
% This file is part of the babel system, it provides the source
-% code for the Serbian cyrillic language definition file. A contribution
-% was made by Filip Br\v{c}i\'{c} <brcha@gna.org>
-%
+% code for the Serbian Cyrillic language definition file.
%<*filedriver>
\documentclass{ltxdoc}
-\newcommand*\TeXhax{\TeX hax}
+\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}
-% \changes{serbianc-1.0}{2002/09/03}{Created the first public release
-% of serbian cyrillic packet for babel}
-% \changes{serbianc-1.1}{2005/11/09}{Released new version with some bugs fixed
-% and with automated installer for GNU/* or POSIX-like systems}
-% \changes{serbianc-2.0}{2006/11/24}{Dropped support for non-utf coding style,
-% now you have to use T2A font encoding and write using utf-8. If you don't like
-% that, use previous version}
-% \changes{serbianc-2.1}{2007/02/23}{Minor bugfixes}
-% \changes{serbianc-2.2}{2011/06/06}{Published on CTAN}
-%
-% \section{The Serbian cyrillic language}
-%
-% The file \file{\filename}\footnote{The file described in this
-% section has version number \fileversion\ and was last revised on
-% \filedate. A contribution was made by Filip Br\v{c}i\'{c}
-% (\texttt{brcha@gna.org}).} Defines all the language
-% definition macros for the serbianc language, typeset in a cyrillic
-% script.
-%
-% 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 (|\tg|, |\ctg|,
-% |\arctg|, |\arcctg|, |\sh|, |\ch|, |\th|, |\cth|, |\arsh|,
-% |\arch|, |\arth|, |\arcth|, |\Prob|, |\Expect|, |\Variance|).
+%
+% \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{}
%
-% The macro |\LdfInit| takes care of preventing that this file is
-% loaded more than once, checking the category code of the
+% \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
+\LdfInit{serbianc}{captionsserbianc}
% \end{macrocode}
%
-% When this file is read as an option, i.e. by the |\usepackage|
-% command, \texttt{serbianc} will be an `unknown' language in which
-% case we have to make it known. So we check for the existence of
-% |\l@serbianc| to see whether we have to do something here.
+% 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
+ \@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}
-
-\AtEndOfPackage{%
- \RequirePackage{ucs}%
- \PassOptionsToPackage{utf8x}{inputenc}%
- \RequirePackage{inputenc}%
- \PassOptionsToPackage{T2A}{fontenc}%
- \RequirePackage{fontenc}%
+\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
}
-
-% \end{macrocode}
-%
-% The next step consists of defining commands to switch to (and
-% from) the Serbocroatian language.
-%
-% \begin{macro}{\captionsserbianc}
-% The macro |\captionsserbianc| defines all strings used
-% in the four standard documentclasses provided with \LaTeX.
-% \begin{macrocode}
-\addto\captionsserbianc{%
- \def\prefacename{\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}%{Предговор}%
- \def\refname{\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}%{Литература}%
- \def\abstractname{\CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt}%{Абстракт}%
- \def\bibname{\CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra}%
- %{Библиографија}%
- \def\chaptername{\CYRG\cyrl\cyra\cyrv\cyra}%{Глава}%
- \def\appendixname{\CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk}%{Додатак}%
- \def\contentsname{\CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje}%{Садржај}%
- \def\listfigurename{\CYRL\cyri\cyrs\cyrt\cyra \cyrs\cyrl\cyri\cyrk\cyra}%
- %{Листа слика}%
- \def\listtablename{\CYRL\cyri\cyrs\cyrt\cyra \cyrt\cyra\cyrb\cyre\cyrl\cyra}%
- %{Листа табела}%
- \def\indexname{\CYRI\cyrn\cyrd\cyre\cyrk\cyrs \cyrp\cyro\cyrje\cyrm\cyro\cyrv\cyra}%
- %{Индекс појмова}%
- \def\figurename{\CYRS\cyrl\cyri\cyrk\cyra}%{Слика}%
- \def\tablename{\CYRT\cyra\cyrb\cyre\cyrl\cyra}%{Табела}%
- \def\partname{\CYRD\cyre\cyro}%{Део}%
- \def\enclname{\CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri}%{Прилози}%
- \def\ccname{\CYRK\cyro\cyrp\cyri\cyrje\cyre}%{Копије}%
- \def\headtoname{\CYRP\cyrr\cyri\cyrm\cyra}%{Прима}%
- \def\pagename{\cyrs\cyrt\cyrr\cyra\cyrn\cyra}%{страна}%
- \def\seename{\cyrv\cyri\cyrd\cyri}%{види}%
- \def\alsoname{\cyrv\cyri\cyrd\cyri \cyrt\cyra\cyrk\cyro\cyrdje\cyre}%{види такође}%
- \def\proofname{\CYRD\cyro\cyrk\cyra\cyrz}%{Доказ}%
- \def\glossaryname{\CYRR\cyre\cyrch\cyrn\cyri\cyrk}%{Речник}%
+\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}
-% \end{macro}
-%
-% \begin{macro}{\dateserbianc}
-% The macro |\dateserbianc| redefines the command |\today| to
-% produce Serbian dates.
-% \begin{macrocode}
-\def\dateserbianc{%
- \def\today{\number\day .~\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 % децембар
- \space \number\year.}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\extrasserbianc}
-% \begin{macro}{\noextrasserbianc}
-% The macro |\extrasserbianc| will perform all the extra
-% definitions needed for the Serbian language. The macro
-% |\noextrasserbianc| is used to cancel the actions of
-% |\extrasserbianc|.
-%
-% In serbianc the first paragraph of each section should be indented.
-% Add this code only in \LaTeX.
-% \begin{macrocode}
-\ifx\fmtname plain \else
- \let\@aifORI\@afterindentfalse
- \def\bbl@frenchindent{\let\@afterindentfalse\@afterindenttrue
- \@afterindenttrue}
- \def\bbl@nonfrenchindent{\let\@afterindentfalse\@aifORI
- \@afterindentfalse}
- \addto\extrasserbianc{\bbl@frenchindent}
- \addto\noextrasserbianc{\bbl@nonfrenchindent}
+%
+% 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}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\mathserbianc}
-% Some math functions in serbianc math books have other names:
-% e.g. |sinh| in serbianc is written as |sh| etc. So we define a
+% 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} % same as \sinh
-\def\ch{\mathop{\operator@font ch}\nolimits} % same as \cosh
-\def\th{\mathop{\operator@font th}\nolimits} % same as \tanh
-\def\cth{\mathop{\operator@font cth}\nolimits} % same as \coth
+\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\tg{\mathop{\operator@font tg}\nolimits} % same as \tan
-\def\ctg{\mathop{\operator@font ctg}\nolimits} % same as \cot
-\def\arctg{\mathop{\operator@font arctg}\nolimits} % same as \arctan
-\def\arcctg{\mathop{\operator@font arcctg}\nolimits}
-\def\Prob{\mathop{\mathsf P\hskip0pt}\nolimits}
-\def\Expect{\mathop{\mathsf E\hskip0pt}\nolimits}
-\def\Variance{\mathop{\mathsf D\hskip0pt}\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}
-% \end{macro}
%
% 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
@@ -236,4 +649,4 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
-\endinput
+\endinput \ No newline at end of file