Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_dokulatex [2008/06/03 12:39] miw |
pl:miw:miw08_dokulatex [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ====== Opis ====== |
| __**Projekt zakończony**__ |
| |
Paweł Miczko (4AR) <mieczyslav@gmail.com> | Paweł Miczko (4AR) <mieczyslav@gmail.com> |
| |
| |
====== Spotkania ====== | ====== Spotkania ====== |
| *[[pl:miw:miw08_dokulatex:projekt|przebieg prac nad projektem]] |
| |
===== 08.02.26 ===== | ====== Projekt ====== |
* kto już cos z tym robił? | *[[http://hyper.ia.agh.edu.pl/~miczkop/dokulatex.zip|plugin]] {{:pl:miw:miw08_dokulatex:dokulatex.zip|:pl:miw:miw08_dokulatex:dokulatex.zip}} |
* http://danjer.doudouke.org/tech/dokutexit | *[[pl:miw:miw08_dokulatex:instrukcja|instrukcja instalacji pluginu]] |
* wstępna spec. funkc. | |
| |
===== 08.03.11 ===== | ====== Sprawozdanie ====== |
* scenariusze użycia | ====1. Cel projektu==== |
* 1str.wiki->1dok | Celem projektu było stworzenie pluginu do DokuWiki, który konwertowałby jej strony do formatu LaTeX. |
* zbiór str. z podanego ns (zadane wyr. regularnym) ->1 dok | Konwerter obejmuje podstawową składnię wiki, a więc: |
* cały ns -> 1 dok | * formatowanie tekstu |
| * nagłówki |
| * listy numerowane i nienumerowane |
| * linki wewnętrzne i zewnętrzne |
| * tworzenie odnośników |
| * wstawianie grafiki |
| ====2. Wykonanie==== |
| Na potrzeby projektu założone zostało wiki znajdujące się pod adresem |
| http://student.agh.edu.pl/~micz/dokuwiki-2007-06-26b. |
| |
| Prace nad projektem rozpoczęły się od określenia wstępnej specyfikacji fukcjonalności oraz scenariuszy użycia. |
| |
| Funkcjonalności, jakie powinien wykazywać plugin, to przede wszystkim zamiana [[wiki:syntax|składni]] wiki na składnię latexa i tak na przykład: |
| |
| *czysty tekst parsujemy bez zmian |
| |
===== 080401 ===== | * **Bold Text** -> \textbf{} |
* prototyp: 1str.wiki->1dok | |
* customizowalne poziomy section | |
* standalone (generowanie prologu LaTeXa) / embedded (do włączenia, tylko treść dokuemntu) | |
* plugin NIE używa samego LaTeXa! generujemy czysty plik TEX | |
| |
| * //Italic Text// -> \textit{} |
| |
| * __Underlined Text__ -> \underline{} |
| |
===== 080415 ===== | * ''code'' -> \verb|| |
* postawione wiki! | |
| |
| dwie spacje -> \begin{verbatim} |
| |
| *<del>Strike-through Text</del> -> \sout{} |
| |
===== 080429 ===== | *<sub>Subscript</sub> -> $_{subscript}$ |
* [[http://wiki.splitbrain.org/wiki:plugins?plugintag=button|guziczki]] | |
* //ala:// pusta linia i jestesmy w itemize/enum -> enditem/enum | |
- aaa | |
* quoting znaków texa!!!! | |
| |
{ -> $\lbrace$ | *<sup>Superscript</sup> -> $^{superscript}$ |
} -> $\rbrace$ | |
$ -> \$ | |
_ -> \_ | |
\ -> $\$ | |
nie działa - trzeba przez $\backslash$ | |
| |
| *5 poziomów nagłówków, np. |
| ======zzz====== -> /section{zzz} /label{zzz} (w celu póżniejszych odnośników) |
| |
| *- Ordered List Item -> \begin(enumerate} \item ... \end(enumerate} |
| |
| ** Unordered List Item -> \begin{itemize} \item ... \end{itemize} |
| |
| *[[http://link.zewnetrzny]] -> \url{http://link.zewnetrzny} |
| |
===== 080520 ===== | *[[linkwewnętrzny]] -> \ref{linkwewnętrzny} |
* testowanie, do zainst. -> instr | |
* import latexa do wiki | |
http://wiki.splitbrain.org/plugin:latex | |
| |
http://wiki.erazor-zone.de/doku.php?id=wiki:projects:php:dokuwiki:plugins:latex | *((footnote)) -> \footnote{} |
| |
===== 080603 ===== | *{{Grafika|caption}} -> \begin{figure} \includegraphics{Grafika} \caption{caption} \end{figure} |
* sprawozd: specyfikacja funkcj., opis realizacji, ew. opis "zasadzek" | |
* ew. naprawienie usterek po testach | |
| |
| Zdefiniowano 3 możliwe przypadki użycia: |
| * 1str.wiki->1dok |
| * zbiór str. z podanego ns (zadane wyr. regularnym) ->1 dok |
| * cały ns -> 1 dok |
| |
| Do realizacji wybrany został jeden z nich: |
| * 1str.wiki->1dok |
| |
| Do stworzenia pluginu wybrany został język PHP. Parser został napisany obiektowo (z zastosowaniem klas). |
| |
====== Projekt ====== | *Stałe(definiowane poza klasą): |
*[[pl:miw:miw08_dokulatex:projekt|przebieg prac nad projektem]] | * F_WIKI - przechowuje nazwę katalogu, w którym znajdują się strony. |
*[[pl:miw:miw08_dokulatex:instrukcja|instrukcja instalacji pluginu]] | *Atrybuty: |
| * $last_loaded - przechowuje nazwę ostatnio wczytanego pliku. |
| * $unparsed - przechowuje niezamieniony kod stron, |
| * $parsed - przechowuje zamieniony kod stron, |
| * $blocks - przechowuje bloki do zamiany. |
| *Operacje: |
| * load() - wczytuje kod strony i zapisuje go jako kolejny element tablicy $unparsed |
| * parse() - parsuje stronę i zapisuje wynik swojego działania jako kolejny element tablicy $parsed |
| * show_result() - wyświetla sparsowaną stronę/strony |
| |
| Funkcja konwertująca parse() działa na bazie wyrażeń regularnych i PHPowskiej funkcji preg_match_all. |
| |
| Prace nad projektem zakończyły się spakowaniem pluginu i stworzeniem [[pl:miw:miw08_dokulatex:projekt|instrukcji]] obsługi potrzebnej do jego instalacji. Dokonuje się jej za pomocą plugin managera. |
| |
| Po prawidłowym zainstalowaniu pluginu u góry każdej strony w Wiki obok przycisków "Edytuj stronę" i "Poprzednie wersje" pojawia się przycisk "Konwertuj do Latexa". Po jego naciśnięciu zostaje wywołana odpowiednia funkcja i otwiera się nowe okno zawierające przetworzony do Latexa kod. Kod ten może zostać bezpośrednio przekopiowany do edytora tekstu LaTeXa i skompilowany. |
| |
====== Sprawozdanie ====== | Ostatnim etapem prac było napisanie niniejszego sprawozdania. |
Celem projektu było stworzenie pluginu do DokuWiki, który konwertowałby jej strony do formatu LaTeX | ====3. Zasadzki==== |
Konwerter obejmuje podstawową składnię wiki, a więc: | W trakcie prac nad projektem okazało się, że konieczna będzie odpowiednia obsługa 10 znaków specjalnych TeXa: { , }, \, $, _, %, &, ~, ^, # które w wiki nie sprawiają problemów, ale po przeklejeniu w niezmienionej postaci powodowałyby błędy w kompilacji. Zostały one dołączone do listy rzeczy do zrobienia i odpowiednio załatwione. |
* formatowanie tekstu | |
* listy | |
* linki wewnętrzne i zewnętrzne | |
* nagłówki | |
* tworzenie odnośników | |
* wstawianie grafiki | |
Na cele projektu założone zostało wiki znajdujące się pod adresem http://student.agh.edu.pl/~micz/dokuwiki-2007-06-26b. | |
| |
Konwertowanie działa na bazie wyrażeń regularnych i PHPowskiej funkcji preg_match_all. | |
Konieczna była także odpowiednia obsługa 10 znaków specjalnych TeXa: { , }, \, $, _, %, &, ~, ^, # które w wiki nie sprawiają problemów, ale po przeklejeniu w niezmienionej postaci powodowałyby błędy w kompilacji. | |
Prace nad projektem zakończyły się spakowaniem pluginu i stworzeniem [[pl:miw:miw08_dokulatex:projekt|instrukcji]] obsługi potrzebnej do jego instalacji. | |
| |
| Spośród wymienionych na początku funkcjonalności nie wszystkie było jednakowo łatwo zrealizować. Przykładowo, przy bardzo rozbudowanych listach, z wieloma poziomami zagnieżdżenia, plugin nie zawsze sobie radzi. Mogą powstać drobne błędy konwersji, które można poprawić ręcznie. |
| |
| Mimo usilnych starań nie udała się realizacja funkcjonalności, która rozpoznawałaby na wejściu |
| taki tekst |
| i wstawiała go do środowiska verbatim. Jest to jedyna funkcjonalność, której nie udało się zrealizować. Kod wygląda poprawnie, lecz nie działa.. Zostaje to do realizacji przez przyszłe pokolenia. |
| ====4. Możliwości kontynuacji==== |
| Zdecydowana większość funkcjonalności założonych przy specyfikacji została zrealizowana. Nie oznacza to jednak, że plugin nie może zostać rozbudowany. |
| Przede wszystkim można zająć się dwoma pozostałymi scenariuszami użycia: |
| * zbiór str. z podanego ns (zadane wyr. regularnym) ->1 dok |
| * cały ns -> 1 dok |
| Ponadto, zająć się można bardziej zaawansowanymi strukturami składniowymi wiki, jak choćby tabele. Należałoby też zmusić nieszczęsny verbatim do zadziałania... |
====== Materiały ====== | ====== Materiały ====== |
| |