Russian Qt Forum
Ноябрь 23, 2024, 06:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: BibMake - генератор библиографических списков  (Прочитано 18295 раз)
_Vitaliy_
Гость
« Ответ #15 : Июнь 23, 2013, 21:19 »

Цитировать
Если есть какие-либо идеи или замечания - welcome)
На мой взгляд необходимо отталкиваться от нормативной базы (ГОСТ, ДСТУ и тд)
На вскидку, по ДСТУ, оформление одного автора, двух, трех и более отличаются друг от друга, также как и ссылка на автореферат, статью, диссертацию, монографию и тд. и таких "шаблонов" более десятка, поэтому логичнее всего оттолкнуться от этого.
   
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #16 : Июнь 23, 2013, 22:37 »

Цитировать
Если есть какие-либо идеи или замечания - welcome)
На мой взгляд необходимо отталкиваться от нормативной базы (ГОСТ, ДСТУ и тд)
На вскидку, по ДСТУ, оформление одного автора, двух, трех и более отличаются друг от друга, также как и ссылка на автореферат, статью, диссертацию, монографию и тд. и таких "шаблонов" более десятка, поэтому логичнее всего оттолкнуться от этого.
   

Так идея файла шаблонов как раз и заключается в том, чтобы конечный пользователь сам мог быстро составить свой шаблон в зависимости от ГОСТов, ДСТУстов или других требований к оформлению литературы.
Да, список доступных типов ссылок не маленький: (article, book, booklet, conference, inbook и т.д.). Для каждого типа ссылки будет задан свой шаблон.

Но проблема, как вы правильно заметили, заключается именно в том, что оформление списка авторов может зависеть от их числа, от типа публикации и т.д.. Взять хотя бы ГОСТ 2003 года, (от которого все плюются) и который попортил мне не мало крови, когда диссер писал..



     
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
_Vitaliy_
Гость
« Ответ #17 : Июнь 24, 2013, 09:17 »

Сам сейчас кандидатский "опус" пишу, поэтому это знакомо...
По моим представлениям должно выглядеть следующим образом (проба сделать мультиславянский  Шокированный ):
1. Выбор нормативного источника (Россия - ГОСТ, Украина - ДСТУ, Беларусь - ХЗ (просто не знаю)). 
2. Выбор типа публикации (учебник, монография, книга, ссылка на электронный ресурс и тд) -- после этого пользователю должен быть предоставлен шаблон.
3. Заполнение шаблона.
4. Вуаля.

З.Ы. Как по мне то полезно будет еще реализовать возможность составления "временного перечня литературы" по разделам.
Поясню. В процессе редактирования (вычитывания, переработки) некоторого раздела может появится необходимость, например добавить ссылку, и предыдущий перечень может "поплыть" по нумерации.
З.З.Ы. Или сразу реализовывать перечень по разделам, а в конце его объединять.
Но это просто рассуждения. 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #18 : Июнь 24, 2013, 12:24 »

не совсем понял как в латехе/бибтехе может что-то «поплыть» — нумерация же автоматически обновляется
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #19 : Июнь 24, 2013, 21:35 »

не совсем понял как в латехе/бибтехе может что-то «поплыть» — нумерация же автоматически обновляется
Да, если вы bibtex используете.
Но если список литературы в ручную оформляется (в самом tex файле) то нумерация ссылок в тексте будет определяться той последовательностью, которой они (ссылки) идут в секции
\begin{thebibliography}
\bibitem{tag1} ...
\bibitem{tag2} ...
...
\end{thebibliography}
И вот если после правки текста, ссылки были выкинуты, какие то новые добавлены, у каких то порядок в самом тексте изменился, то придётся в соответствии с текстом, их руками переставлять/дописывать/убирать и в самом списке литературы.. Грустный
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #20 : Июль 01, 2013, 21:05 »

Опишу вкратце структуру ядра.

1) tag_extractor - класс, извлекающий из tex файлов все тэги на библиографические ссылки (\cite{tag1, tag2, tag3,  ..}) в том порядке в котором они появляются тексте. При этом tag_extractor содержит лишь  уникальные (неповторяющиеся) тэки.
пример использования:
Код
C++ (Qt)
core::tag_extractor tags;
if (tags.load_tex("text.tex")) {
   int i = 0;
   for (auto tag : tags) {
       std::cout << ++i << " " << tag << std::endl;
   }
}
 

2) класс bib_entry - содержит информацию по конкретной библиографической записи.

3) bib_parser - парсер для формата bib файлов (библиографической базы). С поддержкой перекрёстных ссылок (crossref). Пример использования:
Код
C++ (Qt)
core::bib_parser parser("bibliography.bib");
if (parser.is_load()) {
   core::bib_entry entry;
   if (parser.find_bib_entry("tag", entry)) {
       for (auto field : entry) {
           std::cout << field.first << " = " << field.second << std::endl;
       }
   }
}
 

4) authors - на основе bib-формата списка авторов принятого в bibtexe формирует список всех авторов. Т.е. фактически тоже является парсером. Пример использования:
Код
C++ (Qt)
core::authors authors("Abrikosov, A. A. and  Gorkov, L. P.");
for (auto author : authors) {
   std::cout << author.family_name() << " " << author.first_name_initial() << ".";
   for (auto mn : author.middle_names_initials()) {
       std::cout << mn << "."; // middle_names - может быть несколько.
   }    
}
 
   

5) Базовый класс для  работы с логами

6) Интерпритатор шаблонов (здесь всёже придётся писать мини язык, поскольку без конструкций условного выбора, похоже не обойтись)

7) Менеджер библиографических ссылок - фактически контейнер для bib_entry, но с возможностью сортирования их по заданному критерию + ещё некоторых плюшек.
 
 

 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.191 секунд. Запросов: 22.