Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
Nowa wersja Both sides next revision
pl:miw:miw08_dokulatex [2008/06/05 12:03]
miw
pl:miw:miw08_dokulatex [2008/06/14 11:38]
gjn
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Paweł Miczko (4AR) <​mieczyslav@gmail.com>​ Paweł Miczko (4AR) <​mieczyslav@gmail.com>​
  
Linia 7: Linia 9:
  
 ====== Spotkania ====== ====== Spotkania ======
 +  *[[pl:​miw:​miw08_dokulatex:​projekt|przebieg prac nad projektem]]
 +====== Projekt ======
 +  *[[http://​hyper.ia.agh.edu.pl/​~miczkop/​dokulatex.zip|plugin]]
 +  *[[pl:​miw:​miw08_dokulatex:​instrukcja|instrukcja instalacji pluginu]]
  
-===== 08.02.26 ​===== +====== Sprawozdanie ====== 
-  * kto już cos z tym robił +====1. Cel projektu==== 
-  *  http://danjer.doudouke.org/tech/dokutexit +Celem projektu było stworzenie pluginu do DokuWiki, który konwertowałby jej strony do formatu LaTeX. 
-  * wstępna spec. funkc.+Konwerter obejmuje podstawową składnię wiki, a więc: 
 +  * 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.
  
-===== 08.03.11 ===== +Prace nad projektem rozpoczęły się od określenia wstępnej specyfikacji fukcjonalności oraz scenariuszy ​użycia.
-  * scenariusze ​użycia +
-    * 1str.wiki->​1dok +
-    * zbiór str. z podanego ns (zadane wyr. regularnym) ->1 dok +
-    * cały ns -> 1 dok+
  
 +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
  
 +  * **Bold Text** -> \textbf{}
  
-===== 080401 ===== +  ​//Italic Text// ​-> \textit{}
-  ​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+
  
 +  * __Underlined Text__ -> \underline{}
  
 +  * ''​code''​ -> \verb||
  
-===== 080415 ===== +  dwie spacje -> \begin{verbatim}
-  * postawione wiki!+
  
 +  *<​del>​Strike-through Text</​del>​ -> \sout{}
  
 +  *<​sub>​Subscript</​sub>​ -> $_{subscript}$
  
-===== 080429 ===== +  ​*<​sup>​Superscript<​/sup> ​-> $^{superscript}$
-  ​[[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$ ​ +  ​*5 poziomów nagłówków,​ np. 
-  ​-> $\rbrace$ +  ​======zzz====== ​-> /​section{zzz} /label{zzz} (w celu póżniejszych odnośników)
-  $ -> \$ +
-  _ -> \_ +
-  \ -> $\$ +
-  nie działa - trzeba przez $\backslash$+
  
 +  *- Ordered List Item -> \begin(enumerate} \item ... \end(enumerate}
  
 +  ** Unordered List Item -> \begin{itemize} \item ... \end{itemize}
  
 +  *[[http://​link.zewnetrzny]] -> \url{http://​link.zewnetrzny}
  
 +  *[[linkwewnętrzny]] -> \ref{linkwewnętrzny}
  
-===== 080520 ===== +  ​*((footnote)) ​-> \footnote{}
-  ​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+  *{{Grafika|caption}} ​-> \begin{figure} \includegraphics{Grafika} \caption{caption} \end{figure}
  
-===== 080603 ===== +Zdefiniowano 3 możliwe przypadki użycia: 
-  * sprawozd: specyfikacja funkcj., opis realizacji, ew. opis "​zasadzek"​ +  * 1str.wiki->​1dok 
-  * ewnaprawienie usterek po testach+  * zbiór strz 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).
  
 +  *Stałe(definiowane poza klasą):
 +    * F_WIKI - przechowuje nazwę katalogu, w którym znajdują się strony.
 +  *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
  
-====== Projekt ====== +Funkcja konwertująca parse() działa na bazie wyrażeń regularnych ​PHPowskiej funkcji preg_match_all.
-  *[[pl:​miw:​miw08_dokulatex:​projekt|przebieg prac nad projektem]] +
-  *[[pl:​miw:​miw08_dokulatex:​instrukcja|instrukcja instalacji pluginu]] +
- +
- +
- +
- +
- +
- +
-====== Sprawozdanie ====== +
-====1.Cel projektu :==== +
-Celem projektu było stworzenie pluginu do DokuWiki, który konwertowałby jej strony do formatu LaTeX +
-Konwerter obejmuje podstawową składnię wiki, więc: +
-  * formatowanie tekstu +
-  * listy +
-  * linki wewnętrzne ​zewnętrzne +
-  * nagłówki +
-  * tworzenie odnośników +
-  * wstawianie grafiki +
-====2. Wykonanie :==== +
-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. +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.
-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.+
  
-====3Zastosowane klasy predykaty :====+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 ​otwiera się nowe okno zawierające przetworzony do Latexa kod. Kod ten może zostać bezpośrednio przekopiowany do edytora tekstu LaTeXa i skompilowany.
  
 +Ostatnim etapem prac było napisanie niniejszego sprawozdania.
 +====3. Zasadzki====
 +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.
  
 +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 ======
  
pl/miw/miw08_dokulatex.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0