W mgnieniu oka

Witaj na prywatnej stronie blinkkina. Zapoznaj się z informacjami na temat bloga i autora. Subskrybuj witrynę przez kanał atom lub zobacz ostatnie komentarze. W wolnej chwili odwiedź mojego mikrobloga na identi.ca.


Alternatywne edytory dokumentów

· artykuły · skomentuj

Ostatnio miałem okazję pracować nad tekstem w formacie DocBook. Bezpośrednie grzebanie w XML nie jest przyjemne, ani wydajne. Zacząłem, więc poszukiwania jakiegoś sensownego rozwiązania. Takowe znalazłem dosyć szybko, co natchnęło mnie do napisania bardziej ogólnego artykułu.

Opiszę trzy rozwiązania, które są interesujące ze względu na różne zastosowania. Każde ma swoje zalety i wady. Z pewnością nie zastąpią one, popularnych Officów (produktu Microsoft czy OO.org). Jednak w specyficznych przypadkach mogą sprawdzić się lepiej.

Są to Lyx, Syntext Serna i Pandoc, kod każdego dostępny jest na zasadach otwartych źródeł. Wszystkie je łączy jedna cecha – praca w tzw. trybie WYSIWYM (What You See Is What You Mean). Zamiast formatowania tekstu, tworzymy jego strukturę. Przypomina to trochę pracę na stylach we wspomnianych wcześniej Officach, jednak cała koncepcja została jeszcze rozszerzona.

Tworząc dokument za pomocą tych narzędzi, nie zastanawiamy się nad jego wyglądem. Koncentrujemy się nad treścią, którą dzielimy na logiczne bloki jak paragrafy, akapity, nagłówki, tytuł etc. Wygląd ustalamy po zakończeniu prac nad zawartością.

Jakie ma to zalety? W przypadku kilkuosobowej pracy nad dokumentem w Officach, jedna osoba prędzej czy później zajmuje się tylko opanowaniem burdelu, poprzez nadanie jednolitego wyglądu. Szczególnie problematyczne, ponieważ formatowanie tekstu może wyglądać różnie w zależności od komputera i wersji oprogramowania.

Drugi ważny atut to tekstowe formaty plików, oferowane przez Lyksa, Sernę i Pandoca. Standardowe formaty Officów to zazwyczaj pliki binarne, które średnio sprawdzają się w pracy z systemami kontroli wersji, takimi jak CVS czy Git. Diffy są po prostu nieczytelne.

Tyle słowem wstępu. Dalszy opis wspomnianych rozwiązań należy traktować, jako krótkie prowadzenie. Dodam tylko, że wszystkie programy są dostępne na wielu platformach – działają zarówno na Windowsach, jak i Linuksach.

LyX – LaTeX dla śmiertelników

LyX - Zrzut ekaranu

LyX jest jednym ze starszych rozwiązań, jednak nadal niezbyt popularnym. Wykorzystuje znane makra LaTeksa, chociaż format *.lyx nie jest w pełni z nim zgodny – istnieje możliwość konwersji. Jest to zaleta ponieważ do wyboru mamy kilka środowisk/dystrybucji LaTeksa. Standardowo proponowane jest MiKTeX, osobiście preferuje TeXLive ze względu na ładniejsze czcionki.

Przejdźmy jednak do samego programu. Na pierwszy rzut oka interfejs nie wygląda zbyt zachęcająco. Na plus można zaliczyć pełne jego spolszczenie, zazwyczaj jednak przy tworzeniu dokumentu należy wybrać jego język. Puryści językowi będą zadowoleni z możliwości wyboru kilku rodzajów cudzysłowu – w tym polska wersji tzw. dolny i górny cudzysłów. Lyx obsługuje także słowniki – standardowo jest to Aspell.

Dosyć szybko można zauważyć, że edytor nie pozwala na wstawienie kilku spacji lub kilku nowych linii po sobie. Jest to umyślne działanie, które pozwala na uniknięcie błędów typograficznych. Tak jak wspomniałem we wstępnie, dokument tworzymy nadając mu strukturę, wybór jest dosyć spory. Jednak dostęp do niektórych funkcji m.in. wyrównanie tekstu, a raczej akapitów wydaje się utrudniony. Trzeba się do tego po prostu przyzwyczaić. Osoba która miała kontakt z Officem nie powinna mieć większych problemów.

Dlatego przejdę do bardziej zaawansowanych opcji, wyjątkowych na tle innych produktów. Pierwsza to konspekt, czyli podgląd struktury dokumentu. Pozwala to na szybką nawigację w strukturze dokumentu. Co więcej pozwala także na łatwą zmianę m.in. kolejności sekcji – nie trzeba kopiować, wycinać tekstu.

Druga rzecz, która mnie urzekła to obsługa CVS i Subversion z poziomu interfejsu. Co prawda najpierw trzeba takie repozytorium utworzyć korzystając z zewnętrznego programu, jednak dalsza praca z kontrolą wersji jest już zautomatyzowana. Lyx wykrywa obecność repozytorium CVS lub SVN w katalogu. Spory atut w przypadku zespołowej pracy. Szkoda, że nie ma obsługi Gita czy Mercuriala. Rozproszona praca nad dokumentami wydaje się jeszcze atrakcyjniejsza.

Celowo pominąłem niektóre braki, ponieważ większość zostanie uzupełniona w wersji 2.0, która ma ukazać się po wakacjach. Dodany ma zostać natychmiastowy podgląd, obecnie wygenerowanie PDF czy PostScripta trochę zajmuje. Słownik synonimów ma być wielojęzykowy, dotychczas dostępny był tylko język angielski. Zniknie potrzeba wciskania przycisku sprawdzania pisowni, błędy mają być podświetlane automatycznie. Możliwości konspektu zostaną rozszerzone – jest, więc na co czekać.

Warto wspomnieć też o dokumentacji, która liczy przeszło tysiąc stron. Jeśli nawet 2/3 to informacje na temat wyrażeń matematycznych, ciągle robi to wrażenie. Społeczność użytkowników LaTeX jest dosyć spora, a zaawansowaną pomocą łatwo uzyskać.

Zalety:

  • Ogromna ilość szablonów, pozwalająca na szybkie uzyskanie ładnie wyglądającego druku
  • Zaawansowana obsługa wyrażeń matematycznych
  • Mocno rozwinięte tworzenie bibliografii
  • Duża społeczność

Wady:

  • Dokumenty online po konwersji mogą wyglądać inaczej niż zakładaliśmy
  • Edytor wygląda na niedopracowany
  • Wymagane środowisko LaTeXa

Zastosowania: Głównie prace naukowe na papierze. Rozwiązanie podobno coraz popularniejsze m.in. w przypadku prac magisterskich.

Syntext Serna – poznaj możliwości XML

Syntext Serna Free - Zrzut ekaranu

Serna to graficzny edytor XML, koncentrujący się na obsłudze formatów DocBook i DITA. Z powodu ogólnoświatowego kryzysu i dominacji konkurencyjnych rozwiązań (Arbortext Epic i XMetal), firma Syntext zdecydowała się na wypuszczenie swojego edytora na licencji GPL.

Serna początkowo wydaje się dosyć prostym edytorem, jednak w rzeczywistości jest to kombajn. Edytor ten nie stara się ukrywać znaczników, eksponuje je rozszerzając nasze możliwości. Konspekt dokumentu jest znacznie bardziej zaawansowany niż w Lyksie.

Jednak problemy pojawiają się, gdy chcemy skorzystać z tych możliwości w języku polskim. Standardowe klawisze do wprowadzania polskich ogonków są przypisane do innych funkcji. Pomogło wyłączenie wtyczki „CustomContent” i edytowanie pliku „/ui/StructDocument.sui” (zmieniłem skrót klawiszowy CTRL+ALT+S na CTRL+ALT+Left). Dodanie obsługi języka polskiego do słownika jest dosyć trywialne, sprowadza się to do skopiowania plików Aspella do odpowiedniego katalogu. Dodatkowo należy ręcznie ustawić parametr „lang=pl” w dokumencie, jeśli edytujemy polski tekst.

Praca z Serną jest podobna do Lyksa, w wielu przypadkach jednak łatwiejsza i bardziej intuicyjna. Osoby znające np. HTML powinny znacznie szybciej odnaleźć się w świecie znaczników XML. Pominę, więc szczegóły i skoncentruje się na ważniejszych elementach.

Dokumentacja Serny nie jest tak obszerna, jak poprzednika. Opisuje jednak bardziej szczegółowo API programu i sposób tworzenia wtyczek. Szczególnie uradowani mogą być pythonowcy, ponieważ Serna posiada wbudowaną obsługę Pythona. Co ciekawe licencja GPL tego programu posiada wyjątki, które pozwalają na publikację rozszerzeń na innych licencjach (BSD, Apache, MPL i praktycznie wszystkie pozycje autoryzowane przez FSF).

Po krótkiej zabawie, byłem pod ogromnym wrażeniem, jednak tkwi tutaj haczyk. Serna to tylko edytor, a nie procesor DTD. Istnieje co prawda możliwość eksportu dokumentu do formatu PDF po zainstalowaniu programu FOP, jednak opcje są mocno ograniczone. Aby w pełni cieszyć się możliwościami formatu DocBook czy DITA potrzebny jest parser XSLT, którego konfiguracja wymaga sporej wiedzy.

Opłacalność użycia Serny rośnie wraz z objętością tekstu, w przypadku krótkich utworów nie ma to większego sensu. Edytor ten przyda się głównie osobom tworzącym techniczną dokumentację – format DocBook jest niezwykle popularny wśród projektów otwarto źródłowych.

Zalety:

  • Intuicyjny interfejs
  • Możliwość stworzenia swoich wtyczek
  • Praktycznie jedyny darmowy edytor XML pracujący w trybie podobnym do WYSIWYG

Wady:

  • Kiepska obsługa języka polskiego
  • Tworzenie dokumentów dla użytkowników końcowych wymaga obszernej wiedzy

Zastosowania: Techniczna dokumentacja, tworzona przez zaawansowanych użytkowników, często programistów.

Pandoc – szwajcarski scyzoryk

Edytor online Pandoc - Zrzut ekaranu

Pandoc nie jest co prawda edytorem, a konwerterem, jednak postanowiłem go opisać. Osobiście jestem zwolennikiem lekkich markupów (polska nazwa „język znaczników” jest mało przekonująca). Swojego czasu zmagałem się (w negatywnym tego znaczeniu) z edytorem WYSIWYG Wordpressa, podczas gdy miałem bardzo pozytywne wrażenia z pracy nad MediaWiki. Wtedy zainteresowałem się markupami, moim ulubieńcem jest RedCloth. Pandoc natomiast stawia na Markdown, jednak nie jest to wielka przeszkoda.

Pandoc skonwertuje nasz tekst utworzony w praktycznie każdym edytorze, na dowolny, popularny format. Z Markdowna można wygenerować PDF, ODT, RTF, HTML, LaTeX, a nawet strony podręcznika man. Pytanie tylko po co?

Lekki markup pozwala na bardzo szybkie tworzenie dokumentów z podstawowym formatowaniem. Możliwość konwersji na tak wiele formatów, ułatwia dzielenie się naszą wesołą twórczością z innymi osobami, niezależne od oprogramowania, które posiadają.

Zalety:

  • Szybkie tworzenie dokumentów
  • Bardzo czytelne diffy w przypadku użycia systemu kontroli wersji
  • Konwersja na wiele formatów
  • Dowolny edytor tekstu

Wady:

  • Ograniczone opcje formatowania tekstu
  • Mało wyraźna struktura dokumentu

Zastosowania: Krótkie publikacje na stronach internetowych

Co wybrać i do jakiego zastosowania?

Wszystko sprowadza się do kwestii formatów wpieranych przez dany edytor. LaTeX jest nie do pobicia, jeśli chodzi o prace drukowane. Jednak część formatowania odbywa się za pomocą znaczników prezentacyjnych. Oznacza to, że w przypadku publikacji elektronicznych (szczególnie HTML), wygląd może odbiegać od zamierzeń.

DocBook jest w pełni strukturalnym formatem, dlatego możliwa jest konwersja do innych standardów, bez utraty formatowania. Problem w tym, że utworzenie takiego dokumentu może być pracochłonne. Jeszcze gorzej wygląda sprawa tworzenia stylów/formatowania tekstu.

Markdown jest najprostszym formatem, łatwym w nauce. Problem w tym, że jego funkcjonalność jest przez to mocna ograniczona. Sprawdza się głównie w publikacjach elektronicznych, natomiast w przypadku druku na wierzch wychodzą mankamenty.

LaTeksa widzę jako narzędzie do tworzenia różnego rodzaju podań/wniosków (piszę ich sporo) i np. Curriculum Vitae. DocBooka zapewne użyję w planowanym projekcie, gdzie objętość tekstu będzie zapewne trzycyfrowa. Praca ma być opublikowana zarówno na stronie Web i w drukowalnym PDF. Natomiast Markdown najlepiej sprawdzi się w przypadku krótkich publikacji (jak ta) z przeznaczeniem na stronę internetową.

Zaletą tych wszystkich rozwiązań jest tekstowy format plików, co jest ogromną korzyścią przy zastosowaniu systemu kontroli wersji. Wykorzystanie Gita czy CVS pozwala na przechowywanie dokumentów z pełną ich historią. Bałagan na dysku można zmniejszyć stosując branche (usuwamy plik z gałęzi, na której pracujemy i przenosimy do innej) i tagi (ważniejsze dokumenty/wzory można oznaczyć, żeby ułatwić sobie do nich dostęp).

Powyższa publikacja zapewne jest dosyć chaotyczna, wpływ miała na to irytacja codziennymi problemami. Mam nadzieję, że ktoś skorzysta z tych informacji.