Dokumentacja: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
 
Linia 1: Linia 1:
<span id="dzialanie" \>
+
=Opis działania parsera z \latex do Wiki=
  
Program tex.py dokonuje konwersji podstawowych elementów dokumentu przygotowanego w \latex do formatu stosowanego w Wiki.Do działania programy niezbędna jest obecność pliku wzorce.xml w katalogu, w którym uruchamiamy program. Plik wzorce.xml zawiera definicje wg. których program przetwarza plikina format \latex.
+
 
 +
Program tex.py dokonuje konwersji podstawowych elementów dokumentu przygotowanego w \latex do formatu stosowanego w Wiki.
 +
Do działania programy niezbędna jest obecność pliku wzorce.xml w katalogu, w którym uruchamiamy program. Plik wzorce.xml zawiera definicje wg. których program przetwarza plikina format \latex.
  
 
Elementy które nie znalazły się w definicjach to:
 
Elementy które nie znalazły się w definicjach to:
*tabele
+
 
*wypunktowania
+
* tabele
 +
* wypunktowania
  
  
Pozostałe elementy zawarte są w pliku wzorców i można je dowolnie modyfikować i dodawać własne.Celem programu jest ułatwienie pracy, jeżeli musimy ręcznie zamineiać w całym pliku jakieś oznaczenia na inne, program nas w tym doskonale wyręczy, o ile odpowiedznie zdefiniujemy nasze potrzeby.
+
Pozostałe elementy zawarte są w pliku wzorców i można je dowolnie modyfikować i dodawać własne.
 +
Celem programu jest ułatwienie pracy, jeżeli musimy ręcznie zamineiać w całym pliku jakieś oznaczenia na inne, program nas w tym doskonale wyręczy, o ile odpowiedznie zdefiniujemy nasze potrzeby.
  
/section{Wyrażenia rególarne}/label{regexp}
+
=Wyrażenia rególarne=
  
Ponieważ we wzorcach do odnajdywania elementów tekstu do zamiany, używamy wyrażeń rególarnych, pozawalam sobie tytułem przypomnienia napisać na ich temat słów kilka.Wyrażenia rególarne są powszechnie przyjętą metodą wyszukiwania wzorców w tekście.Uproszczonym ich odpowiednikiem jest tzw. dzikie karty stosowane w przeszukiwaniu plików, np. *.exe jest wzorcem do którego pasują wszystkie pliki kończące się na exe. W wyrażeniach rególarnych odpowiada mu wzorzec .*\.exe, gdzie:
+
Ponieważ we wzorcach do odnajdywania elementów tekstu do zamiany, używamy wyrażeń rególarnych, pozawalam sobie tytułem przypomnienia napisać na ich temat słów kilka.
 +
Wyrażenia rególarne są powszechnie przyjętą metodą wyszukiwania wzorców w tekście.
 +
Uproszczonym ich odpowiednikiem jest tzw. dzikie karty stosowane w przeszukiwaniu plików, np. *.exe jest wzorcem do którego pasują wszystkie pliki kończące się na exe. W wyrażeniach rególarnych odpowiada mu wzorzec .*\.exe, gdzie:
 
*'''.''' odpowiada dowolnemu znakowi
 
*'''.''' odpowiada dowolnemu znakowi
 
*'''*''' oznacza dowolną ilość powtórzeń (tu dowolnego znaku)
 
*'''*''' oznacza dowolną ilość powtórzeń (tu dowolnego znaku)
Linia 18: Linia 24:
 
*'''exe''' czyli w tym miejscu mają się znajdować właśnie takie litery
 
*'''exe''' czyli w tym miejscu mają się znajdować właśnie takie litery
  
 
+
Proszę się nie obawiać, wyrażenia rególarne zostałe użyte w podstawowym zakresie, można więc założyć źe krótka instrukcja i analiza kilku przykładów powinna umoźliwić definiowanie wzorców. Teraz podam kilka najważniejszych znaków specjalnych używanych w tworzeniu wzorców:
Proszę się nie obawiać, wyrażenia rególarne zostałe użyte w podstawowym zakresie, można więc założyć źe krótka instrukcja i analiza kilku przykładów powinna umoźliwić definiowanie wzorców. Teraz podam kilka najważniejszych znaków specjalnych używanych w tworzeniu wzorców:<table>
+
*'''.'''    dowolny znak
<tr>
+
*'''<math>'''    początek wiersza
<td>{\bf .} </td>
+
*'''^'''    koniec wiersza
<td> dowolny znak</td>
+
*'''\'''    powoduje że następujący po nim znak jest traktwany jak zwykła litera
</tr>
+
*'''*'''    poprzedzający gwazdkę znak może sie powtórzyć dowolną ilość razy (lub nie wystąpić wogóle)
<tr>
+
*'''+'''    poprzedzający znak musi wystąpić co najmniej raz, lub więcej razy
<td>
+
Szczególną rolę odgrywają nawiasy, tekst ujęty nawiasami może szostać użyty w dalszym przetwarzaniu tekstu. Przy tworzeniu wzorców należy pamiętać żeby znaki mające specjalne znaczenie, jeżeli wystąpią we wzorcu poprzedzać \ takie znaki wymagające poprzedzenia to np.:
{\bf $} </td>
+
<table>
<td> początek wiersza</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf ^} </td>
 
<td> koniec wiersza</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf \} </td>
 
<td> powoduje że następujący po nim znak jest traktwany jak zwykła litera</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf *} </td>
 
<td> poprzedzający gwazdkę znak może sie powtórzyć dowolną ilość razy (lub nie wystąpić wogóle)</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf +} </td>
 
<td> poprzedzający znak musi wystąpić co najmniej raz, lub więcej razy</td>
 
</tr>
 
<tr>
 
<td>
 
</td>
 
</tr>
 
</table>
 
Szczególną rolę odgrywają nawiasy, tekst ujęty nawiasami może szostać użyty w dalszym przetwarzaniu tekstu. Przy tworzeniu wzorców należy pamiętać żeby znaki mające specjalne znaczenie, jeżeli wystąpią we wzorcu poprzedzać \ takie znaki wymagające poprzedzenia to np.:<table>
 
<tr>
 
<td>{\bf .} </td>
 
<td> dowolny znak</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf $} </td>
 
<td> początek wiersza</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf ^} </td>
 
<td> koniec wiersza</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf \} </td>
 
<td> powoduje że następujący po nim znak jest traktwany jak zwykła litera</td>
 
</tr>
 
 
<tr>
 
<tr>
<td>
+
<td>zamiast </td>
{\bf *} </td>
 
<td> poprzedzający gwazdkę znak może sie powtórzyć dowolną ilość razy (lub nie wystąpić wogóle)</td>
 
</tr>
 
<tr>
 
<td>
 
{\bf +} </td>
 
<td> poprzedzający znak musi wystąpić co najmniej raz, lub więcej razy</td>
 
</tr>
 
<tr>
 
<td>
 
zamiast </td>
 
 
<td> piszemy</td>
 
<td> piszemy</td>
 
</tr>
 
</tr>
Linia 120: Linia 68:
 
</table>
 
</table>
  
 +
=Rodzaje wzorców=
  
<span id="rodzaje" \>
 
  
 
wzorce.xml to plik xml zawierający następujące typy wzorców:
 
wzorce.xml to plik xml zawierający następujące typy wzorców:
  
 +
==wzorzec==
 
prosta zamiana linii odpowiadającej wzorcowi na zadany tekst
 
prosta zamiana linii odpowiadającej wzorcowi na zadany tekst
  
 
Np. aby zamienić
 
Np. aby zamienić
 +
 
  \section{ala ma kota}
 
  \section{ala ma kota}
  
Linia 137: Linia 87:
 
piszemy:
 
piszemy:
  
<wzorzec><re>\\section\{(.*)\}</re><string>=%s=</string></wzorzec>
+
        <wzorzec>
 
+
            <re>\\section\{(.*)\}</re>
 
+
            <string>=%s=
*'''re} tu opisujemy jak ma wyglądać szukana linijka tekstu, jeźeli chcemy zachować część tej linii, otaczamy ją nawiasami, \{(.*)\''' zapamięta dowlny tekst znajdujący się w nawiasach okrągłych
+
</string>
 +
        </wzorzec>
 +
       
 +
*'''re''' tu opisujemy jak ma wyglądać szukana linijka tekstu, jeźeli chcemy zachować część tej linii, otaczamy ją nawiasami, \{(.*)\''' zapamięta dowlny tekst znajdujący się w nawiasach okrągłych
 
*'''string''' napis jaki ma się znależć w miejsce znalezionej linii tekstu, jeżeli zapamiętaliśmy jakąś część tekstu możemy ją tu wstawić pisząc %s
 
*'''string''' napis jaki ma się znależć w miejsce znalezionej linii tekstu, jeżeli zapamiętaliśmy jakąś część tekstu możemy ją tu wstawić pisząc %s
  
 +
==element==
 +
definiujemy wzorzec dla początku i końca bloku, string jaki ma być wpisany w początku i końcu bloku i definicje specjalnyc parametrów jakie mają być w tym bloku wyszukane.
 +
Np. mamy zamienić:
  
definiujemy wzorzec dla początku i końca bloku, string jaki ma być wpisany w początku i końcu bloku i definicje specjalnyc parametrów jakie mają być w tym bloku wyszukane.Np. mamy zamienić:
+
\begin{dfn}[lalala]
 +
\label{bleble}
 +
bla bla bla
 +
blu blu
 +
\end{dfn}
  
 +
Na:
  
\section{ala ma kota}
+
&#123;&#123;definicja|lalala|bleble|
 +
bla bla bla
 +
blu blu
 +
&#125;&#125;
  
{{definicja|lalala|bleble|  
+
Wzorzec który tego dokona wygląda następująco:
    bla bla bla
+
        <element>     
blu blu
+
            <begin>
}}
+
                <re>&#92;&#92;begin&#92;{dfn&#92;}</re>
 +
                <string>&#123;&#123;definicja|%(nazwa)s|%(etykieta)s|</string>
 +
            </begin>
 +
            <end>
 +
                <re>&#92;&#92;end&#92;{dfn&#92;}</re>
 +
                <string>&#125;&#125;</string>
 +
            </end>
 +
            <param name="nazwa">
 +
                <re>&#92;&#92;begin&#92;{dfn&#92;}&#92;[(.*)&#92;]</re>
 +
            </param>
 +
            <param name="etykieta">
 +
                <re>&#92;&#92;label&#92;{(.*)&#92;}</re>
 +
            </param>
 +
        </element>
 +
       
 +
Przeanalizujmy zatem przykład:
  
Na:
+
* '''begin''' definiuje początek bloku, elementy definicju bloku to są wzorce, z tym szczególęm że używamy tu parametrów nazwanych czyli zamiast %s piszemy %(nazwa)s
 +
* '''end''' definicja końca bloku, wszystko co się znajduje między początkiem a końcem bloku jest traktowane jako część bloku.
 +
* '''param''' definicja parametru, w podanym przykłdzie musimy znaleźć w bloku nazwę (tutaj lalala) i etykietę (tutaj bleble), aby ich użyć w stringu dla początku bloku
  
&#123;&#123;definicja|lalala|bleble|bla bla blablu blu&#125;&#125;
+
==jezyk==
  
Wzorzec który tego dokona wygląda następująco:
+
To chyba najprostszy z wzorców.
\section{ala ma kota}
 
  
{{definicja|lalala|bleble|
 
    bla bla bla
 
blu blu
 
}}
 
        <element>     
 
            <begin>
 
                <re>&#92;&#92;begin&#92;{dfn&#92;}</re>
 
                <string>&#123;&#123;definicja|%(nazwa)s|%(etykieta)s|</string>
 
            </begin>
 
            <end>
 
                <re>&#92;&#92;end&#92;{dfn&#92;}</re>
 
                <string>&#125;&#125;</string>
 
            </end>
 
            <param name="nazwa">
 
                <re>&#92;&#92;begin&#92;{dfn&#92;}&#92;[(.*)&#92;]</re>
 
            </param>
 
            <param name="etykieta">
 
                <re>&#92;&#92;label&#92;{(.*)&#92;}</re>
 
            </param>
 
        </element>
 
Przeanalizujmy zatem przykład:
 
*'''begin''' definiuje początek bloku, elementy definicju bloku to są wzorce, z tym szczególęm że używamy tu parametrów nazwanych czyli zamiast %s piszemy %(nazwa)s
 
*'''end''' definicja końca bloku, wszystko co się znajduje między początkiem a końcem bloku jest traktowane jako część bloku.
 
*'''param''' definicja parametru, w podanym przykłdzie musimy znaleźć w bloku nazwę (tutaj lalala) i etykietę (tutaj bleble), aby ich użyć w stringu dla początku bloku
 
  
 +
        <jezyk nazwa="C">
 +
            <slowo>auto</slowo>
 +
            <slowo>break</slowo>
 +
        </jezyk>
  
  
To chyba najprostszy z wzorców. <jezyk nazwa="C"><slowo>auto</slowo><slowo>break</slowo></jezyk>Definicja języka zawiera nazwę, i słowa kluczowe, blok z kodem żródłowym o wskazanej nazwie zostanie przesunięty o jedną spację, tabulacje zostaną zamienione na 2 spacje, a słowa kluczowe zostaną wyróżnione.
+
Definicja języka zawiera nazwę, i słowa kluczowe, blok z kodem żródłowym o wskazanej nazwie zostanie przesunięty o jedną spację, tabulacje zostaną zamienione na 2 spacje, a słowa kluczowe zostaną wyróżnione.

Wersja z 06:35, 26 lip 2006

Opis działania parsera z \latex do Wiki

Program tex.py dokonuje konwersji podstawowych elementów dokumentu przygotowanego w \latex do formatu stosowanego w Wiki. Do działania programy niezbędna jest obecność pliku wzorce.xml w katalogu, w którym uruchamiamy program. Plik wzorce.xml zawiera definicje wg. których program przetwarza plikina format \latex.

Elementy które nie znalazły się w definicjach to:

  • tabele
  • wypunktowania


Pozostałe elementy zawarte są w pliku wzorców i można je dowolnie modyfikować i dodawać własne. Celem programu jest ułatwienie pracy, jeżeli musimy ręcznie zamineiać w całym pliku jakieś oznaczenia na inne, program nas w tym doskonale wyręczy, o ile odpowiedznie zdefiniujemy nasze potrzeby.

Wyrażenia rególarne

Ponieważ we wzorcach do odnajdywania elementów tekstu do zamiany, używamy wyrażeń rególarnych, pozawalam sobie tytułem przypomnienia napisać na ich temat słów kilka. Wyrażenia rególarne są powszechnie przyjętą metodą wyszukiwania wzorców w tekście. Uproszczonym ich odpowiednikiem jest tzw. dzikie karty stosowane w przeszukiwaniu plików, np. *.exe jest wzorcem do którego pasują wszystkie pliki kończące się na exe. W wyrażeniach rególarnych odpowiada mu wzorzec .*\.exe, gdzie:

  • . odpowiada dowolnemu znakowi
  • * oznacza dowolną ilość powtórzeń (tu dowolnego znaku)
  • \. oznacza po prostu kropkę, ponieważ kropce zostało przypisane specjalne znaczenie, jeżeli chcemy powiedzieć że w danym miejscu ma się znajdować właśnie kropka a nie dowlny znak, musimy ją poprzedzić znakiem \
  • exe czyli w tym miejscu mają się znajdować właśnie takie litery

Proszę się nie obawiać, wyrażenia rególarne zostałe użyte w podstawowym zakresie, można więc założyć źe krótka instrukcja i analiza kilku przykładów powinna umoźliwić definiowanie wzorców. Teraz podam kilka najważniejszych znaków specjalnych używanych w tworzeniu wzorców:

  • . dowolny znak
  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle ''' początek wiersza *'''^''' koniec wiersza *'''\''' powoduje że następujący po nim znak jest traktwany jak zwykła litera *'''*''' poprzedzający gwazdkę znak może sie powtórzyć dowolną ilość razy (lub nie wystąpić wogóle) *'''+''' poprzedzający znak musi wystąpić co najmniej raz, lub więcej razy Szczególną rolę odgrywają nawiasy, tekst ujęty nawiasami może szostać użyty w dalszym przetwarzaniu tekstu. Przy tworzeniu wzorców należy pamiętać żeby znaki mające specjalne znaczenie, jeżeli wystąpią we wzorcu poprzedzać \ takie znaki wymagające poprzedzenia to np.: <table> <tr> <td>zamiast </td> <td> piszemy</td> </tr> <tr> <td> <span id=""/> <math> </td> </tr> <tr> <td> }

{ \{ } \} . \. $ \$

Rodzaje wzorców

wzorce.xml to plik xml zawierający następujące typy wzorców:

wzorzec

prosta zamiana linii odpowiadającej wzorcowi na zadany tekst

Np. aby zamienić

\section{ala ma kota}


Na:

=ala ma kota=

piszemy:

       <wzorzec>
           <re>\\section\{(.*)\}</re>
           <string>=%s=
</string>
       </wzorzec>
       
  • re tu opisujemy jak ma wyglądać szukana linijka tekstu, jeźeli chcemy zachować część tej linii, otaczamy ją nawiasami, \{(.*)\ zapamięta dowlny tekst znajdujący się w nawiasach okrągłych
  • string napis jaki ma się znależć w miejsce znalezionej linii tekstu, jeżeli zapamiętaliśmy jakąś część tekstu możemy ją tu wstawić pisząc %s

element

definiujemy wzorzec dla początku i końca bloku, string jaki ma być wpisany w początku i końcu bloku i definicje specjalnyc parametrów jakie mają być w tym bloku wyszukane. Np. mamy zamienić:

\begin{dfn}[lalala] \label{bleble} bla bla bla blu blu \end{dfn}

Na:

{{definicja|lalala|bleble| bla bla bla blu blu }}

Wzorzec który tego dokona wygląda następująco:

       <element>      
           <begin>
               <re>\\begin\{dfn\}</re>
               <string>{{definicja|%(nazwa)s|%(etykieta)s|</string>
           </begin>
           <end>
               <re>\\end\{dfn\}</re>
               <string>}}</string>
           </end>
           <param name="nazwa">
               <re>\\begin\{dfn\}\[(.*)\]</re>
           </param>
           <param name="etykieta">
               <re>\\label\{(.*)\}</re>
           </param>
       </element>
       

Przeanalizujmy zatem przykład:

  • begin definiuje początek bloku, elementy definicju bloku to są wzorce, z tym szczególęm że używamy tu parametrów nazwanych czyli zamiast %s piszemy %(nazwa)s
  • end definicja końca bloku, wszystko co się znajduje między początkiem a końcem bloku jest traktowane jako część bloku.
  • param definicja parametru, w podanym przykłdzie musimy znaleźć w bloku nazwę (tutaj lalala) i etykietę (tutaj bleble), aby ich użyć w stringu dla początku bloku

jezyk

To chyba najprostszy z wzorców.


       <jezyk nazwa="C">
           <slowo>auto</slowo>
           <slowo>break</slowo>
       </jezyk>


Definicja języka zawiera nazwę, i słowa kluczowe, blok z kodem żródłowym o wskazanej nazwie zostanie przesunięty o jedną spację, tabulacje zostaną zamienione na 2 spacje, a słowa kluczowe zostaną wyróżnione.