summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/zref-clever/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.pdfbin1217642 -> 880835 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.tex5
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-doc.pdfbin344167 -> 227507 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-doc.tex38
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.dtx1265
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.ins1
-rw-r--r--macros/luatex/generic/luamplib/NEWS6
-rw-r--r--macros/luatex/generic/luamplib/luamplib.dtx353
-rw-r--r--macros/luatex/generic/luamplib/luamplib.pdfbin184266 -> 196079 bytes
-rw-r--r--macros/luatex/generic/luamplib/test-luamplib-latex.tex7
-rw-r--r--macros/luatex/generic/luamplib/test-luamplib-plain.tex7
12 files changed, 1659 insertions, 31 deletions
diff --git a/macros/latex/contrib/zref-clever/CHANGELOG.md b/macros/latex/contrib/zref-clever/CHANGELOG.md
index 89c3c1414c..3cf6c73b25 100644
--- a/macros/latex/contrib/zref-clever/CHANGELOG.md
+++ b/macros/latex/contrib/zref-clever/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.4.4...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.4.5...HEAD)
+
+## [v0.4.5](https://github.com/gusbrs/zref-clever/compare/v0.4.4...v0.4.5) (2024-05-20)
+
+### Added
+- Provided Russian language file (see PR
+ [#29](https://github.com/gusbrs/zref-clever/pull/29)).
## [v0.4.4](https://github.com/gusbrs/zref-clever/compare/v0.4.3...v0.4.4) (2024-03-14)
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.pdf b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
index 4dd6a24efc..09b441eeb1 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.tex b/macros/latex/contrib/zref-clever/zref-clever-code.tex
index 8aebe70d6f..9be1e8f18b 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.tex
@@ -41,6 +41,11 @@
\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}
diff --git a/macros/latex/contrib/zref-clever/zref-clever-doc.pdf b/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
index 9973f6d546..5594a06fb3 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever-doc.tex b/macros/latex/contrib/zref-clever/zref-clever-doc.tex
index 744732ade0..e088c49915 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-doc.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever-doc.tex
@@ -41,6 +41,11 @@
\documentclass{l3doc}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Pagella}
+\setsansfont{TeX Gyre Heros}[Scale=MatchLowercase]
+\setmonofont{inconsolata}[Scale=MatchLowercase]
+
% The package itself *must* be loaded so that \GetFileInfo can pick up date
% and version data. Naturally, we also use it.
\usepackage{zref-clever}
@@ -48,13 +53,6 @@
\usepackage{zref-check}
\usepackage{zref-titleref}
-\usepackage[T1]{fontenc}
-
-\usepackage[sc]{mathpazo}
-\linespread{1.05}
-\usepackage[scale=.88]{tgheros} % sans
-\usepackage[varqu,scaled=1.03]{inconsolata} % tt
-
\usepackage{listings}
\usepackage{microtype}
@@ -1414,7 +1412,7 @@ indeed required, without users having to worry about it at all.
& UKenglish \\
& USenglish \\
french & acadian \\
- & \\
+ spanish & \\
\bottomrule
\end{tabular}
\quad
@@ -1431,7 +1429,7 @@ indeed required, without users having to worry about it at all.
portuguese & brazilian \\
& brazil \\
& portuges \\
- spanish & \\
+ russian & \\
\bottomrule
\end{tabular}
\caption{Declared languages and aliases}
@@ -1480,13 +1478,14 @@ in effect for the languages declared by \pkg{zref-clever}.
\toprule
Language & declension & gender & allcaps \\
\midrule
- dutch & -- & f,m,n & -- \\
- english & -- & -- & -- \\
- french & -- & f,m & -- \\
- german & N,A,D,G & f,m,n & yes \\
- italian & -- & f,m & -- \\
- portuguese & -- & f,m & -- \\
- spanish & -- & f,m & -- \\
+ dutch & -- & f,m,n & -- \\
+ english & -- & -- & -- \\
+ french & -- & f,m & -- \\
+ german & N,A,D,G & f,m,n & yes \\
+ italian & -- & f,m & -- \\
+ portuguese & -- & f,m & -- \\
+ spanish & -- & f,m & -- \\
+ russian & n,a,g,d,i,p & f,m,n & -- \\
\bottomrule
\end{tabular}
\caption{Options for declared languages}
@@ -2641,6 +2640,7 @@ were generously provided by (in chronological order):
% 2023-05-11: https://github.com/T-F-S/tcolorbox/issues/230
% 2023-11-09: https://github.com/gusbrs/zref-clever/issues/20
% 2024-01-20: https://github.com/gusbrs/zref-clever/pull/25
+ % 2024-05-04: https://github.com/gusbrs/zref-clever/pull/27
and Lars Madsen.
% 2023-07-24: https://chat.stackexchange.com/transcript/message/64039717#64039717
% and following discussion.
@@ -2661,8 +2661,12 @@ The package's language files have been provided or improved thanks to:
% 2022-01-09: https://github.com/gusbrs/zref-clever/pull/5
% 2022-12-27: https://github.com/gusbrs/zref-clever/pull/12
% 2022-12-27: https://github.com/gusbrs/zref-clever/pull/13
- and Matteo Ferrigato (Italian). % 'matteo339'
+ Matteo Ferrigato (Italian), % 'matteo339'
% 2022-12-12: https://github.com/gusbrs/zref-clever/issues/11
+ and Sergey Slyusarev (Russian). % 'jemmybutton'
+ % 2024-05-18: https://github.com/gusbrs/zref-clever/issues/28
+ % 2024-05-19: https://github.com/gusbrs/zref-clever/pull/29
+ % 2024-05-20: https://github.com/gusbrs/zref-clever/pull/30
If I have inadvertently left anyone off the list I apologize, and please let
me know, so that I can correct the oversight.
diff --git a/macros/latex/contrib/zref-clever/zref-clever.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx
index 5767e6ab4f..9c1d73a5a2 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-05-20} {0.4.5}
{Clever LaTeX cross-references based on zref}
% \end{macrocode}
%
@@ -10397,6 +10402,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
%
%
diff --git a/macros/latex/contrib/zref-clever/zref-clever.ins b/macros/latex/contrib/zref-clever/zref-clever.ins
index 17e4599190..0aefb6ce73 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.ins
+++ b/macros/latex/contrib/zref-clever/zref-clever.ins
@@ -95,5 +95,6 @@ for those people who are interested.
\generate{\file{zref-clever-spanish.lang}{\from{zref-clever.dtx}{lang-spanish}}}
\generate{\file{zref-clever-dutch.lang}{\from{zref-clever.dtx}{lang-dutch}}}
\generate{\file{zref-clever-italian.lang}{\from{zref-clever.dtx}{lang-italian}}}
+\generate{\file{zref-clever-russian.lang}{\from{zref-clever.dtx}{lang-russian}}}
\endbatchfile
diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS
index fdae6fc90c..347f560046 100644
--- a/macros/luatex/generic/luamplib/NEWS
+++ b/macros/luatex/generic/luamplib/NEWS
@@ -1,5 +1,9 @@
History of the luamplib package
+2024/05/21 2.31.0
+ * provide a new metapost operator 'mpliboutlinetext', which mimicks
+ metafun's 'outlinetext'. The syntax is the same as metafun's.
+
2024/05/10 2.30.0
* provide a new metapost operator 'mplibglyph', which returns a metapost
picture containing outline paths of a glyph in opentype, truetype or type1
@@ -8,7 +12,7 @@
mplibglyph 50 of \fontid\font % slot 50 of current font
mplibglyph 50 of "cmr10" % type1 font
- mplibglyph "Q" of "TU/TeXGyrePagella(0)/m/n/10" % TeX fontname
+ mplibglyph "Q" of "TU/TeXGyrePagella(0)/m/n/10" % font csname
mplibglyph "똠" of "NotoSansCJKkr-Regular.otf" % raw filename
mplibglyph "Q" of "Times.ttc(2)" % subfont number
mplibglyph "똠" of "SourceHanSansK-VF.otf[Regular]" % instance name
diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx
index e5b4adbb5e..506b5c019a 100644
--- a/macros/luatex/generic/luamplib/luamplib.dtx
+++ b/macros/luatex/generic/luamplib/luamplib.dtx
@@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luamplib.drv}%
- [2024/05/10 v2.30.0 Interface for using the mplib library]%
+ [2024/05/21 v2.31.0 Interface for using the mplib library]%
\documentclass{ltxdoc}
\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information.
% \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\
% Maintainer: LuaLaTeX Maintainers ---
% Support: \email{lualatex-dev@tug.org}}
-% \date{2024/05/10 v2.30.0}
+% \date{2024/05/21 v2.31.0}
%
% \maketitle
%
@@ -504,7 +504,7 @@ See source file '\inFileName' for licencing and contact information.
% When a type1 font is specified, metapost primitive |glyph| will be called.
% \begin{verbatim}
% mplibglyph 50 of \fontid\font % slot 50 of current font
-% mplibglyph "Q" of "TU/TeXGyrePagella(0)/m/n/10" % TeX fontname
+% mplibglyph "Q" of "TU/TeXGyrePagella(0)/m/n/10" % font csname
% mplibglyph "Q" of "texgyrepagella-regular.otf" % raw filename
% mplibglyph "Q" of "Times.ttc(2)" % subfont number
% mplibglyph "Q" of "SourceHanSansK-VF.otf[Regular]" % instance name
@@ -512,7 +512,7 @@ See source file '\inFileName' for licencing and contact information.
% Both arguments before and after of ``|of|'' can be either a number or a string.
% Number arguments are regarded as a glyph slot (GID) and a font id number, repectively.
% String argument at the left side is regarded as a glyph name in the font or a unicode character.
-% String argument at the right side is regarded as a \TeX\ fontname (without backslash) or
+% String argument at the right side is regarded as a \TeX\ font csname (without backslash) or
% the raw filename of a font. When it is a font filename, a number within parentheses
% after the filename denotes a
% subfont number (starting from zero) of a TTC font; a string within brackets denotes
@@ -549,6 +549,17 @@ See source file '\inFileName' for licencing and contact information.
% \endmpfig
% \end{verbatim}
%
+% \paragraph{\texttt{mpliboutlinetext}}
+% From v2.31, we provide a new metapost operator |mpliboutlinetext|, which mimicks
+% metafun's |outlinetext|. So the syntax is the same as metafun's. See the metafun
+% manual \textsection\,8.7 (|texdoc metafun|). A simple example:
+% \begin{verbatim}
+% draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$")
+% (withcolor \mpcolor{red!50})
+% (withpen pencircle scaled .2 withcolor red)
+% scaled 2 ;
+% \end{verbatim}
+%
% \paragraph{About figure box metrics}
% Notice that, after each figure is processed, macro \cs{MPwidth} stores
% the width value of latest figure; \cs{MPheight}, the height value.
@@ -581,8 +592,8 @@ See source file '\inFileName' for licencing and contact information.
luatexbase.provides_module {
name = "luamplib",
- version = "2.30.0",
- date = "2024/05/10",
+ version = "2.31.0",
+ date = "2024/05/21",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -1394,7 +1405,6 @@ local function colorsplit (res)
return t
end
-local min = math.min
luamplib.gettexcolor = function (str, rgb)
local res = process_color(str):match'"mpliboverridecolor=(.+)"'
if res:find" cs " or res:find"@pdf.obj" then
@@ -1413,7 +1423,7 @@ luamplib.gettexcolor = function (str, rgb)
local t = colorsplit(res)
if #t == 3 or not rgb then return t end
if #t == 4 then
- return { 1 - min(1,t[1]+t[4]), 1 - min(1,t[2]+t[4]), 1 - min(1,t[3]+t[4]) }
+ return { 1 - math.min(1,t[1]+t[4]), 1 - math.min(1,t[2]+t[4]), 1 - math.min(1,t[3]+t[4]) }
end
return { t[1], t[1], t[1] }
end
@@ -1652,11 +1662,12 @@ end
if not table.tofile then require"lualibs-lpeg"; require"lualibs-table"; end
function luamplib.glyph (f, c)
local filename, subfont, instance, kind, shapedata
- local fid = tonumber(f) or font.id(f) -- string: fontname
+ local fid = tonumber(f) or font.id(f)
if fid > 0 then
local fontdata = font.getfont(fid) or font.getcopy(fid)
filename, subfont, kind = fontdata.filename, fontdata.subfont, fontdata.format
instance = fontdata.specification and fontdata.specification.instance
+ filename = filename:gsub("^harfloaded:","")
else
local name
f = f:match"^%s*(.+)%s*$"
@@ -1711,7 +1722,7 @@ function luamplib.glyph (f, c)
if not gid then return mperr"cannot get GID (glyph id)" end
local fac = 1000 / (shapedata.units or 1000)
local t = shapedata.glyphs[gid].segments
- if not t then return mperr"glyph has no contour. Maybe blank space" end
+ if not t then return "image(fill fullcircle scaled 0;)" end
for i,v in ipairs(t) do
if type(v) == "table" then
for ii,vv in ipairs(v) do
@@ -1721,11 +1732,256 @@ function luamplib.glyph (f, c)
end
end
end
+ kind = shapedata.format or kind
return glyphimage(t, kind)
end
% \end{macrocode}
%
+% mpliboutlinetext : based on mkiv's font-mps.lua
+% \begin{macrocode}
+local rulefmt = "mplibpic[%i]:=image(addto currentpicture contour \z
+unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);"
+local outline_horz, outline_vert
+function outline_vert (res, box, curr, xshift, yshift)
+ local b2u = box.dir == "LTL"
+ local dy = (b2u and -(box.depth or 0) or (box.height or 0))/factor
+ local ody = dy
+ while curr do
+ if curr.id == node.id"rule" then
+ local ht, dp = curr.height/factor, curr.depth/factor
+ local hd = ht + dp
+ if hd ~= 0 then
+ local wd = curr.width
+ wd = (wd == -1073741824 and box.width or wd)/factor
+ dy = dy + (b2u and dp or -ht)
+ if wd ~= 0 and curr.subtype == 0 then
+ res[#res+1] = rulefmt:format(#res+1, wd, hd, xshift+wd/2, yshift+dy+(ht-dp)/2)
+ end
+ dy = dy + (b2u and ht or -dp)
+ end
+ elseif curr.id == node.id"glue" then
+ local vwidth = node.effective_glue(curr,box)/factor
+ dy = dy + (b2u and vwidth or 0)
+ if curr.leader then
+ local curr, kind = curr.leader, curr.subtype
+ if curr.id == node.id"rule" then
+ local wd = curr.width/factor
+ if wd ~= 0 then
+ local hd = vwidth
+ local dy = dy - hd
+ if hd ~= 0 and curr.subtype == 0 then
+ res[#res+1] = rulefmt:format(#res+1, wd, hd, xshift+wd/2, yshift+dy+hd/2)
+ end
+ end
+ elseif curr.head then
+ local hd = (curr.height + curr.depth)/factor
+ if hd <= vwidth then
+ local dy = b2u and dy-vwidth or dy
+ local n, iy = 0, 0
+ if kind == 100 or kind == 103 then -- todo: gleaders
+ local ady = abs(ody - dy)
+ local ndy = math.ceil(ady / hd) * hd
+ local diff = ndy - ady
+ n = (vwidth-diff) // hd
+ dy = dy + (b2u and diff or -diff)
+ else
+ n = vwidth // hd
+ if kind == 101 then
+ local side = vwidth % hd / 2
+ dy = dy + (b2u and side or -side)
+ elseif kind == 102 then
+ iy = vwidth % hd / (n+1)
+ dy = dy + (b2u and iy or -iy)
+ end
+ end
+ dy = dy + (b2u and curr.depth or -curr.height)/factor
+ hd = b2u and hd or -hd
+ iy = b2u and iy or -iy
+ local func = curr.id == node.id"hlist" and outline_horz or outline_vert
+ for i=1,n do
+ res = func(res, curr, curr.head, xshift+curr.shift/factor, yshift+dy)
+ dy = dy + hd + iy
+ end
+ end
+ end
+ end
+ dy = dy - (b2u and 0 or vwidth)
+ elseif curr.id == node.id"kern" then
+ dy = dy + curr.kern/factor * (b2u and 1 or -1)
+ elseif curr.id == node.id"vlist" then
+ dy = dy + (b2u and curr.depth or -curr.height)/factor
+ res = outline_vert(res, curr, curr.head, xshift+curr.shift/factor, yshift+dy)
+ dy = dy + (b2u and curr.height or -curr.depth)/factor
+ elseif curr.id == node.id"hlist" then
+ dy = dy + (b2u and curr.depth or -curr.height)/factor
+ res = outline_horz(res, curr, curr.head, xshift+curr.shift/factor, yshift+dy)
+ dy = dy + (b2u and curr.height or -curr.depth)/factor
+ end
+ curr = node.getnext(curr)
+ end
+ return res
+end
+function outline_horz (res, box, curr, xshift, yshift)
+ local r2l = box.dir == "TRT"
+ local dx = r2l and (box.width or 0)/factor or 0
+ local dirs = { { dir = r2l, dx = dx } }
+ local odx = dx
+ while curr do
+ if curr.id == node.id"dir" then
+ local sign, dir = curr.dir:match"(.)(...)"
+ local level, newdir = curr.level, r2l
+ if sign == "+" then
+ local n = node.getnext(curr)
+ while n do
+ if n.id == node.id"dir" and n.level+1 == level then break end
+ n = node.getnext(n)
+ end
+ n = n or node.tail(curr)
+ newdir = dir == "TRT"
+ if r2l ~= newdir then
+ dx = dx + node.rangedimensions(box, curr, n)/factor * (newdir and 1 or -1)
+ end
+ dirs[level] = { dir = r2l, dx = dx }
+ else
+ local level = level + 1
+ newdir = dirs[level].dir
+ if r2l ~= newdir then
+ dx = dirs[level].dx
+ end
+ end
+ r2l = newdir
+ elseif curr.char and curr.font and curr.font > 0 then
+ local ft = font.getfont(curr.font) or font.getcopy(curr.font)
+ local gid = ft.characters[curr.char].index or curr.char
+ local scale = ft.size / factor / 1000
+ local slant = (ft.slant or 0)/1000
+ local extend = (ft.extend or 1000)/1000
+ local squeeze = (ft.squeeze or 1000)/1000
+ local expand = 1 + (curr.expansion_factor or 0)/1000000
+ local xscale = scale * extend * expand
+ local yscale = scale * squeeze
+ dx = dx - (r2l and curr.width/factor*expand or 0)
+ local xpos = dx + xshift + (curr.xoffset or 0)/factor
+ local ypos = yshift + (curr.yoffset or 0)/factor
+ local image
+ if ft.format == "opentype" or ft.format == "truetype" then
+ image = luamplib.glyph(curr.font, gid)
+ else
+ local name, scale = ft.name, 1
+ local vf = font.read_vf(name, ft.size)
+ if vf and vf.characters[gid] then
+ local cmds = vf.characters[gid].commands or {}
+ for _,v in ipairs(cmds) do
+ if v[1] == "char" then
+ gid = v[2]
+ elseif v[1] == "font" and vf.fonts[v[2]] then
+ name = vf.fonts[v[2]].name
+ scale = vf.fonts[v[2]].size / ft.size
+ end
+ end
+ end
+ image = format("glyph %s of %q scaled %f", gid, name, scale)
+ end
+ res[#res+1] = format("mplibpic[%i]:=%s xscaled %f yscaled %f slanted %f shifted (%f,%f);",
+ #res+1, image, xscale, yscale, slant, xpos, ypos)
+ dx = dx + (r2l and 0 or curr.width/factor*expand)
+ elseif curr.id == node.id"disc" then
+ local width = node.dimensions(curr.replace)/factor
+ dx = dx - (r2l and width or 0)
+ res = outline_horz(res, curr, curr.replace, xshift+dx, yshift)
+ dx = dx + (r2l and 0 or width)
+ elseif curr.id == node.id"rule" then
+ local wd = curr.width/factor
+ if wd ~= 0 then
+ local ht, dp = curr.height, curr.depth
+ ht = (ht == -1073741824 and box.height or ht)/factor
+ dp = (dp == -1073741824 and box.depth or dp)/factor
+ local hd = ht + dp
+ dx = dx - (r2l and wd or 0)
+ if hd ~= 0 and curr.subtype == 0 then
+ res[#res+1] = rulefmt:format(#res+1, wd, hd, xshift+dx+wd/2, yshift+(ht-dp)/2)
+ end
+ dx = dx + (r2l and 0 or wd)
+ end
+ elseif curr.id == node.id"glue" then
+ local width = node.effective_glue(curr, box)/factor
+ dx = dx - (r2l and width or 0)
+ if curr.leader then
+ local curr, kind = curr.leader, curr.subtype
+ if curr.id == node.id"rule" then
+ local ht, dp = curr.height/factor, curr.depth/factor
+ local hd = ht + dp
+ if hd ~= 0 then
+ local wd = width
+ if wd ~= 0 and curr.subtype == 0 then
+ res[#res+1] = rulefmt:format(#res+1, wd, hd, xshift+dx+wd/2, yshift+(ht-dp)/2)
+ end
+ end
+ elseif curr.head then
+ local wd = curr.width/factor
+ if wd <= width then
+ local dx = r2l and dx+width or dx
+ local n, ix = 0, 0
+ if kind == 100 or kind == 103 then -- todo: gleaders
+ local adx = abs(dx-odx)
+ local ndx = math.ceil(adx / wd) * wd
+ local diff = ndx - adx
+ n = (width-diff) // wd
+ dx = dx + (r2l and -diff-wd or diff)
+ else
+ n = width // wd
+ if kind == 101 then
+ local side = width % wd /2
+ dx = dx + (r2l and -side-wd or side)
+ elseif kind == 102 then
+ ix = width % wd / (n+1)
+ dx = dx + (r2l and -ix-wd or ix)
+ end
+ end
+ wd = r2l and -wd or wd
+ ix = r2l and -ix or ix
+ local func = curr.id == node.id"hlist" and outline_horz or outline_vert
+ for i=1,n do
+ res = func(res, curr, curr.head, xshift+dx, yshift-curr.shift/factor)
+ dx = dx + wd + ix
+ end
+ end
+ end
+ end
+ dx = dx + (r2l and 0 or width)
+ elseif curr.id == node.id"kern" then
+ dx = dx + curr.kern/factor * (r2l and -1 or 1)
+ elseif curr.id == node.id"math" then
+ dx = dx + curr.surround/factor * (r2l and -1 or 1)
+ elseif curr.id == node.id"vlist" then
+ dx = dx - (r2l and curr.width/factor or 0)
+ res = outline_vert(res, curr, curr.head, xshift+dx, yshift-curr.shift/factor)
+ dx = dx + (r2l and 0 or curr.width/factor)
+ elseif curr.id == node.id"hlist" then
+ dx = dx - (r2l and curr.width/factor or 0)
+ res = outline_horz(res, curr, curr.head, xshift+dx, yshift-curr.shift/factor)
+ dx = dx + (r2l and 0 or curr.width/factor)
+ end
+ curr = node.getnext(curr)
+ end
+ return res
+end
+function luamplib.outlinetext (text)
+ local fmt = process_tex_text(text)
+ local id = tonumber(fmt:match"mplibtexboxid=(%d+):")
+ local box = texgetbox(id)
+ local res = outline_horz({ }, box, box.head, 0, 0)
+ if #res == 0 then res = { "mplibpic[1]:=image(fill fullcircle scaled 0;);" } end
+ local t = { }
+ for i=1, #res do
+ t[#t+1] = format("addto currentpicture also mplibpic[%i];", i)
+ end
+ return tableconcat(res) .. format("mplibpic[0]:=image(%s);", tableconcat(t))
+end
+
+% \end{macrocode}
+%
% Our MetaPost preambles
% \begin{macrocode}
luamplib.preambles = {
@@ -1820,6 +2076,81 @@ def mplibdrawglyph expr g =
endfor
)
enddef;
+def mplib_do_outline_text_set_b (text f) (text d) text r =
+ def mplib_do_outline_options_f = f enddef;
+ def mplib_do_outline_options_d = d enddef;
+ def mplib_do_outline_options_r = r enddef;
+enddef;
+def mplib_do_outline_text_set_f (text f) text r =
+ def mplib_do_outline_options_f = f enddef;
+ def mplib_do_outline_options_r = r enddef;
+enddef;
+def mplib_do_outline_text_set_d (text d) text r =
+ def mplib_do_outline_options_d = d enddef;
+ def mplib_do_outline_options_r = r enddef;
+enddef;
+def mplib_do_outline_text_set_r (text d) (text f) text r =
+ def mplib_do_outline_options_d = d enddef;
+ def mplib_do_outline_options_f = f enddef;
+ def mplib_do_outline_options_r = r enddef;
+enddef;
+def mplib_do_outline_text_set_n text r =
+ def mplib_do_outline_options_r = r enddef;
+enddef;
+def mplib_do_outline_text_set_p = enddef;
+def mplib_fill_outline_text (expr p) =
+ i:=0;
+ for item within p:
+ i:=i+1;
+ addto currentpicture contour pathpart item
+ if i < length p: withpostscript "collect"; fi
+ endfor
+ mplib_do_outline_options_f;
+enddef;
+def mplib_draw_outline_text (expr p) =
+ i:=0;
+ for item within p:
+ i:=i+1;
+ addto currentpicture doublepath pathpart item
+ if i < length p: withpostscript "collect"; fi
+ endfor
+ mplib_do_outline_options_d;
+enddef;
+vardef mpliboutlinetext@# (expr t) text rest =
+ save kind; string kind; kind := str @#;
+ save mplibpic, i; picture mplibpic[]; numeric i;
+ def mplib_do_outline_options_d = enddef;
+ def mplib_do_outline_options_f = enddef;
+ def mplib_do_outline_options_r = enddef;
+ runscript("return luamplib.outlinetext[===["&t&"]===]");
+ image ( addto currentpicture also image (
+ if kind = "f":
+ mplib_do_outline_text_set_f rest;
+ def mplib_do_outline_options_d = withpen pencircle scaled 0 enddef;
+ mplib_fill_outline_text (mplibpic0);
+ elseif kind = "d":
+ mplib_do_outline_text_set_d rest;
+ mplib_draw_outline_text (mplibpic0);
+ elseif kind = "b":
+ mplib_do_outline_text_set_b rest;
+ mplib_fill_outline_text (mplibpic0);
+ mplib_draw_outline_text (mplibpic0);
+ elseif kind = "u":
+ mplib_do_outline_text_set_f rest;
+ mplib_fill_outline_text (mplibpic0);
+ elseif kind = "r":
+ mplib_do_outline_text_set_r rest;
+ mplib_draw_outline_text (mplibpic0);
+ mplib_fill_outline_text (mplibpic0);
+ elseif kind = "p":
+ mplib_do_outline_text_set_p;
+ mplib_draw_outline_text (mplibpic0);
+ else:
+ mplib_do_outline_text_set_n rest;
+ mplib_fill_outline_text (mplibpic0);
+ fi;
+ ) mplib_do_outline_options_r; )
+enddef ;
]],
legacyverbatimtex = [[
def specialVerbatimTeX (text t) = runscript("luamplibprefig{"&t&"}") enddef;
@@ -2776,7 +3107,7 @@ end
\else
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2024/05/10 v2.30.0 mplib package for LuaTeX]
+ [2024/05/21 v2.31.0 mplib package for LuaTeX]
\ifx\newluafunction\@undefined
\input ltluatex
\fi
diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf
index b6f57158f7..5ffccd841a 100644
--- a/macros/luatex/generic/luamplib/luamplib.pdf
+++ b/macros/luatex/generic/luamplib/luamplib.pdf
Binary files differ
diff --git a/macros/luatex/generic/luamplib/test-luamplib-latex.tex b/macros/luatex/generic/luamplib/test-luamplib-latex.tex
index faa516f25f..043c34adbb 100644
--- a/macros/luatex/generic/luamplib/test-luamplib-latex.tex
+++ b/macros/luatex/generic/luamplib/test-luamplib-latex.tex
@@ -225,6 +225,13 @@ endfor
\everymplib[@mpfig]{ drawoptions(withcolor mplibrgbtexcolor "olive"); }%
\mpfig* input boxes \endmpfig
\mpfig circleit.a(btex\tracingcommands0 Box 1 etex); drawboxed(a); \endmpfig
+\def\mpfiginstancename{mympfig}%
+\mpfig
+draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$")
+ (withcolor .6[red,white])
+ (withpen pencircle scaled .2 withcolor red)
+ scaled 4 ;
+\endmpfig
\tracingcommands0
\vskip 2\baselineskip
diff --git a/macros/luatex/generic/luamplib/test-luamplib-plain.tex b/macros/luatex/generic/luamplib/test-luamplib-plain.tex
index 896c7f0a95..63bffc5ad5 100644
--- a/macros/luatex/generic/luamplib/test-luamplib-plain.tex
+++ b/macros/luatex/generic/luamplib/test-luamplib-plain.tex
@@ -218,6 +218,13 @@ endfor
\everymplib[@mpfig]{ drawoptions(withcolor mplibrgbtexcolor"orange"); }%
\mpfig* input boxes \endmpfig
\mpfig circleit.a(btex\tracingcommands0 Box 1 etex); drawboxed(a); \endmpfig
+\def\mpfiginstancename{mympfig}%
+\mpfig
+draw mpliboutlinetext.b ("$\sqrt{2+\alpha}$")
+ (withcolor .6[red,white])
+ (withpen pencircle scaled .2 withcolor red)
+ scaled 4 ;
+\endmpfig
\tracingcommands0
\vskip 2\baselineskip