вівторок, 13 травня 2008 р.

Для новачків: розмови про LaTeX

Сьогодні, розмовляючи з колегою на роботі, стикнувся з запитанням: а чому закордонні математичні журнали приймають статті лише у форматі LaTeX? Чому вони не можуть приймати документи у звичному форматі Word? Для чого людям мучитися з якимось там LaTeX-ом якщо те ж саме можна простіше і швидше набрати у Word? Чесно кажучи, мене, як користувача LaTeX з п'ятирічним стажем, ці питання дещо поставили у ступор. Я спробував навести декілька аргументів але побачив лише повне нерозуміння з її боку. Насправді, досить низький рівень комп'ютерної грамотності і тотальна зацикленість наших людей на продуктах Microsoft, навіть в академічному середовищі, справляє іноді гнітюче враження. Це власне й було поштовхом до написання даного посту з серії Для новачків. Тут я спробую максимально простими словами пояснити, що являє собою LaTeX, для якого класу задач його найкраще використовувати, які його переваги та недоліки.

Отже, почати розмову мені хотілося б з невеличкого екскурсу в історію. Я думаю, що багатьом людям які тісно працюють з комп'ютерами відоме ім'я професора Дональда Кнута, автора бестселлера Мистецтво програмування. Саме він, стикнувшись з проблемами при підготовці макету другого видання своєї книги, розробив типографську систему TeX. Систему планувалося завершити ще у 1978 році, проте остаточне завершення TeX розтягнулося ще на 10 років. Проте, не дивлячись на свою потужність, TeX є мовою розмітки досить низького рівня, тому частіше користувачі мають справу з його розширеннями. Одним з таких найпопулярніших розширень є LaTeX, розроблений в 1984 році програмістом Леслі Лемпортом. З тих пір змінилося декілька версій, але ближче до кінця 90-х років синтаксис стабілізувався. Існують версії системи для різноманітних платформ, таких як Linux, Windows, DOS, Mac та ін. Стандарт TeX використовується для експорта документів у багатьох професійних математичних пакетах (Maple, Mathematica, Maxima), а також наприклад для вводу формул у Вікіпедії.

Тепер спробуємо визначити у чому ж сила LaTeX у порівнянні з програмами типу MS Word. Сучасні текстові процесори використовують технологію WISIWYG, що передбачає акцентування уваги на тому як документ буде виглядати після друку. LaTeX є спеціалізованою мовою розмітки націленою на оформлення документів, приблизно так як HTML використовується для стоворення веб-сторінок. Особливістю LaTeX є відокремлення змісту документу і правил його оформлення. Фактично, увага користувача зосереджується на змісті документу і його логічній структурі, а всю роботу по верстанню документу бере на себе комп'ютер базуючись на обраному класі документу (книга, стаття, звіт, лист чи ін.). Крім того, автоматизується не лише розміщення ілюстрацій, робота з таблицями, нумерація формул, але й робота з перехресними посиланнями, бібліографією та ін. З погляду на особливості такого підходу, можна виділити декілька його переваг.

1. Легка зміна оформлення документу. Наприклад якщо першим рядком документу буде команда \documentclass{article}, то ми отримаємо статтю. Тобто документ буде зверстано на одну сторону в одну колонку шрифтом в 10пт. Якщо захочемо зверстати у дві колонки і шрифтом 12пт, то достатньо написати \documentclass[12pt,twocolumn]{article}. Якщо ж ми захочемо перетворити статтю в книгу і відповідно зверстати текст на дві сторони, то потрібно змінити ім'я класу article на book. От і все. Даний підхід насправді є дуже важливим. Наприклад якщо ви пишете статтю для журналу, то вам абсолютно не потрібно думати про шрифти, поля та інші параметри оформлення. Видавництва таких журналів мають вже готові файли з описом класу документу, тому підігнати надісланий текст під задані правила оформлення є справа декількох хвилин.

2. Переносимість результату між різними комп'ютерами. LaTeX компілює tex-файли у переносимі формати, такі як DVI, PS чи PDF, на вибір користувача. Таким чином, підготовлений документ можна понести на інший комп'ютер і роздрукувати на будь-якому принтері будучи впевненим у тому, що документ скрізь буде виглядати однаково.

3. Швидкий спосіб набору математичних формул. WISIWYG інструменти, такі як наприклад Equation в Word, здаються зрусними для новачка і не вимагають багато часу на вивчення, проте серйозно гальмують роботу коли потрібно набирати тексти з великою кількістю формул. У цьому випадку зручна і логічна командна мова дозволяє суттєво збільшити швидкість набору, дозволяючи не відволікатися на перенесення рук між клавіатурою та мишкою, а також чекання завантаження редактору формул. Набір команд є логічним, тому нічого складного у цьому немає. Наприклад така формула: r_{Y_1Y_2}=\frac{K_{Y_1Y_2}}{\hat{Y}_1\hat{Y}_2}=\frac{\hat{X}^2+a_1a_2\hat{q}^2}{\sqrt{\hat{X}^2+a_1^2\hat{q}^2}\sqrt{\hat{Z}^2+a^2_2\hat{q}^2}} після компіляції отримає наступний вигляд:



Крім того, у LaTeX просто банально набагато більше можливостей по набору формул чисто технічно, бо деякі формули, що використовуються в математиці, набрати ні в Equation ні навіть у MathType немає можливості через відсутність там потрібних символів.

4. Проста нумерація формул. LaTeX здатен автоматично проставляти нумерацію формул. Більше того, з допомогою пари команд \label та \ref можна легко працювати з перехресними посиланнями. Тобто наприклад у вас є пронумеровані формули, а у тексті є посилання на них. Якщо ви захочете вставити декілька формул перед вже існуючими, то нумерація зіб'ється, а значить доведеться змінювати посилання і в тексті. Але LaTeX може зробити це сам, автоматично, таким чином вам не доведеться думати про відповідність номерів потрібним формулам. Аналогічно можна працювати з номерами рисунків, таблиць, глав та ін.

5. Робота з бібліографією. Це досить серйозна проблема при підготовці наукових публікацій. Знову ж таки з тієї причини, що відслідковувати вручну нумерацію бібліографічних джерел складно. LaTeX дозволяє не лише працювати зі списками джерел але й працювати з бібліографічними базами даних, у такому випадку повністю автоматизується не лише слідкування за нумерацією але й оформлення бібліографії згідно стандартів.

6. Плаваючі об'єкти. Розміщення рисунків є не завжди простою задачею, адже при цьому потрібно переформатовувати текст. Стандартна ситуація у текстових процесорах - коли рисунки з'їзджають на сусідню сторінку, текст розривається некрасиво, потрібно думати як набрати документ так щоб підряд не йшло занадто багато картинок і т.д. LaTeX бере на себе всі ці проблеми, користувач лише вказує, що він хотів би десь тут вставити рисунок, а вже компілятор сам знаходить для нього конкретне місце в залежності від правил типографіки. Наприклад якщо зображення велике, то для нього буде виділено окрему сторінку, ну і т.д.

7. Підтримка макросів. Можна створювати власні команди і перекривати вже існуючі. Якщо ви постійно набираєте однотипгі документи, то це дуже зручно.

8. Простота генерації документів з інших програм. Ви можете легко реалізувати генерацію tex-файлів зі своїх власних програм. Я іноді пишу різні розрахункові програми і з допомогою LaTeX я можу генерувати в них звіти поліграфічної якості, з формулами, рисунками та ін.

9. Простота формату. Файли LaTeX - це не, що інше, як спеціалізовані програми, а тому вони являють собою звичайні текстові файли. У період масового користування дискетами, стандартною проблемою було неможливість прочитати файли через проблеми з файловою системою. Способи витягти потрібний файл були, але при цьому втрачалися ті байти які були розміщені на пошкоджених секторах. Тому якщо це був doc-файл ви втрачали його повністю, у випадку ж з tex ви просто втрачаєте декілька символів. Ще одна перевага текстового формату - широкий вибір редакторів на будь-якій платформі. Я наприклад часто набираю тексти на КПК, а потім компілюю їх у завершені документи на домашньому комп'ютері. Набирати на КПК тексти з формулами у форматі Word я не зміг би навіть якби захотів.

10. Величезна кількість додаткових пакетів. Фактично можливості LaTeX є необмеженими. Використовуючи сторонні пакети ви можете писати не лише текст, але й ноти, розписувати шахофі партії, малювати різноманітні схеми та багато іншого. В Інтернеті можна знайти безліч інформації з цього приводу.

Я міг би ще довго писати про LaTeX, бо це одна з тих речей яка мені дійсно подобається і якою я володію професійно, але думаю досить. Наостанок я лише згадаю про недоліки LaTeX у порівнянні з візуальними текстовими процесорами. Так, мінуси у цієї системи також є, хоча вони є й продовженням її плюсів.

1. На вивчення основного набору команд потрібно затратити деякий час, "метод тика" тут не зовсім проходить. Також потрібно мати деякі базові поняття з типографіки. Власне це мало відрізняється від вивчення нової мови програмування.
2. LaTeX не підходить для того щоб швидко накидати простенький документ зі складним оформленням але без видимої структури чи тоді коли ваші документи не схожі один на одний. Його стихія - автоматизація рутинних операцій при підготовці схожих за оформленням документів, а також структуровані документи великого об'єму.
3. Розробка власних класів документів є непростою як для новачка задачею. Хоча набагато простіше розробляти власні класи на базі вже готових.
4. Складність конвертації tex-файлів у розповсюджені формати текстових процесорів (наприклад doc). Вільні конвертори недостатньо функціональні, а комерційні коштують немалих грошей. Але у будь-якому випадку, через специфіку системи, не кожен файл взагалі можливо переконвертувати.

Ось така ситуація. Я далекий від думки, що мій пост може щось змінити у ситуації тотального засилля офісних інструментів у науковому середовищі, проте можливо комусь хто хотів би більше взнати про цю технологію, мої пости й допоможуть. Встановити LaTeX в Ubuntu можна дуже просто, з допомогою менеджера пакетів. Дистрибутив називається TeX-Live, з українською мовою жодних проблем немає.Для Вас салон красоты NOUVELLES,

3 коментарі:

  1. БРАВО!!! Достойна стаття!

    Можеш написати огляд редакторів для TEX в лінуксі з описом переваг і недоліків? В свій час я підбирав для себе редактор, найкращим виявився, як на мене, Kile, але оскільки я пересів на Гном, то відповідно шукав для нього, і прийшов до висновку, що конкурувати з Kile може Texmaker, трохи слабшим є Winefish.u

    ВідповістиВидалити
  2. Присоединяюсь. Классная статья!
    Обзор редакторов не помешал бы :)

    ВідповістиВидалити
  3. Дякую. Я постараюся в одному з найближчіх постів зробити огляд редакторів для LaTeX, це також цікава тема.

    ВідповістиВидалити