Man muss zwar immernoch drübergucken, aber meist sind nur noch Kleinigkeiten manuell zu machen. Und es Ist natürlich auf meinen Schreibstil und meine Abkürzungen angepasst.
- Code: Alles auswählen
#! /bin/bash
#
# Umwandeln von LaTeX-Code in Forum-Code
#
# Ein primitives sed-Script, dass hauptsaechlich an der richtigen Stelle die
# [tex]-Marken einfuegt und einige Befehle in mimeTeX-lesbare Form umwandelt.
#
# Stefan Kriwanek
# rev. 2008-10-18
#
# Was es (z.B.) nicht kann:
# \intertext-Umgebungen, die über mehr als eine Zeile gehen, oder \(\)-Umgebungen enthalten
# $$ $$ anstatt der \[ \] oder $ $ anstatt \( \)
#
# Aufruf mit
# tex2mimetex.sh datei.als.tex [datei.als.mimetex]
#
#
if [ $# -ge 1 ]
then
ff1=$1
if [ $# -eq 2 ]
then
ff2=$2
else
ff2=${ff1}.mimetex.txt
fi
# Das Leerzeichen hinter jedem Eintrag ist wichtig.
# Kommentarzeilen
sstat=$sstat'-e /^%/d '
# Kommentare, die nicht am Anfang stehen.
sstat=$sstat'-e s;[^\]%.*$;; '
# Mathe-Umgebungen
sstat=$sstat'-e s;\\\(\[\|(\);\[tex\];g '
sstat=$sstat'-e s;\\\(\]\|)\);\[/tex\];g '
sstat=$sstat'-e s;\\begin{\(align\|gather\|eqnarray\|equation\)\*\?};\[tex\]&;g '
sstat=$sstat'-e s;\\end{\(align\|gather\|eqnarray\|equation\)\*\?};&\[/tex\];g '
sstat=$sstat'-e s;\\begin{proof};\[i\]Beweis.\[/i\]; '
sstat=$sstat'-e s;\\end{proof};\[i\]q.e.d.\[/i\]; '
sstat=$sstat'-e s;\\begin{itemize};\[list\]; '
sstat=$sstat'-e s;\\end{itemize};\[/list\]; '
sstat=$sstat'-e s;\\item;\[\*\]; '
sstat=$sstat'-e s;\\intertext{\([^{}]*\)};\\\\\\text{\1}\\\\; '
sstat=$sstat'-e s;\\qedhere;; '
#
sstat=$sstat'-e s;\\section{\([^{}]*\)};[size=150]\1[/size]; '
sstat=$sstat'-e s;\\subsection{\([^{}]*\)};[b]\1[/b]; '
sstat=$sstat'-e s;\\subsubsection{\([^{}]*\)};[b][i]\1[/i][/b]; '
sstat=$sstat'-e s;\\\(frac\)[\x20\x09\]\([^{]\)\([^{]\);\\\1{\2}{\3};g '
sstat=$sstat'-e s;\\\(frac\)[\x20\x09\]\([^{]\){;\\\1{\2}{;g '
sstat=$sstat'-e s;\\\(frac\)[\x20\x09\]{\([^{}]*\)}\([^{]\);\\\1{\2}{\3};g '
# '\ ' -> ' '
sstat=$sstat'-e s;\\\x20;\x20;g '
# Umlaute
sstat=$sstat'-e s;\\\"a;ä;g '
sstat=$sstat'-e s;\\\"o;ö;g '
sstat=$sstat'-e s;\\\"u;ü;g '
sstat=$sstat'-e s;\\\"A;Ä;g '
sstat=$sstat'-e s;\\\"O;Ö;g '
sstat=$sstat'-e s;\\\"U;Ü;g '
sstat=$sstat'-e s;\"a;ä;g '
sstat=$sstat'-e s;\"o;ö;g '
sstat=$sstat'-e s;\"u;ü;g '
sstat=$sstat'-e s;\"A;Ä;g '
sstat=$sstat'-e s;\"O;Ö;g '
sstat=$sstat'-e s;\"U;Ü;g '
# (Leerzeichen ist \x20, Tab ist \x09)
sstat=$sstat'-e s;\\ss[\x20\x09\\];ß;g '
sstat=$sstat'-e s;\\ss$;ß;g '
# eigene Kommandos muss er auch wissen
sstat=$sstat'-e s;\\dd\([tx]\);\\frac{\\text{d}}{\\text{d}\1};g '
sstat=$sstat'-e s;\\dd^;\\text{d}^;g '
sstat=$sstat'-e s;\\dd\\;\\text{d}\\;g '
sstat=$sstat'-e s;\\dd\(\x20\|\x09\|$\);\\text{d}\x20;g '
sstat=$sstat'-e s;\\pt\(\x20\|\x09\|$\);\\partial_;g '
sstat=$sstat'-e s;\\pt{};\\partial\x20;g '
sstat=$sstat'-e s;\\pp{\([^{]*\)}{\([^{]*\)};\\frac{\\partial{\1}}{\\partial{\2}};g '
sstat=$sstat'-e s;\\ppt{\([^{]*\)};\\frac{\\partial{\1}}{\\partial{t}};g '
sstat=$sstat'-e s;\\stackvec{\([^{}]*\)};\\begin{pmatrix}\1\\end{pmatrix};g '
# Die Forum-Software möchte immer geschweifte Klammern haben, auch wenn bloß ein Zeichen gemeint ist, sonst gibt's falsche Formatierungen
sstat=$sstat'-e s;\\\(ddot\|dot\|mathbb\|sqrt\|text\|vec\)[\x20\x09]\([^{]\);\\\1{\2};g '
# eigene
sstat=$sstat'-e s;\\\(pt\)[\x20\x09]\([^{]\);\\\1{\2};g '
sed $sstat < $ff1 > $ff2
else
echo "Zu wenig Parameter"
fi