środa, 23 kwietnia 2008

Lyx czyli LaTeX inaczej



Jest taki projekt, który przyszło mi zacząć kodować jakoś rok temu. Projekt nawet interesujący, nie mały, choć też przesadnie nie duży (obecnie już ponad dwanaście tysięcy linii kodu i wciąż rośnie), ale wyróżnia go coś od innych projektów informatycznych, z którymi zetknąłem się wcześniej.

Mianowicie:

  • gdy go zacząłem był dla mnie inspiracją, powodował ogólne poczucie samospełnienia zawodowego
  • teraz bywają dni, że ledwo mogę na niego patrzeć
  • mimo, że siedzę nad nim prawie codziennie, nikt mi za niego nie zapłaci
  • dokumentacja jest nietypowa i balansuje na pograniczu pseudonaukowych wywodów a laniu wody
Jeśli jeszcze się nie domyśliłeś z czym przyszło mi się zmierzyć, pozwól, że oświecę (ku przestrodze) - piszę obecnie moją pracę magisterską.
Samo kodowanie nie jest aż tak straszne, gdyż program sam w sobie jest ciekawy i klepanie kodu nie dostarcza zbyt wielkich cierpień - jest nawet "przyjemne", jeśli można to tak określić. Problem pojawia się z nieszczęsnym dokumentem, który stanowić ma o 6 literkach przed moim nazwiskiem (mgr inż.). Nie będę tutaj opisywał ile wewnętrznej siły musiałem zebrać w sobie, żeby się zabrać do pisania (może innym razem), opowiem za to o ciekawym narzędziu, które pomaga mi przetrwać w tym bolesnym dla mnie okresie, jakim jest pisanie pracy magisterskiej. Mowa tu o programie Lyx.

Jeśli zrobimy mały research to okaże się, że większość książek, artykułów, publikacji i innych takich pisze się w pewnym ustandaryzowanym formacie zwanym LaTeX. Piękno latexa polega na tym, iż nie formatujemy tekstu. Idea jaka stoi za latexem jest podobna do połączenia xml z xslt. Pisząc na przykład książkę, mówię, że dany fragment tekstu to paragraf, dany fragment tekstu to tytuł rozdziału a jeszcze inny fragment to na przykład cytat. Później mam odpowiednie pliki (tak zwane klasy), które formatują nam dany tekst, przy generowaniu go do na przykład do pdfa. Jedna klasa może spowodować, że paragraf będzie miał odpowiednie wcięcia, tytuł rozdziału pogrubiony a cytat napisany będzie kursywą. Nie podoba mi się wyjściowy plik? Mogę użyć innej klasy, gdzie inaczej sformatowany będzie paragraf, tytuł rozdziału będzie na przykład podkreślony a cytat wyjustowany do prawej strony. Samego tekstu nie zmieniam, podmieniam tylko klasy go formatujące.
Dodatkowo LaTeX zadba o odpowiednie numerowanie rozdziałów i podrozdziałów, automatycznie wygeneruje nam spis treści, spis tabel i rysunków, utrzyma spójność nazewnictwa rysunków, zadba o poprawne podanie bibliografii. Po prostu ideał! A więc w czym tkwi problem? Ano w tym, że pisząc dokument w jakimkolwiek edytorze latex'owym wygląda to tak:



Niezbyt zachwycająco prawda? Kiedy zabierałem się za początki pisania mojej pracy magisterskiej, byłem w stanie odrzucić wszelkie plusy jakie niósł ze sobą latex byle tylko nie babrać się w czymś takim. I kiedy już miałem otwierać nowy dokument w openoffice coś mnie tknęło i postanowiłem na wszelki wypadek zrobić searcha pod hasłem "latex" w repozytorium programów na moim Ubuntu. Wtedy właśnie poznałem Lyx'a.

Lyx jest programem, w którym piszemy dokumenty LaTeXa (przez co możemy korzystać ze wszystkich uroków tego formatu opisanych wcześniej), ale interfejs użytkownika zbliżony jest bardzo do edytorów tekstu do jakich przyzwyczaiły nas M$ Office czy OpenOffice. Zatem mamy pełen zakres udogodnień jakie daje nam LaTeX przy praktycznym zniwelowaniu jego minusów.

Oto jak wygląda Lyx w działaniu (z kawałkiem mojej pracy magisterskiej ;) )

A tak wygląda wygenerowany pdf przy zastosowaniu klasy latexowej "article-polish":


Widać bardzo ładnie. I nie musze dbać tutaj o marginesy, spis treści, bibliografię i inne takie. Wszystko to generowane jest za mnie, automatycznie dopasowując się do zmian pojawiających się w dokumencie i tak dalej. Po prostu bajka!

Dlatego jeśli w przyszłości zamierzasz pisać pracę magisterską, książkę czy cokolwiek w tym stylu, a nie chcesz męczyć się z karkołomnym LaTeX'em, gorąco polecam program Lyx. Jest darmowy (open sourcowy o ile się nie mylę) i co najważniejsze działa na wszystkich platformach (Windows, Linux, Solaris), choć nie napisano go w Javie ;) Raz jeszcze gorąco polecam.

A teraz wybaczcie, idę pisać pracę magisterską...

4 komentarze:

Gandalf pisze...
Ten komentarz został usunięty przez autora.
Gandalf pisze...

aeniman@kubuntu:~$ sudo aptitude install lyx
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności
Reading state information... Gotowe
Reading extended state information
Initializing package states... Gotowe
Building tag database... Gotowe
The following packages have been automatically kept back:
libavahi-glib1
The following NEW packages will be automatically installed:
[duuuuuuużo pakietów]
The following packages have been kept back:
[trochę pakietów]
The following NEW packages will be installed:
[ponownie duuuuuuuuużo pakietów]
0 packages upgraded, 63 newly installed, 0 to remove and 12 not upgraded.
Need to get 333MB of archives. After unpacking 692MB will be used.
Do you want to continue? [Y/n/?]

Też tak miałeś? :)

Paweł Szulc pisze...

tak tak, ale ile konkretnie miejsca zajelo to nie pamiętam... Mam duzy dysk generalnie ;)

Ale te 692 MB to pewnie nie tylko Lyx ale jeszcze paczki latexowe i inne takie. BO nie wyobrazam sobie zeby ten program zajmowal tyle miejsca...

morisil pisze...

Przypomniały mi się czasy pisania własnej magisterki. Na studiach właściwie wszystkie teksty pisałem w LyXie, a było tego dość sporo.

LyX oferuje zupełnie nowy paradygmat edycji dokumentów - What You See Is What You Mean (WYSIWYM) zamiast WYSIWYG i to jest IMO genialne - żadnego babrania z formatowaniem - maksymalne skupenie na treści - tym co się chce przekazać. Po doświadczeniach z LyXem, fakt spopularyzowania przez Microsoft paradygmatu WYSIWYG do pracy nad tekstem postrzegam w kategoriach "zbrodni na ludzkości". ;)

Po podłączeniu BibTeX to już w ogóle jest miodzio - szczególnie jeśli ktoś dużo publikuje powołując się na te same źródła. Pamiętam, że musiałem sobie zakodować własny TeXowy sposób prezentacji bibliografi, by dopasować się do schematu wykorzystywanego w pracach z zakresu ogólnie pojętej humanistyki. :)

Dzisiaj stosuję też trochę XML w podobnym charakterze (apache'owy format dokumentu podobny do docbook, ale targetowany dla weba). Do uzyskania końcowego efektu stosuję XSLT i FOPa - nie jest to wprawdzie TeX, ale do dokumentacji technicznej która trafia albo na web, albo do PDF nadaje się to znakomicie.