Wiki2Tex - konverze Wiki syntaxe do LaTeXu psaná v Pythonu

Nov|25 2009

Od letošního roku jsem si zvykl používat DokuWiki pro editaci a správu různých dokumentů v psané podobě - technické zprávy, diplomová práce apod. Nejen že dokumenty jsou kdykoliv kdekoliv přístupné (DokuWiki nepoužívá ani databázi, stačí server s podporou PHP), ale udržují se informace o změnách a v případě chybné editace je možné starší verze dokumentů snadno dohledat. Takový primitivní Subversion, ovšem pro správu textů dostačující.

Nyní mě napadlo, že není složité převést syntaxi DokuWiki na syntaxi LaTeXu a tím pádem si ušetřit mnoho práce při odevzdávání. Bohužel jsem podobný program nenašel, tak jsem se pustil do jeho psaní. Vznikla aplikace Wiki2Tex v Pythonu 3 (bohužel není kompatibilní s verzemi 2.x), která pomocí regulárních výrazů převádí text v syntaxi Wiki do syntaxe LaTeXu. Převod je samozřejmě jen orientační a některé závěrečné úpravy musí být provedeny ručně, stejně jako definice dokumentu LaTeXu. Přesto doufám, že se bude hodit alespoň mě, v lepším případě i někomu jinému.

Aplikace Wifi2Tex.zip ke stažení.

Malá ukázka, jakým způsobem je převod implementován:


# images
inputStr = re.sub( r'\\\{\\\{.*:([^:]*)\|(.*)\\\}\\\}',
r'\\begin{figure}\n\centering\n\includegraphics[scale=1]{\1}'
+ r'\n\caption{\2}\n\end{figure}', inputStr)

# chapters and sections
chapters = [ #['chapter', '====='],
['section', '====='],
['subsection', '===='],
['subsubsection', '===']]

for i in range(len(chapters)):
inputStr = re.sub( chapters[i][1] + r'\s*([^=]*[^=\s]+)\s*' + chapters[i][1],
r'\\' + chapters[i][0] + r'{\1}', inputStr)

# bold and italic
inputStr = re.sub( r'\*\*([^\*]+)\*\*',
r'{\bf \1}', inputStr)
inputStr = re.sub( r'//([^/]+)//',
r'{\it \1}', inputStr)

Tags: Programování | Python | Počítače

Add New Comment

Note: Comments will be visible after manual check by admin.

* These fields have to be filled.