Название: BibMake - генератор библиографических списков Отправлено: m_ax от Июнь 23, 2013, 14:30 Мотивация
При использовании LaTeX'а http://ru.wikipedia.org/wiki/LaTeX (http://ru.wikipedia.org/wiki/LaTeX) для набора документов (статей, книг и т.п.) которые должны включать список цитированной литературы (References), часто сталкиваюсь с проблемой его оформления в соответствии с правилами или требованиями его оформления. Т.е. это просто утомительно, особенно когда ссылок порядка ста. Конечно, BibTeX http://ru.wikipedia.org/wiki/BibTeX (http://ru.wikipedia.org/wiki/BibTeX) легко решает эту проблему, при условии что у вас есть соответствующий .bst файл с инструкциями (на Фортоподобном языке) которые определяют стиль оформления ссылок. На основе .bst файла и библиографической базы (bib-файлы специального текстового формата для хранения списков библиографических записей) программа bibtex создаёт bbl файл со списком литературы, который в свою очередь подхватывает latex. Итак, проблема с оформлением библиографии возникает когда у нас нет соответствующего .bst файла. Раньше эту проблему я решал одним из трёх способов: 1) Вообще не использовать BiBTeX и набирать список литературы вручную (в соответствии с правилами) в самом LaTeX файле. Это приемлемо, когда ссылок немного, но всё равно это утомительно.. Если ещё учесть, что после правок самой статьи, порядок ссылок в тексте может измениться и тогда придётся переставлять их и в самой библиографии. 2) Использовать близкий по стилю .bst файл и корректировать уже сгенерированный bbl файл. Это занятие тоже утомительное) 3) Взять близкий по стилю .bst файл и подправить его. И может быть, после продолжительных ночных бдений, что-нибудь и получится) Я, конечно, ничего не имею против форта http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) (http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)) но подходить к этому третьему пункту нужно с очищенным (от плюсов) сознанием) В связи с вышесказанным, назрела необходимость написать свою альтернативу BiBTeX'а - BibMake. Идеология BibMake при этом будет полностью соответствовать BibTeX'у, только вместо устрашающих .bst файлов будет использован свой формат шаблона оформления. Достаточно прозрачный и интуитивно понятный любому, кто владеет LaTeX'ом на начальном уровне. Таким, чтобы этот шаблон оформления можно было легко изменить в соответствии с правилами (или ГОСТ'ами). О архитектуре BibMake включает в себя ядро (core) предоставляющее своё API и саму утилиту bibmake. Сейчас работаю над самим ядром. Большая часть уже реализована. Настало время разработать формат для шаблона. Например этот аналог bst файла может выглядеть так: Код где будут определены зарезервированные слова, и на их места будет вставлены данные из bib файла (библиографической базы). На основе этого шаблона будет получен bbl файл. Например такой (с ссылкой на статью): Код Т.е. все ссылки на статьи оформляются согласно шаблону article, ссылки на книгу (book), согласно шаблону book и т.д. Вобщем, сейчас разрабатываю этот формат. Есть правда пока некоторые сложности.. но.. Если есть какие-либо идеи или замечания - welcome) Единственное, синтаксис шаблона должен быть наиболее близок к синтаксису LaTeXа и быть наиболее интуитивно понятным) Спасибо за внимание) В ближайшее время выложу исходники. Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 14:59 Несколько лучше чем предыдущая попытка пополнения кладовой, но все равно - мелкотемье, мелкочленье.
Название: Re: BibMake - генератор библиографических списков Отправлено: Old от Июнь 23, 2013, 15:09 Несколько лучше чем предыдущая попытка пополнения кладовой, но все равно - мелкотемье, мелкочленье. Вы знаете, уже мало что может сравниться с эпохальным "Переходничком (http://www.prog.org.ru/topic_14795_0.html)".После этого, все остальное в программировании "мелкотемье, мелкочленье". :) Уж простите, не сдержался. Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 15:35 Вы знаете, уже мало что может сравниться с эпохальным "Переходничком (http://www.prog.org.ru/topic_14795_0.html)". Да, неплохая была темка :) Обычно достаточно не упомянуть известные термины, не сослаться на паттерн - и "начитавшегося" можно брать тепленьким.После этого, все остальное в программировании "мелкотемье, мелкочленье". :) Кстати у меня есть задача несколько похожая на ту что у m_ax. Вроде и просто, но как ее сделать - ясно не предствляю, а поскольку пользователи не очень настаивают - давно и лежит несделанная. - приложение делает картинки, может одну, может серию. Было бы желательно дать возможность "подписывать" их, т.е. писать поверх текст заданный пользователем. Напр внизу картинки Цитировать кадр 15, время 1:07, всего 15:06 Сделал Я! Но в отличие от задачи m_ax никаких файлов создавать нельзя, надо как-то это впихнуть в UI. И что-то я затрудняюсь с организацией и дызайном. Есть предложения?Название: Re: BibMake - генератор библиографических списков Отправлено: Old от Июнь 23, 2013, 15:46 Кстати у меня есть задача несколько похожая на ту что у m_ax. Для кого это кстати, для m_ax? :)Что-то мне подсказывает, что он не отнесет вашу задачу к "крупнотемью и крупночленью". Как всегда постановка задачи на высоте... Вы ее не можете решить, только потому, что вы ее не можете сформулировать даже самому себе. Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 15:57 Для кого это кстати, для m_ax? :) Так я и сам ее к этому не отношу :)Что-то мне подсказывает, что он не отнесет вашу задачу к "крупнотемью и крупночленью". Как всегда постановка задачи на высоте... Вы ее не можете решить, только потому, что вы ее не можете сформулировать даже самому себе. Зачем "уличать" меня если я прямо говорю что не могу сфломулировать, т.е. не вижу как это сделать элегантно, удобно для юзверя. Вот Вы и объясните/покажите как, поразите широтой размаха, концептуальностью и.т.п. :)Название: Re: BibMake - генератор библиографических списков Отправлено: Old от Июнь 23, 2013, 16:03 Зачем "уличать" меня если я прямо говорю что не могу сфломулировать, т.е. не вижу как это сделать элегантно, удобно для юзверя. Что сделать? Вы так и не написали. :)Для текущей постановки: на главное окно программы нужно добавить QLineEdit, в который пользователь будет набирать строку, которая будет добавляться на все картинки. Название: Re: BibMake - генератор библиографических списков Отправлено: m_ax от Июнь 23, 2013, 16:03 Да, неплохая была темка :) Обычно достаточно не упомянуть известные термины, не сослаться на паттерн - и "начитавшегося" можно брать тепленьким. Вы это серьёзно? Т.е. свой, доморощенный костыль для вас всё равно будет всех милее) О чём тут можно говорить?Цитировать Кстати у меня есть задача несколько похожая на ту что у m_ax. Ой, чувствую, она совсем не похожая.. Название: Re: BibMake - генератор библиографических списков Отправлено: Old от Июнь 23, 2013, 16:07 Вы это серьёзно? Т.е. свой, доморощенный костыль для вас всё равно будет всех милее) О чём тут можно говорить? "Начитавшийся" просто не в состоянии понять всю глубину этого решения... :) Ой, чувствую, она совсем не похожая.. А я пока ничего не чувствую. :)Но думаю, что задача про то, как для пользователя удобней задавать шаблоны. Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 16:17 Вы это серьёзно? Т.е. свой, доморощенный костыль для вас всё равно будет всех милее) О чём тут можно говорить? Ну напр о том как человек превращается в жалкого копировальщика чужих решений - но Вам ведь этот разговор не понравится :)на главное окно программы нужно добавить QLineEdit, в который пользователь будет набирать строку, которая будет добавляться на все картинки. Там "откуда ни возьмись" появляется вагон опций- размеры отступов - выравнивание слева/справа - рамка для текста, ее заливка (часто полупрозрачная) - неск строк, вверху/внизу - размер шрифта - как-то намекнуть (что ли) как вводить имена переменных и.т.д. В общем "пришел за памперсами, купил подводную лодку". Не хочется начинать "большую возню" для скромного ф-ционала Название: Re: BibMake - генератор библиографических списков Отправлено: m_ax от Июнь 23, 2013, 16:27 Вы это серьёзно? Т.е. свой, доморощенный костыль для вас всё равно будет всех милее) О чём тут можно говорить? "Начитавшийся" просто не в состоянии понять всю глубину этого решения... :) Название: Re: BibMake - генератор библиографических списков Отправлено: Old от Июнь 23, 2013, 16:31 Ну напр о том как человек превращается в жалкого копировальщика чужих решений - но Вам ведь этот разговор не понравится :) Про какие решения вы говорите? Что вы подразумеваете под "решением"?Там "откуда ни возьмись" появляется вагон опций Да вы что? Тремя сообщениями выше про про них забыли? :)Не хочется начинать "большую возню" для скромного ф-ционала Тогда лучше не начинать. Оно когда еще и не хочется, вообще плохо будет получаться.Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 16:47 Да вы что? Тремя сообщениями выше про про них забыли? :) Ну а зачем сразу лезть со всеми подробностями? Лучше посмотреть как другие умеют работать с постановкой задачи.Тогда лучше не начинать. Оно когда еще и не хочется, вообще плохо будет получаться. Не то чтобы "не хочется", фича полезная, вот только не вижу как сделать компактно, поэтому и не начинаюНазвание: Re: BibMake - генератор библиографических списков Отправлено: _OLEGator_ от Июнь 23, 2013, 19:57 Igors, честно говоря ты уже замахал. В каждую тему лезешь со своими нравоучениями и жизненной позицией. Я уже не могу читать темы, где ты оставляешь свой неповторимый след, а точнее не читаю.
Может тебе отдельный форум создать? Потому что ты уже во все ветки лезешь. Название: Re: BibMake - генератор библиографических списков Отправлено: Igors от Июнь 23, 2013, 20:16 Igors, честно говоря ты уже замахал. В каждую тему лезешь со своими нравоучениями и жизненной позицией. Я уже не могу читать темы, где ты оставляешь свой неповторимый след, а точнее не читаю. Судя хоть по этой теме - единственный поучающий здесь Вы, причем довольно хамовитый :)Может тебе отдельный форум создать? Потому что ты уже во все ветки лезешь. Название: Re: BibMake - генератор библиографических списков Отправлено: _Vitaliy_ от Июнь 23, 2013, 21:19 Цитировать Если есть какие-либо идеи или замечания - welcome) На мой взгляд необходимо отталкиваться от нормативной базы (ГОСТ, ДСТУ и тд)На вскидку, по ДСТУ, оформление одного автора, двух, трех и более отличаются друг от друга, также как и ссылка на автореферат, статью, диссертацию, монографию и тд. и таких "шаблонов" более десятка, поэтому логичнее всего оттолкнуться от этого. Название: Re: BibMake - генератор библиографических списков Отправлено: m_ax от Июнь 23, 2013, 22:37 Цитировать Если есть какие-либо идеи или замечания - welcome) На мой взгляд необходимо отталкиваться от нормативной базы (ГОСТ, ДСТУ и тд)На вскидку, по ДСТУ, оформление одного автора, двух, трех и более отличаются друг от друга, также как и ссылка на автореферат, статью, диссертацию, монографию и тд. и таких "шаблонов" более десятка, поэтому логичнее всего оттолкнуться от этого. Так идея файла шаблонов как раз и заключается в том, чтобы конечный пользователь сам мог быстро составить свой шаблон в зависимости от ГОСТов, ДСТУстов или других требований к оформлению литературы. Да, список доступных типов ссылок не маленький: (article, book, booklet, conference, inbook и т.д.). Для каждого типа ссылки будет задан свой шаблон. Но проблема, как вы правильно заметили, заключается именно в том, что оформление списка авторов может зависеть от их числа, от типа публикации и т.д.. Взять хотя бы ГОСТ 2003 года, (от которого все плюются) и который попортил мне не мало крови, когда диссер писал.. Название: Re: BibMake - генератор библиографических списков Отправлено: _Vitaliy_ от Июнь 24, 2013, 09:17 Сам сейчас кандидатский "опус" пишу, поэтому это знакомо...
По моим представлениям должно выглядеть следующим образом (проба сделать мультиславянский :o ): 1. Выбор нормативного источника (Россия - ГОСТ, Украина - ДСТУ, Беларусь - ХЗ (просто не знаю)). 2. Выбор типа публикации (учебник, монография, книга, ссылка на электронный ресурс и тд) -- после этого пользователю должен быть предоставлен шаблон. 3. Заполнение шаблона. 4. Вуаля. З.Ы. Как по мне то полезно будет еще реализовать возможность составления "временного перечня литературы" по разделам. Поясню. В процессе редактирования (вычитывания, переработки) некоторого раздела может появится необходимость, например добавить ссылку, и предыдущий перечень может "поплыть" по нумерации. З.З.Ы. Или сразу реализовывать перечень по разделам, а в конце его объединять. Но это просто рассуждения. Название: Re: BibMake - генератор библиографических списков Отправлено: kambala от Июнь 24, 2013, 12:24 не совсем понял как в латехе/бибтехе может что-то «поплыть» — нумерация же автоматически обновляется
Название: Re: BibMake - генератор библиографических списков Отправлено: m_ax от Июнь 24, 2013, 21:35 не совсем понял как в латехе/бибтехе может что-то «поплыть» — нумерация же автоматически обновляется Да, если вы bibtex используете. Но если список литературы в ручную оформляется (в самом tex файле) то нумерация ссылок в тексте будет определяться той последовательностью, которой они (ссылки) идут в секции \begin{thebibliography} \bibitem{tag1} ... \bibitem{tag2} ... ... \end{thebibliography} И вот если после правки текста, ссылки были выкинуты, какие то новые добавлены, у каких то порядок в самом тексте изменился, то придётся в соответствии с текстом, их руками переставлять/дописывать/убирать и в самом списке литературы.. :( Название: Re: BibMake - генератор библиографических списков Отправлено: m_ax от Июль 01, 2013, 21:05 Опишу вкратце структуру ядра.
1) tag_extractor - класс, извлекающий из tex файлов все тэги на библиографические ссылки (\cite{tag1, tag2, tag3, ..}) в том порядке в котором они появляются тексте. При этом tag_extractor содержит лишь уникальные (неповторяющиеся) тэки. пример использования: Код
2) класс bib_entry - содержит информацию по конкретной библиографической записи. 3) bib_parser - парсер для формата bib файлов (библиографической базы). С поддержкой перекрёстных ссылок (crossref). Пример использования: Код
4) authors - на основе bib-формата списка авторов принятого в bibtexe формирует список всех авторов. Т.е. фактически тоже является парсером. Пример использования: Код
5) Базовый класс для работы с логами 6) Интерпритатор шаблонов (здесь всёже придётся писать мини язык, поскольку без конструкций условного выбора, похоже не обойтись) 7) Менеджер библиографических ссылок - фактически контейнер для bib_entry, но с возможностью сортирования их по заданному критерию + ещё некоторых плюшек. |