diff options
Diffstat (limited to 'macros/latex/contrib/zref-clever/zref-clever.dtx')
-rw-r--r-- | macros/latex/contrib/zref-clever/zref-clever.dtx | 1519 |
1 files changed, 1458 insertions, 61 deletions
diff --git a/macros/latex/contrib/zref-clever/zref-clever.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx index 5767e6ab4f..155d7141ee 100644 --- a/macros/latex/contrib/zref-clever/zref-clever.dtx +++ b/macros/latex/contrib/zref-clever/zref-clever.dtx @@ -43,6 +43,11 @@ %<*driver> \documentclass{l3doc} +\usepackage{fontspec} +\setmainfont{CMU Serif} +\setsansfont{CMU Sans Serif} +\setmonofont{CMU Typewriter Text} + % Have \GetFileInfo pick up date and version data and used in the % documentation. \usepackage{zref-clever} @@ -166,7 +171,7 @@ % % Identify the package. % \begin{macrocode} -\ProvidesExplPackage {zref-clever} {2024-03-14} {0.4.4} +\ProvidesExplPackage {zref-clever} {2024-08-23} {0.4.6} {Clever LaTeX cross-references based on zref} % \end{macrocode} % @@ -369,19 +374,34 @@ % there is no possible verification mechanism for this. % % -% \begin{macro}[EXP]{\@@_get_enclosing_counters_value:n} -% Recursively generate a \emph{sequence} of ``enclosing counters'' values, -% for a given \meta{counter} and leave it in the input stream. This -% function must be expandable, since it gets called from \cs{zref@newprop} -% and is the one responsible for generating the desired information when -% the label is being set. Note that the order in which we are getting this -% information is reversed, since we are navigating the counter reset chain -% bottom-up. But it is very hard to do otherwise here where we need -% expandable functions, and easy to handle at the reading side. +% \begin{macro}[EXP] +% { +% \@@_get_enclosing_counters:n , +% \@@_get_enclosing_counters_value:n , +% } +% Recursively generate a \emph{sequence} of ``enclosing counters'' and +% values, for a given \meta{counter} and leave it in the input stream. +% These functions must be expandable, since they get called from +% \cs{zref@newprop} and are the ones responsible for generating the desired +% information when the label is being set. Note that the order in which we +% are getting this information is reversed, since we are navigating the +% counter reset chain bottom-up. But it is very hard to do otherwise here +% where we need expandable functions, and easy to handle at the reading +% side. % \begin{syntax} +% \cs{@@_get_enclosing_counters:n} \Arg{counter} % \cs{@@_get_enclosing_counters_value:n} \Arg{counter} % \end{syntax} % \begin{macrocode} +\cs_new:Npn \@@_get_enclosing_counters:n #1 + { + \cs_if_exist:cT { c@ \@@_counter_reset_by:n {#1} } + { + { \@@_counter_reset_by:n {#1} } + \@@_get_enclosing_counters:e + { \@@_counter_reset_by:n {#1} } + } + } \cs_new:Npn \@@_get_enclosing_counters_value:n #1 { \cs_if_exist:cT { c@ \@@_counter_reset_by:n {#1} } @@ -401,16 +421,18 @@ % Gregorio}, aka `egreg' at % \url{https://tex.stackexchange.com/q/611370/#comment1529282_611385}). % \begin{macrocode} +\cs_generate_variant:Nn \@@_get_enclosing_counters:n { e } \cs_generate_variant:Nn \@@_get_enclosing_counters_value:n { e } % \end{macrocode} % \end{macro} % % % \begin{macro}[EXP]{\@@_counter_reset_by:n} -% Auxiliary function for \cs{@@_get_enclosing_counters_value:n}, and useful -% on its own standing. It is broken in parts to be able to use the -% expandable mapping functions. \cs{@@_counter_reset_by:n} leaves in the -% stream the ``enclosing counter'' which resets \meta{counter}. +% Auxiliary function for \cs{@@_get_enclosing_counters:n} and +% \cs{@@_get_enclosing_counters_value:n}, and useful on its own standing. +% It is broken in parts to be able to use the expandable mapping functions. +% \cs{@@_counter_reset_by:n} leaves in the stream the ``enclosing counter'' +% which resets \meta{counter}. % \begin{syntax} % \cs{@@_counter_reset_by:n} \Arg{counter} % \end{syntax} @@ -456,6 +478,14 @@ \zref@addprop \ZREF@mainlist { zc@enclval } % \end{macrocode} % +% The \texttt{zc@enclcnt} property is provided for the purpose of easing the +% debugging of counter reset chains, thus it is not added \texttt{main} +% property list by default. +% \begin{macrocode} +\zref@newprop { zc@enclcnt } + { \@@_get_enclosing_counters:e \l_@@_current_counter_tl } +% \end{macrocode} +% % % Another piece of information we need is the page numbering format being used % by \cs{thepage}, so that we know when we can (or not) group a set of page @@ -3878,37 +3908,70 @@ % % \cs{l_@@_counter_resetters_seq} is used by \cs{@@_counter_reset_by:n} to % populate the \texttt{zc@enclval} property, and stores the list of counters -% which are potential ``enclosing counters'' for other counters. This option -% is constructed such that users can only \emph{add} items to the variable. -% There would be little gain and some risk in allowing removal, and the syntax -% of the option would become unnecessarily more complicated. Besides, users -% can already override, for any particular counter, the search done from the -% set in \cs{l_@@_counter_resetters_seq} with the \opt{counterresetby} option. +% which are potential ``enclosing counters'' for other counters. +% +% Note that, as far as \LaTeX{} is concerned, a given counter can be reset by +% \emph{any number of counters}. \cs{counterwithin} just adds a new +% ``within-counter'' for ``counter'' without removing any other existing ones. +% However, the data structure of \pkg{zref-clever} can only account for +% \emph{one} enclosing counter. In a way, this is hard to circumvent, because +% the underlying counter reset behavior works ``top-down'', but when looking +% to a label built from a given counter we need to infer the enclosing +% counters ``bottom-up''. As a result, the reset chain we find is path +% dependent or, more formally, what \cs{@@_counter_reset_by:n} returns depends +% on the order in which it searches the list of +% \cs{l_@@_counter_resetters_seq}, since it stops on the first match. This +% representation mismatch should not be a problem in most cases. But one +% should be aware of the limits it imposes. +% +% Consider the following case: the \cls{book} class sets, by default +% \texttt{figure} and \texttt{table} counters to be reset every +% \texttt{chapter}, \texttt{section} is also reset every \texttt{chapter}, of +% course. Suppose now we say +% \cs{counterwithin}\texttt{\{figure\}\{section\}}. Technically, +% \texttt{figure} is being reset every \texttt{section} and every +% \texttt{chapter}, but since \texttt{section} is also reset every +% \texttt{chapter}, the original ``\texttt{chapter} resets \texttt{figure}'' +% behavior is now redundant. Innocuous, but is still there. Now, suppose we +% want to find which counter is resetting \texttt{figure} using +% \cs{@@_counter_reset_by:n}. If \texttt{chapter} comes before +% \texttt{section} in \cs{l_@@_counter_resetters_seq}, \texttt{chapter} will +% be returned, and that's not what we want. That's the reason +% \opt{counterresetters} initial value goes bottom-up in the sectioning level, +% since we'd expect the nesting of the reset chain to \emph{typically} work +% top-down. +% +% If, despite all this, unexpected results still ensue, users can take care to +% ``clean'' redundant resetting settings with \cs{counterwithout}. Besides, +% users can already override, for any particular counter, the search done from +% the set in \cs{l_@@_counter_resetters_seq} with the \opt{counterresetby} +% option. +% +% For the above reasons, since order matters, the \opt{counterresetters} +% option can only be set by the full list of counters. In other words, users +% wanting to change this should take the initial value as their starting base. +% +% The \texttt{zc@enclcnt} \pkg{zref} property, not included by default in the +% \texttt{main} property list, is provided for the purpose of easing the +% debugging of counter reset chains. So, by adding +% \cs{zref@addprop}\texttt{\{main\}\{zc@enclcnt\}} you can inspect what the +% values in the \texttt{zc@enclval} property correspond to. % % \begin{macrocode} \seq_new:N \l_@@_counter_resetters_seq \keys_define:nn { zref-clever/label } { counterresetters .code:n = - { - \clist_map_inline:nn {#1} - { - \seq_if_in:NnF \l_@@_counter_resetters_seq {##1} - { - \seq_put_right:Nn - \l_@@_counter_resetters_seq {##1} - } - } - } , + { \seq_set_from_clist:Nn \l_@@_counter_resetters_seq {#1} } , counterresetters .initial:n = { - part , - chapter , - section , - subsection , - subsubsection , - paragraph , subparagraph , + paragraph , + subsubsection , + subsection , + section , + chapter , + part , }, counterresetters .value_required:n = true , } @@ -7749,11 +7812,45 @@ % appendix to ``end'', but in this case, of course, we can hook into the % environment instead. % +% For the record, \url{https://tex.stackexchange.com/a/724742} is of +% interest. +% % \begin{macrocode} \@@_compat_module:nn { appendix } { + \newcounter { zc@appendix } + \cs_if_exist:cTF { chapter } + { + \@@_zcsetup:e + { + counterresetby = + { +% \end{macrocode} +% In case someone did something like +% \texttt{\textbackslash{}counterwithin\{chapter\}\{part\}}. Harmless +% otherwise. +% \begin{macrocode} + zc@appendix = \@@_counter_reset_by:n { chapter } , + chapter = zc@appendix , + } , + } + } + { + \cs_if_exist:cT { section } + { + \@@_zcsetup:e + { + counterresetby = + { + zc@appendix = \@@_counter_reset_by:n { section } , + section = zc@appendix , + } , + } + } + } \AddToHook { cmd / appendix / before } { + \setcounter { zc@appendix } { 1 } \@@_zcsetup:n { countertype = @@ -7792,26 +7889,28 @@ { \@@_if_package_loaded:nT { appendix } { - \newcounter { zc@appendix } - \newcounter { zc@save@appendix } - \setcounter { zc@appendix } { 0 } - \setcounter { zc@save@appendix } { 0 } - \cs_if_exist:cTF { chapter } - { - \@@_zcsetup:n - { counterresetby = { chapter = zc@appendix } } - } - { - \cs_if_exist:cT { section } - { - \@@_zcsetup:n - { counterresetby = { section = zc@appendix } } - } - } \AddToHook { env / appendices / begin } { - \stepcounter { zc@save@appendix } - \setcounter { zc@appendix } { \value { zc@save@appendix } } +% \end{macrocode} +% Technically, the \env{appendices} environment can be called multiple times. +% By default, successive calls keep track of numbering and start where the +% previous one left off. Which means just setting the \texttt{zc@appendix} +% counter to 1 is enough for things to work, since the distinction between the +% calls and the sorting of their respective references will depend on the +% underlying sectioning. \pkg{appendix}'s documentation however, provides a +% way to restart from A at each call (by redefining \cs{restoreapp} to do +% nothing). In this case, the references inside different calls to +% \env{appendices} get to be identical in every way, including printed form, +% counter value, enclosing counters, etc., despite being different. We could +% keep track of different calls to \env{appendices} by having the +% \texttt{zc@appendix} counter be ``stepped'' at each call. Doing so would +% mean though that \cs{zcref} would distingish things which are typeset +% identically, granting some arguably weird results. True, the user +% \emph{can} change the printed form for each \env{appendices} call, +% e.g. redefining \cs{thechapter}, but in this case, they are responsible for +% keeping track of this. +% \begin{macrocode} + \setcounter { zc@appendix } { 1 } \@@_zcsetup:n { countertype = @@ -7827,13 +7926,36 @@ } \AddToHook { env / appendices / end } { \setcounter { zc@appendix } { 0 } } - \AddToHook { cmd / appendix / before } + \newcounter { zc@subappendix } + \cs_if_exist:cTF { chapter } { - \stepcounter { zc@save@appendix } - \setcounter { zc@appendix } { \value { zc@save@appendix } } + \@@_zcsetup:e + { + counterresetby = + { + zc@subappendix = \@@_counter_reset_by:n { section } , + section = zc@subappendix , + } , + } + } + { + \@@_zcsetup:e + { + counterresetby = + { + zc@subappendix = \@@_counter_reset_by:n { subsection } , + subsection = zc@subappendix , + } , + } } \AddToHook { env / subappendices / begin } { +% \end{macrocode} +% The \env{subappendices} environment, on the other hand, appears not to +% support multiple calls inside the same chapter/section (the counter is reset +% by default). Either way, the same reasoning applies. +% \begin{macrocode} + \setcounter { zc@subappendix } { 1 } \@@_zcsetup:n { countertype = @@ -7846,6 +7968,8 @@ } , } } + \AddToHook { env / subappendices / end } + { \setcounter { zc@subappendix } { 0 } } \msg_info:nnn { zref-clever } { compat-package } { appendix } } } @@ -7972,10 +8096,13 @@ } % \end{macrocode} % \pkg{amsmath} does use \cs{refstepcounter} for the \texttt{equation} counter -% throughout and does set \cs{@currentcounter} for \cs{tag}s. But we still -% have to manually reset \opt{currentcounter} to default because, since we had -% to manually set \opt{currentcounter} to \texttt{parentequation} in -% \env{subequations}, we also have to manually set it to \env{equation} in +% throughout and supposedly sets \cs{@currentcounter} for \cs{tag}s (I'm not +% sure if it works in all environments, though. Once I tried to remove the +% explicit \opt{currentcounter} setting and several labels to \cs{tag}s ended +% up with type \texttt{section}. But I didn't investigate this further). But +% we still have to manually reset \opt{currentcounter} to default because, +% since we had to manually set \opt{currentcounter} to \texttt{parentequation} +% in \env{subequations}, we also have to manually set it to \env{equation} in % environments which may be used within it. The \env{xxalignat} environment % is not included, because it is ``starred'' by default (i.e.\ unnumbered), % and does not display or accepts labels or tags anyway. The \env{-ed} @@ -8036,6 +8163,18 @@ % doing special handling inside \cs{zcref}, but the feature is very cool, so % it's worth it. % +% Note that this support comes at a little cost. \opt{showonlyrefs} works by +% setting a special \cs{MT@newlabel} for each label referenced with +% \cs{eqref}. Now, \cs{eqref} is a specialized reference command, only used +% to refer to equations, so it sets \cs{MT@newlabel} unconditionally on the +% first run. \cs{zcref}, on the other hand, is a general purpose reference +% command, used to reference labels of any type. But we wouldn't want to set +% \cs{MT@newlabel} indiscriminately for all referenced labels in the document, +% so we need to test for its type. Alas, the label must exist before its type +% can be tested, thus we cannot set \cs{MT@newlabel} on the first run, only on +% the second. In sum, since \cs{eqref} requires 3 runs to work, \cs{zcref} +% needs 4. +% % \begin{macrocode} \bool_new:N \l_@@_mathtools_loaded_bool \@@_compat_module:nn { mathtools } @@ -10397,6 +10536,1264 @@ type = solution , % \end{macrocode} % % +% \subsection{Russian} +% +% Russian language file initially contributed by \contributor{Sergey Slyusarev +% \username{jemmybutton}} (\githubPR{29}). Russian localization in consistent +% with that of \pkg{cleveref}, with the following exceptions: ``equation'' is +% translated as ``уравнение'', rather than ``formula'', ``proposition'' is +% translated as ``предложение'', rather than ``утверждение''; several +% abbreviations are replaced with more common ones, e.g. abbreviated plural of +% ``item'' is ``пп.'', not ``п.п.''. +% +% \begin{macrocode} +%<*package> +\zcDeclareLanguage + [ declension = { n , a , g , d , i , p } , gender = { f , m , n } ] + { russian } +%</package> +% \end{macrocode} +% +% \begin{macrocode} +%<*lang-russian> +% \end{macrocode} +% +% \begin{macrocode} +namesep = {\nobreakspace} , +pairsep = {~и\nobreakspace} , +listsep = {,~} , +lastsep = {~и\nobreakspace} , +tpairsep = {~и\nobreakspace} , +tlistsep = {,~} , +tlastsep = {,~и\nobreakspace} , +notesep = {~} , +rangesep = {~по\nobreakspace} , ++refbounds-rb = {с\nobreakspace,,,} , + +type = book , + gender = f , + case = n , + Name-sg = Книга , + name-sg = книга , + Name-pl = Книги , + name-pl = книги , + case = a , + Name-sg = Книгу , + name-sg = книгу , + Name-pl = Книги , + name-pl = книги , + case = g , + Name-sg = Книги , + name-sg = книги , + Name-pl = Книг , + name-pl = книг , + case = d , + Name-sg = Книге , + name-sg = книге , + Name-pl = Книгам , + name-pl = книгам , + case = i , + Name-sg = Книгой , + name-sg = книгой , + Name-pl = Книгами , + name-pl = книгами , + case = p , + Name-sg = Книге , + name-sg = книге , + Name-pl = Книгах , + name-pl = книгах , + +type = part , + gender = f , + case = n , + Name-sg = Часть , + name-sg = часть , + Name-pl = Части , + name-pl = части , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + case = a , + Name-sg = Часть , + name-sg = часть , + Name-pl = Части , + name-pl = части , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + case = g , + Name-sg = Части , + name-sg = части , + Name-pl = Частей , + name-pl = частей , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + case = d , + Name-sg = Части , + name-sg = части , + Name-pl = Частям , + name-pl = частям , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + case = i , + Name-sg = Частью , + name-sg = частью , + Name-pl = Частями , + name-pl = частями , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + case = p , + Name-sg = Части , + name-sg = части , + Name-pl = Частях , + name-pl = частях , + Name-sg-ab = Ч. , + name-sg-ab = ч. , + Name-pl-ab = Чч. , + name-pl-ab = чч. , + +type = chapter , + gender = f , + case = n , + Name-sg = Глава , + name-sg = глава , + Name-pl = Главы , + name-pl = главы , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + case = a , + Name-sg = Главу , + name-sg = главу , + Name-pl = Главы , + name-pl = главы , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + case = g , + Name-sg = Главы , + name-sg = главы , + Name-pl = Глав , + name-pl = глав , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + case = d , + Name-sg = Главе , + name-sg = главе , + Name-pl = Главам , + name-pl = главам , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + case = i , + Name-sg = Главой , + name-sg = главой , + Name-pl = Главами , + name-pl = главами , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + case = p , + Name-sg = Главе , + name-sg = главе , + Name-pl = Главах , + name-pl = главах , + Name-sg-ab = Гл. , + name-sg-ab = гл. , + Name-pl-ab = Гл. , + name-pl-ab = гл. , + +type = section , + gender = m , + case = n , + Name-sg = Раздел , + name-sg = раздел , + Name-pl = Разделы , + name-pl = разделы , + case = a , + Name-sg = Раздел , + name-sg = раздел , + Name-pl = Разделы , + name-pl = разделы , + case = g , + Name-sg = Раздела , + name-sg = раздела , + Name-pl = Разделов , + name-pl = разделов , + case = d , + Name-sg = Разделу , + name-sg = разделу , + Name-pl = Разделам , + name-pl = разделам , + case = i , + Name-sg = Разделом , + name-sg = разделом , + Name-pl = Разделами , + name-pl = разделами , + case = p , + Name-sg = Разделе , + name-sg = разделе , + Name-pl = Разделах , + name-pl = разделах , + +type = paragraph , + gender = m , + case = n , + Name-sg = Абзац , + name-sg = абзац , + Name-pl = Абзацы , + name-pl = абзацы , + case = a , + Name-sg = Абзац , + name-sg = абзац , + Name-pl = Абзацы , + name-pl = абзацы , + case = g , + Name-sg = Абзаца , + name-sg = абзаца , + Name-pl = Абзацев , + name-pl = абзацев , + case = d , + Name-sg = Абзацу , + name-sg = абзацу , + Name-pl = Абзацам , + name-pl = абзацам , + case = i , + Name-sg = Абзацем , + name-sg = абзацем , + Name-pl = Абзацами , + name-pl = абзацами , + case = p , + Name-sg = Абзаце , + name-sg = абзаце , + Name-pl = Абзацах , + name-pl = абзацах , + +type = appendix , + gender = n , + case = n , + Name-sg = Приложение , + name-sg = приложение , + Name-pl = Приложения , + name-pl = приложения , + case = a , + Name-sg = Приложение , + name-sg = приложение , + Name-pl = Приложения , + name-pl = приложения , + case = g , + Name-sg = Приложения , + name-sg = приложения , + Name-pl = Приложений , + name-pl = приложений , + case = d , + Name-sg = Приложению , + name-sg = приложению , + Name-pl = Приложениям , + name-pl = приложениям , + case = i , + Name-sg = Приложением , + name-sg = приложением , + Name-pl = Приложениями , + name-pl = приложениями , + case = p , + Name-sg = Приложении , + name-sg = приложении , + Name-pl = Приложениях , + name-pl = приложениях , + +type = page , + gender = f , + case = n , + Name-sg = Страница , + name-sg = страница , + Name-pl = Страницы , + name-pl = страницы , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + case = a , + Name-sg = Страницу , + name-sg = страницу , + Name-pl = Страницы , + name-pl = страницы , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + case = g , + Name-sg = Страницы , + name-sg = страницы , + Name-pl = Страниц , + name-pl = страниц , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + case = d , + Name-sg = Странице , + name-sg = странице , + Name-pl = Страницам , + name-pl = страницам , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + case = i , + Name-sg = Страницей , + name-sg = страницей , + Name-pl = Страницами , + name-pl = страницами , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + case = p , + Name-sg = Странице , + name-sg = странице , + Name-pl = Страницах , + name-pl = страницах , + Name-sg-ab = С. , + name-sg-ab = с. , + Name-pl-ab = Сс. , + name-pl-ab = сс. , + rangesep = {\textendash} , + rangetopair = false , + +refbounds-rb = {,,,} , + +type = line , + gender = f , + case = n , + Name-sg = Строка , + name-sg = строка , + Name-pl = Строки , + name-pl = строки , + case = a , + Name-sg = Строку , + name-sg = строку , + Name-pl = Строки , + name-pl = строки , + case = g , + Name-sg = Строки , + name-sg = строки , + Name-pl = Строк , + name-pl = строк , + case = d , + Name-sg = Строке , + name-sg = строке , + Name-pl = Строкам , + name-pl = строкам , + case = i , + Name-sg = Строкой , + name-sg = строкой , + Name-pl = Строками , + name-pl = строками , + case = p , + Name-sg = Строке , + name-sg = строке , + Name-pl = Строках , + name-pl = строках , + +type = figure , + gender = m , + case = n , + Name-sg = Рисунок , + name-sg = рисунок , + Name-pl = Рисунки , + name-pl = рисунки , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + case = a , + Name-sg = Рисунок , + name-sg = рисунок , + Name-pl = Рисунки , + name-pl = рисунки , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + case = g , + Name-sg = Рисунка , + name-sg = рисунка , + Name-pl = Рисунков , + name-pl = рисунков , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + case = d , + Name-sg = Рисунку , + name-sg = рисунку , + Name-pl = Рисункам , + name-pl = рисункам , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + case = i , + Name-sg = Рисунком , + name-sg = рисунком , + Name-pl = Рисунками , + name-pl = рисунками , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + case = p , + Name-sg = Рисунке , + name-sg = рисунке , + Name-pl = Рисунках , + name-pl = рисунках , + Name-sg-ab = Рис. , + name-sg-ab = рис. , + Name-pl-ab = Рис. , + name-pl-ab = рис. , + +type = table , + gender = f , + case = n , + Name-sg = Таблица , + name-sg = таблица , + Name-pl = Таблицы , + name-pl = таблицы , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + case = a , + Name-sg = Таблицу , + name-sg = таблицу , + Name-pl = Таблицы , + name-pl = таблицы , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + case = g , + Name-sg = Таблицы , + name-sg = таблицы , + Name-pl = Таблиц , + name-pl = таблиц , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + case = d , + Name-sg = Таблице , + name-sg = таблице , + Name-pl = Таблицам , + name-pl = таблицам , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + case = i , + Name-sg = Таблицей , + name-sg = таблицей , + Name-pl = Таблицами , + name-pl = таблицами , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + case = p , + Name-sg = Таблице , + name-sg = таблице , + Name-pl = Таблицах , + name-pl = таблицах , + Name-sg-ab = Табл. , + name-sg-ab = табл. , + Name-pl-ab = Табл. , + name-pl-ab = табл. , + +type = item , + gender = m , + case = n , + Name-sg = Пункт , + name-sg = пункт , + Name-pl = Пункты , + name-pl = пункты , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + case = a , + Name-sg = Пункт , + name-sg = пункт , + Name-pl = Пункты , + name-pl = пункты , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + case = g , + Name-sg = Пункта , + name-sg = пункта , + Name-pl = Пунктов , + name-pl = пунктов , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + case = d , + Name-sg = Пункту , + name-sg = пункту , + Name-pl = Пунктам , + name-pl = пунктам , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + case = i , + Name-sg = Пунктом , + name-sg = пунктом , + Name-pl = Пунктами , + name-pl = пунктами , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + case = p , + Name-sg = Пункте , + name-sg = пункте , + Name-pl = Пунктах , + name-pl = пунктах , + Name-sg-ab = П. , + name-sg-ab = п. , + Name-pl-ab = Пп. , + name-pl-ab = пп. , + +type = footnote , + gender = f , + case = n , + Name-sg = Сноска , + name-sg = сноска , + Name-pl = Сноски , + name-pl = сноски , + case = a , + Name-sg = Сноску , + name-sg = сноску , + Name-pl = Сноски , + name-pl = сноски , + case = g , + Name-sg = Сноски , + name-sg = сноски , + Name-pl = Сносок , + name-pl = сносок , + case = d , + Name-sg = Сноске , + name-sg = сноске , + Name-pl = Сноскам , + name-pl = сноскам , + case = i , + Name-sg = Сноской , + name-sg = сноской , + Name-pl = Сносками , + name-pl = сносками , + case = p , + Name-sg = Сноске , + name-sg = сноске , + Name-pl = Сносках , + name-pl = сносках , + +type = endnote , + gender = f , + case = n , + Name-sg = Сноска , + name-sg = сноска , + Name-pl = Сноски , + name-pl = сноски , + case = a , + Name-sg = Сноску , + name-sg = сноску , + Name-pl = Сноски , + name-pl = сноски , + case = g , + Name-sg = Сноски , + name-sg = сноски , + Name-pl = Сносок , + name-pl = сносок , + case = d , + Name-sg = Сноске , + name-sg = сноске , + Name-pl = Сноскам , + name-pl = сноскам , + case = i , + Name-sg = Сноской , + name-sg = сноской , + Name-pl = Сносками , + name-pl = сносками , + case = p , + Name-sg = Сноске , + name-sg = сноске , + Name-pl = Сносках , + name-pl = сносках , + +type = note , + gender = f , + case = n , + Name-sg = Заметка , + name-sg = заметка , + Name-pl = Заметки , + name-pl = заметки , + case = a , + Name-sg = Заметку , + name-sg = заметку , + Name-pl = Заметки , + name-pl = заметки , + case = g , + Name-sg = Заметки , + name-sg = заметки , + Name-pl = Заметок , + name-pl = заметок , + case = d , + Name-sg = Заметке , + name-sg = заметке , + Name-pl = Заметкам , + name-pl = заметкам , + case = i , + Name-sg = Заметкой , + name-sg = заметкой , + Name-pl = Заметками , + name-pl = заметками , + case = p , + Name-sg = Заметке , + name-sg = заметке , + Name-pl = Заметках , + name-pl = заметках , + +type = equation , + gender = n , + case = n , + Name-sg = Уравнение , + name-sg = уравнение , + Name-pl = Уравнения , + name-pl = уравнения , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + case = a , + Name-sg = Уравнение , + name-sg = уравнение , + Name-pl = Уравнения , + name-pl = уравнения , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + case = g , + Name-sg = Уравнения , + name-sg = уравнения , + Name-pl = Уравнений , + name-pl = уравнений , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + case = d , + Name-sg = Уравнению , + name-sg = уравнению , + Name-pl = Уравнениям , + name-pl = уравнениям , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + case = i , + Name-sg = Уравнением , + name-sg = уравнением , + Name-pl = Уравнениями , + name-pl = уравнениями , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + case = p , + Name-sg = Уравнении , + name-sg = уравнении , + Name-pl = Уравнениях , + name-pl = уравнениях , + Name-sg-ab = Ур. , + name-sg-ab = ур. , + Name-pl-ab = Ур. , + name-pl-ab = ур. , + +refbounds-rb = {с\nobreakspace(,,,)} , + refbounds-first-sg = {,(,),} , + refbounds = {(,,,)} , + +type = theorem , + gender = f , + case = n , + Name-sg = Теорема , + name-sg = теорема , + Name-pl = Теоремы , + name-pl = теоремы , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + case = a , + Name-sg = Теорему , + name-sg = теорему , + Name-pl = Теоремы , + name-pl = теоремы , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + case = g , + Name-sg = Теоремы , + name-sg = теоремы , + Name-pl = Теорем , + name-pl = теорем , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + case = d , + Name-sg = Теореме , + name-sg = теореме , + Name-pl = Теоремам , + name-pl = теоремам , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + case = i , + Name-sg = Теоремой , + name-sg = теоремой , + Name-pl = Теоремами , + name-pl = теоремами , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + case = p , + Name-sg = Теореме , + name-sg = теореме , + Name-pl = Теоремах , + name-pl = теоремах , + Name-sg-ab = Теор. , + name-sg-ab = теор. , + Name-pl-ab = Теор. , + name-pl-ab = теор. , + +type = lemma , + gender = f , + case = n , + Name-sg = Лемма , + name-sg = лемма , + Name-pl = Леммы , + name-pl = леммы , + case = a , + Name-sg = Лемму , + name-sg = лемму , + Name-pl = Леммы , + name-pl = леммы , + case = g , + Name-sg = Леммы , + name-sg = леммы , + Name-pl = Лемм , + name-pl = лемм , + case = d , + Name-sg = Лемме , + name-sg = лемме , + Name-pl = Леммам , + name-pl = леммам , + case = i , + Name-sg = Леммой , + name-sg = леммой , + Name-pl = Леммами , + name-pl = леммами , + case = p , + Name-sg = Лемме , + name-sg = лемме , + Name-pl = Леммах , + name-pl = леммах , + +type = corollary , + gender = m , + case = n , + Name-sg = Вывод , + name-sg = вывод , + Name-pl = Выводы , + name-pl = выводы , + case = a , + Name-sg = Вывод , + name-sg = вывод , + Name-pl = Выводы , + name-pl = выводы , + case = g , + Name-sg = Вывода , + name-sg = вывода , + Name-pl = Выводов , + name-pl = выводов , + case = d , + Name-sg = Выводу , + name-sg = выводу , + Name-pl = Выводам , + name-pl = выводам , + case = i , + Name-sg = Выводом , + name-sg = выводом , + Name-pl = Выводами , + name-pl = выводами , + case = p , + Name-sg = Выводе , + name-sg = выводе , + Name-pl = Выводах , + name-pl = выводах , + +type = proposition , + gender = n , + case = n , + Name-sg = Предложение , + name-sg = предложение , + Name-pl = Предложения , + name-pl = предложения , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + case = a , + Name-sg = Предложение , + name-sg = предложение , + Name-pl = Предложения , + name-pl = предложения , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + case = g , + Name-sg = Предложения , + name-sg = предложения , + Name-pl = Предложений , + name-pl = предложений , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + case = d , + Name-sg = Предложению , + name-sg = предложению , + Name-pl = Предложениям , + name-pl = предложениям , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + case = i , + Name-sg = Предложением , + name-sg = предложением , + Name-pl = Предложениями , + name-pl = предложениями , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + case = p , + Name-sg = Предложении , + name-sg = предложении , + Name-pl = Предложениях , + name-pl = предложениях , + Name-sg-ab = Предл. , + name-sg-ab = предл. , + Name-pl-ab = Предл. , + name-pl-ab = предл. , + +type = definition , + gender = n , + case = n , + Name-sg = Определение , + name-sg = определение , + Name-pl = Определения , + name-pl = определения , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + case = a , + Name-sg = Определение , + name-sg = определение , + Name-pl = Определения , + name-pl = определения , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + case = g , + Name-sg = Определения , + name-sg = определения , + Name-pl = Определений , + name-pl = определений , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + case = d , + Name-sg = Определению , + name-sg = определению , + Name-pl = Определениям , + name-pl = определениям , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + case = i , + Name-sg = Определением , + name-sg = определением , + Name-pl = Определениями , + name-pl = определениями , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + case = p , + Name-sg = Определении , + name-sg = определении , + Name-pl = Определениях , + name-pl = определениях , + Name-sg-ab = Опр. , + name-sg-ab = опр. , + Name-pl-ab = Опр. , + name-pl-ab = опр. , + +type = proof , + gender = n , + case = n , + Name-sg = Доказательство , + name-sg = доказательство , + Name-pl = Доказательства , + name-pl = доказательства , + case = a , + Name-sg = Доказательство , + name-sg = доказательство , + Name-pl = Доказательства , + name-pl = доказательства , + case = g , + Name-sg = Доказательства , + name-sg = доказательства , + Name-pl = Доказательств , + name-pl = доказательств , + case = d , + Name-sg = Доказательству , + name-sg = доказательству , + Name-pl = Доказательствам , + name-pl = доказательствам , + case = i , + Name-sg = Доказательством , + name-sg = доказательством , + Name-pl = Доказательствами , + name-pl = доказательствами , + case = p , + Name-sg = Доказательстве , + name-sg = доказательстве , + Name-pl = Доказательствах , + name-pl = доказательствах , + +type = result , + gender = m , + case = n , + Name-sg = Результат , + name-sg = результат , + Name-pl = Результаты , + name-pl = результаты , + case = a , + Name-sg = Результат , + name-sg = результат , + Name-pl = Результаты , + name-pl = результаты , + case = g , + Name-sg = Результата , + name-sg = результата , + Name-pl = Результатов , + name-pl = результатов , + case = d , + Name-sg = Результату , + name-sg = результату , + Name-pl = Результатам , + name-pl = результатам , + case = i , + Name-sg = Результатом , + name-sg = результатом , + Name-pl = Результатами , + name-pl = результатами , + case = p , + Name-sg = Результате , + name-sg = результате , + Name-pl = Результатах , + name-pl = результатах , + +type = remark , + gender = n , + case = n , + Name-sg = Примечание , + name-sg = примечание , + Name-pl = Примечания , + name-pl = примечания , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + case = a , + Name-sg = Примечание , + name-sg = примечание , + Name-pl = Примечания , + name-pl = примечания , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + case = g , + Name-sg = Примечания , + name-sg = примечания , + Name-pl = Примечаний , + name-pl = примечаний , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + case = d , + Name-sg = Примечанию , + name-sg = примечанию , + Name-pl = Примечаниям , + name-pl = примечаниям , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + case = i , + Name-sg = Примечанием , + name-sg = примечанием , + Name-pl = Примечаниями , + name-pl = примечаниями , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + case = p , + Name-sg = Примечании , + name-sg = примечании , + Name-pl = Примечаниях , + name-pl = примечаниях , + Name-sg-ab = Прим. , + name-sg-ab = прим. , + Name-pl-ab = Прим. , + name-pl-ab = прим. , + +type = example , + gender = m , + case = n , + Name-sg = Пример , + name-sg = пример , + Name-pl = Примеры , + name-pl = примеры , + case = a , + Name-sg = Пример , + name-sg = пример , + Name-pl = Примеры , + name-pl = примеры , + case = g , + Name-sg = Примера , + name-sg = примера , + Name-pl = Примеров , + name-pl = примеров , + case = d , + Name-sg = Примеру , + name-sg = примеру , + Name-pl = Примерам , + name-pl = примерам , + case = i , + Name-sg = Примером , + name-sg = примером , + Name-pl = Примерами , + name-pl = примерами , + case = p , + Name-sg = Примере , + name-sg = примере , + Name-pl = Примерах , + name-pl = примерах , + +type = algorithm , + gender = m , + case = n , + Name-sg = Алгоритм , + name-sg = алгоритм , + Name-pl = Алгоритмы , + name-pl = алгоритмы , + case = a , + Name-sg = Алгоритм , + name-sg = алгоритм , + Name-pl = Алгоритмы , + name-pl = алгоритмы , + case = g , + Name-sg = Алгоритма , + name-sg = алгоритма , + Name-pl = Алгоритмов , + name-pl = алгоритмов , + case = d , + Name-sg = Алгоритму , + name-sg = алгоритму , + Name-pl = Алгоритмам , + name-pl = алгоритмам , + case = i , + Name-sg = Алгоритмом , + name-sg = алгоритмом , + Name-pl = Алгоритмами , + name-pl = алгоритмами , + case = p , + Name-sg = Алгоритме , + name-sg = алгоритме , + Name-pl = Алгоритмах , + name-pl = алгоритмах , + +type = listing , + gender = m , + case = n , + Name-sg = Листинг , + name-sg = листинг , + Name-pl = Листинги , + name-pl = листинги , + case = a , + Name-sg = Листинг , + name-sg = листинг , + Name-pl = Листинги , + name-pl = листинги , + case = g , + Name-sg = Листинга , + name-sg = листинга , + Name-pl = Листингов , + name-pl = листингов , + case = d , + Name-sg = Листингу , + name-sg = листингу , + Name-pl = Листингам , + name-pl = листингам , + case = i , + Name-sg = Листингом , + name-sg = листинглм , + Name-pl = Листингами , + name-pl = листингами , + case = p , + Name-sg = Листинге , + name-sg = листинге , + Name-pl = Листингах , + name-pl = листингах , + +type = exercise , + gender = n , + case = n , + Name-sg = Упражнение , + name-sg = упражнение , + Name-pl = Упражнения , + name-pl = упражнения , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + case = a , + Name-sg = Упражнение , + name-sg = упражнение , + Name-pl = Упражнения , + name-pl = упражнения , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + case = g , + Name-sg = Упражнения , + name-sg = упражнения , + Name-pl = Упражнений , + name-pl = упражнений , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + case = d , + Name-sg = Упражнению , + name-sg = упражнению , + Name-pl = Упражнениям , + name-pl = упражнениям , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + case = i , + Name-sg = Упражнением , + name-sg = упражнением , + Name-pl = Упражнениями , + name-pl = упражнениями , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + case = p , + Name-sg = Упражнении , + name-sg = упражнении , + Name-pl = Упражнениях , + name-pl = упражнениях , + Name-sg-ab = Упр. , + name-sg-ab = упр. , + Name-pl-ab = Упр. , + name-pl-ab = упр. , + +type = solution , + gender = n , + case = n , + Name-sg = Решение , + name-sg = решение , + Name-pl = Решения , + name-pl = решения , + case = a , + Name-sg = Решение , + name-sg = решение , + Name-pl = Решения , + name-pl = решения , + case = g , + Name-sg = Решения , + name-sg = решения , + Name-pl = Решений , + name-pl = решений , + case = d , + Name-sg = Решению , + name-sg = решению , + Name-pl = Решениям , + name-pl = решениям , + case = i , + Name-sg = Решением , + name-sg = решением , + Name-pl = Решениями , + name-pl = решениями , + case = p , + Name-sg = Решении , + name-sg = решении , + Name-pl = Решениях , + name-pl = решениях , +% \end{macrocode} +% +% \begin{macrocode} +%</lang-russian> +% \end{macrocode} +% +% % \PrintIndex % % |