Wiki2tex.awk

Aus C3D2
Version vom 27. November 2006, 04:38 Uhr von Nulli (Diskussion | Beiträge) (footer.tex, header.tex merged)
Zur Navigation springen Zur Suche springen

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