diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx')
-rw-r--r-- | Master/texmf-dist/source/generic/babel-serbianc/serbianc.dtx | 727 |
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 |