середу, 30 травня 2012 р.

LaTeX, BibTeX та ДСТУ 7.1-2006

В процесі написання дисертації виникає декілька питань, на які я (як і годиться порядному аспіранту) шукав відповіді, і пробував всякі граблі. Наслухавшись багато про LaTeX - я запалився ідеєю зробити свою дисертацію саме в даній системі. Якихось особливих вимог не ставив, окрім автоматичної нумерації таблиць та формул, літератури зі списку використаних джерел тощо. Звісно, що для цього підходить і MS Word і (підозрюю) LibreOffice, але хотілося чогось незвичайного. В ролі редактора тексту було обрано Vim (бо Vim), і робота по трошки почала кипіти.



Перша задача, яка стоїть перед аспірантом, який вирішить зробити дисертацію в LaTeX - це наявність відповідного шаблону для оформлення. Особисто мені припав до душі шаблон vakthesis авторства Олександра Барановського. Проте і даний шаблон не є ідеальним, оскільки при роботі з авторефератом коректно працює лише кодування WINDOWS-1251. Оскільки в мене системна локаль UTF-8 доведеться або конвертувати потрібні шматки роботи у 1251 або ж шукати інший шаблон. Автореферат наразі в процесі задумки, а тому, яким чином обійти дане обмеження - буду вирішувати потім. Звісно, vakthesis є не єдиним шаблоном, проте, на етапі написання рукопису дисертації він мене повністю влаштовує. [Обговорення vakthesis на ЛОУ].

Друга задача - це в чому зберігати і редагувати літературу. Тут я зупинився на кросплатформній програмці під назвою jabref. Перевагою є простий і водночас гнучкий інтерфейс, який дозволяє змінювати потрібні поля (підсвічує ті, які не заповнені до кінця). Сама програма є кросплатформною, а тому я нею користуюся з великим задоволенням. Окрему подяку заслуговує можливість завантаження та локального зберігання посилань (в моєму випадку це статті, книжки та патенти, які типово мають формат PDF). З помічених недоліків - неможливість встановити (принаймні я не знайшов) потрібного переглядача. Завжди використовується типовий системний переглядач (evince).

Третя задача - яким чином відслідкувати версії файлів. Мої колеги типово зберігають на вінчестері по 30 варіантів однієї дисертації. При чому, скільки я не питав їх, то відповіді нормальної отримати не зміг. Тому, я вирішив піти видозміненим шляхом, а саме використати систему контролю версій. Таким чином я можу контролювати процес та час написання дисертації (остання радше для стимулювання такого лінивого аспіранта як я), і завжди маю під руками свіжу версію. Серед всіх систем контролю версій наразі я зупинився на Mercurial, який мені видався найпростішим варіантом. Використовуючи документацію ( ввідний урок, он-лайн книжка, яку я прочитав не до кінця, інтеграція з апачі та надання доступу по авторизації ) таке середовище в мене вже побудоване і чесно працює. Осьдечки і знимок екрану (щоб не було геть пісно):

Ну, і остання задача на етапі написання дисертації - форматування списку літератури відповідно до вимог чинного законодавства. Знову ж таки, всі порядні мої колєги форматували список вручну. Але, оскільки програміст - істота лінива (а я - хоч і паскудний, але все ж програміст), а аспірант - піднімає рівень лінощів програміста до небачених висот - то і тут я вирішив все по максимуму спростити. Для оформлення списку літератури я знайшов таки відповідний пакунок на CTAN, який форматує літературу відповідно до вимог ДСТУ 7.1-2006 «Бібліографічний запис» [рос. мовою - оригінал, бо прийнятий в РФ, і позичений нам; укр. мовою - там нічо не ясно, але даю, щоб не казали, що не патріот]. Останній треба використовувати у дисертації, і на його основі, ВАК (коли то ще було) випустив відповідний наказ, додаток якого містив приклад оформлення літератури відповідно до цього ДСТУ. Приклад звісно розрахований на людей, які стандарт читати не будуть, а тому містить купу ляпсусів. З даного пакунку мене зацікавив ДСТУ ugost2003.bts (ДСТУ 2003 року у форматі Юнікод), однак там не було опису патенту. Оскільки патентів в мене, на даний момент є 4 штуки, а можливо буде й ще, довелося розбиратися у трьох березах від розробників BibTex. За що їм окрема дяка, бо тепер можу писати у резюме, що вмію складати бібліографічні записи у BibTex.

Тому, за даним посиланням можна знайти файл ugost2003.bst, який вміє аналізувати патенти. Його слід записати до теки, де розпаковано пакунок gost, замінивши ним рідний файл. Поля, до заповнення:
  • number - номер патенту
  • year - дата публікації патенту
  • yearfiled - дата подачі заявки на патент
  • znumber - номер заявки
  • country - країна реєстрації патенту
  • author - автори патенту
  • title - назва патенту
  • language - мова патенту (від цього параметру залежить якою мовою будуть виводитися інші поля)
  • assignee - патентовласник
  • type - міжнародні номери патентів
Оскільки я не надто добре ще розібрався з BibTeX, то шаблон вважає всі вище зазначені поля, окрім поля «assignee» обов’язковими.


Ну, ось і все. А тепер слід думати про начинку. А отже - мислити в  стилі LaTeX. Приємного писання.


2 коментарі:

Анонім сказав...

Доброго дня! Дякую за статю! Як ви вирішили проблему cp1261 і vakaref?

Wanderlust сказав...

На превеликий жаль, автореферат робив у ворді, оскільки науковий керівник його вичитував щодня. А він з ЛаТеХом не дружить :(