2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Склонение существительных в зависимости от значения числа
Сообщение18.07.2015, 22:43 


13/07/14
257
Используется синтаксис 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 


13/07/14
257
Гугл запрос латех числительные
вывел на 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 


13/07/14
257
Сам спросил, сам ответил.

В преамбуле:
код: [ скачать ] [ спрятать ]
Используется синтаксис 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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group