Wiki2tex.awk

From C3D2
Revision as of 06:40, 27 November 2006 by Nulli (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Ich habe zum Umwandeln der Dokumente in pdf ein kleines Skript zusammengehackt, das (sehr einfache) Wiki-Syntax in LaTeX umwandelt. Aufruf z.B. mit

awk -f wiki2awk.tex -v doc="Satzung" Satzung.wiki

Es erwartet noch zwei weitere Dateien im aktuellen Verzeichnis: 'header.tex' und 'footer.tex'. Der Inhalt der Variable 'doc' wird bei header.tex in die Überschrift eingesetzt. Es ist weit davon entfernt davon, perfekt zu sein, z.B. wusste ich nicht, wie man pdflatex dazu bringt, UTF-8 im Quelltext zu unterstützen. Vielleicht kann's ja jemand verbessern.

BEGIN {
    if (doc == "") {
        print "Art des Dokuments mit '-v doc=Name' angeben."
        exit
    }
    while (getline < "header.tex") {
        gsub("##DOC##", doc)
        print
    }

    enumerate=0
    eenumerate=0
}

/.*/ {
    gsub("ä","\"a")
    gsub("ü","\"u")
    gsub("ö","\"o")
    gsub("Ä","\"A")
    gsub("Ü","\"U")
    gsub("Ö","\"O")
    gsub("ß","\"s")
    gsub("§","\\textsection")
    gsub("€","EUR")
}

/===.*===/ {
    gsub("^===","")
    gsub("===space:*$","")
    gsub(".*","\\paragraph{&}")
    print
    print "\n"
    next
}

/==.*==/ {
    gsub("^==","")
    gsub("==space:*$","")
    gsub(".*","\\section*{&}")
    print
    print "\n"
    next
}

/^*\*space:+.*/ {
    if (eenumerate == 0) {
        print "\\begin{itemize}"
        eenumerate=1
    }

    gsub("^*\*","") > 0
    gsub(".*","\\item &")
    print
    next
}

/^*space:+.*/ {
    if (eenumerate == 1) {
        print "\\end{itemize}"
        eenumerate = 0
    }

    if (enumerate == 0) {
        print "\\begin{itemize}"
        enumerate=1
    }

    gsub("^*","") > 0
    gsub(".*","\\item &")
    print
    next
}

/^space:*$/ {
    if (enumerate == 1) {
        print "\\end{itemize}"
    }

    if (eenumerate == 1) {
        print "\\end{itemize}"
    }

    print
    enumerate = 0
    eenumerate = 0
    next
}

//

END {
    print "\n\n"
    while (getline < "footer.tex") {
        print
    }
}

footer.tex

\begin{flushright}
Die Gr"undungsmitglieder,  Dresden, den 30. August 2005
\end{flushright}


\end{document}

header.tex

\documentclass[10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage{ngerman}
%\usepackage[utf-8]{babel}
\usepackage{geometry}
\geometry{verbose,a4paper,tmargin=20mm,bmargin=20mm,lmargin=20mm,rmargin=20mm}

%opening

\title{##DOC## Netzbiotop Dresden e.V.}

\begin{document}

\maketitle
Personal tools
Namespaces

Variants
Actions
Navigation
Tools