2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Склонение существительных в зависимости от значения числа
Сообщение18.07.2015, 22:43 
Используется синтаксис LaTeX
%%% Счётчики %%%
\usepackage[figure,table]{totalcount}               % Счётчик рисунков и таблиц
\usepackage{totcount}                               % Пакет создания счётчиков на основе последнего номера подсчитываемого элемента (может требовать дважды компилировать документ)
\usepackage{totpages}                               % Счётчик страниц, совместимый с hyperref (ссылается на номер последней страницы). Желательно ставить последним пакетом в преамбуле

\newtotcounter{citenum}
\def\oldcite{}
\let\oldcite=\bibcite
\def\bibcite{\stepcounter{citenum}\oldcite}
 

Используется синтаксис LaTeX
составляет  \ref*{TotPages}~страницу с~\totalfigures{}~рисунками и~\totaltables{}~таблицами. Список литературы содержит \total{citenum}~наименований.
 

Цитата:
составляет 30 страницу с 3 рисунками и 6 таблицами. Список литературы содержит 32 наименований.


Есть ли где какой-нибудь ЛаТеХ-код, а лучше пакет, который бы правил окончания существительных, в зависимости от задаваемого числа (предшествующего)?

 
 
 
 Re: Склонение существительных в зависимости от значения числа
Сообщение19.07.2015, 18:43 
Гугл запрос латех числительные
вывел на http://www.linux.org.ru/forum/general/6993203#comment-6994589
с кодом

код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\def\formbytotal#1#2#3#4#5{%
    \newcount\@c
    \@c\totvalue{#1}\relax
    \newcount\@last
    \newcount\@pnul
    \@last\@c\relax
    \divide\@last 10
    \@pnul\@last\relax
    \divide\@pnul 10
    \multiply\@pnul-10
    \advance\@pnul\@last
    \multiply\@last-10
    \advance\@last\@c
    \total{#1}~#2%
    \ifnum\@pnul=1#5\else%
        \ifcase\@last#5\or#3\or#4\or#4\or#4\else#5\fi
    \fi
}


и примером применения:
Используется синтаксис LaTeX
работа изложена на~\formbytotal{page}{страниц}{е}{ах}{ах}, содержит \formbytotal{table}{таблиц}{у}{ы}{}, \formbytotal{figure}{рисун}{ок}{а}{ков}
 


Теперь бы понять, как он работает и как его переделать под имеющиеся счетчики из разных пакетов (да и totcount'овский счетчик один-в-один подставить не удалось).

 
 
 
 Re: Склонение существительных в зависимости от значения числа
Сообщение19.07.2015, 20:38 
Сам спросил, сам ответил.

В преамбуле:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
%%http://www.linux.org.ru/forum/general/6993203#comment-6994589 (используется totcount)
\makeatletter
\def\formbytotal#1#2#3#4#5{%
    \newcount\@c
    \@c\totvalue{#1}\relax
    \newcount\@last
    \newcount\@pnul
    \@last\@c\relax
    \divide\@last 10
    \@pnul\@last\relax
    \divide\@pnul 10
    \multiply\@pnul-10
    \advance\@pnul\@last
    \multiply\@last-10
    \advance\@last\@c
    \total{#1}~#2%
    \ifnum\@pnul=1#5\else%
    \ifcase\@last#5\or#3\or#4\or#4\or#4\else#5\fi
    \fi
}
\makeatother
 


В тексте:
Используется синтаксис LaTeX
%% регистрируем счётчики в системе totcounter
\regtotcounter{totalcount@figure}
\regtotcounter{totalcount@table}       % Если поставить в преамбуле то ошибка в числе таблиц
\regtotcounter{TotPages}               % Если поставить в преамбуле то ошибка в числе страниц

составляет \formbytotal{TotPages}{страниц}{у}{ы}{}
с~\formbytotal{totalcount@figure}{рисунк}{ом}{ами}{ами}
и~\formbytotal{totalcount@table}{таблиц}{ей}{ами}{ами}. Список литературы содержит  
\formbytotal{citenum}{наименован}{ие}{ия}{ий}.
 


Результат:
Цитата:
составляет 27 страниц с 3 рисунками и 5 таблицами. Список литературы содержит 32 наименования.


Разве что кто-то объяснит как код функции работает (комментариями код снабдит) ;)

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group