#!/usr/bin/perl -w print "\nThis is LaTeX2ConTeXt. Version 2002-03-13\n"; print "I'll try to convert your LaTeX file for ConTeXt.\n"; print "copyleft Henning Hraban Ramm, http://www.fiee.net/texnique/\n\n"; unless ($ARGV[0]) {die "You must name a file to convert! $!"}; my $LaTeXDatei = $ARGV[0]; unless (-T $LaTeXDatei) { print "$LaTeXDatei not found!\n"; if (-T $LaTeXDatei.'.tex') { $LaTeXDatei .= ".tex"; } } # unless $LaTeXDatei =~ s/\\/\//g; rename ($LaTeXDatei, $LaTeXDatei.".bak"); open (QUELLE, $LaTeXDatei.".bak") or die "Can't open $LaTeXDatei! $!"; my $ConTeXtDatei = $LaTeXDatei; open (ZIEL, ">".$ConTeXtDatei) or die "Can't make $ConTeXtDatei! $!"; # Header (should be an extra file) print ZIEL "% interface=english output=pdftex\n"; print ZIEL "%D this \\ConTeXt\\ file is automatically converted from \\LaTeX.\n"; print ZIEL "\\enableregime[windows]\n"; print ZIEL "\\mainlanguage[de]\n"; print ZIEL "\\setupencoding[default=texnansi]\n"; print ZIEL "\n"; while () { # disable LaTeX header and some other commands s§^%!§%%% §; s§^(|\s)(\\document)(style|class)§%%% $2$3§g; s§^(|\s)(\\usepackage|\\setlength|\\addtolength|\\normalfont)§%%% $2§g; # s§^(|\s)(\\addtolength)§%%% $2§g; unless (m/^%/) { # if no comment line # raw convert environments s§\\begin{([^{}]*)}§\\start$1 §g; # \begin{environment} --> \startenvironment s§\\end{([^{}]*)}§\\stop$1 §g; # \end{environment} --> \stopenvironment s§\\begingroup§\\bgroup§g; s§\\endgroup§\\egroup§g; s§\\include(\s*){([^{}<>\[\]]*)}§\\input $2 §g; # \include{} --> \input # convert single commands s§\\newcommand§\\def§g; # \newcommand --> \def s§\\new(environment)(\s*){([^{}]*)}§\\define$1\[$3\]§g; # \newenvironment{} --> \defineenvironment[] s§\\label§\\reference§g; # \label --> \reference s§\\\\\*§\\\\§g; # \\* --> \\ s§\\(big|small)skip§\\blank\[$1\]§g; # \...skip --> \blank[...] s§\"`(.*)\"'§\\quote{$1}§g; s§``(.*)''§\\quotation{$1}§g; s§\\select(language){([^{}]*)}§\\$1\[$2\]§g; # \selectlanguage{lang} --> \language[lang] s§\\new(page)§\\$1§g; # \newpage --> \page s§\\(|this)pagestyle{empty}§\\setupheaders[state=stop]§g; s§\\(|this)pagestyle{([^{}]*)}§\\setupheaders[state=start] \% $2§g; s§\\areaset{([^{}]*)}{([^{}]*)}§\\setuplayout[width=$1, height=$2]§g; # s§LaTeX§ConTeXt§gi; # correct environments s§\\(start|stop)document§\\$1text§g; s§(\\startitemize)§$1\[1\]§g; s§\\(start|stop)enumeration§\\$1itemize[n]§g; s§\\(start|stop)(verbatim|alltt)§\\$1typing§g; s§\\(start|stop)verse§\\$1lines§g; s§\\(start|stop)center§\\$1centered§g; s§\\(start|stop)tabular(x*)§\\$1tabulate§g; s§\\(start|stop)long(table)§\\$1$2§g; s§\\(start|stop)multicols(\s*){(0-9)}§\\$1columns[n=$3]§g; s§\\twocolumn§\\startcolumns[n=2]§g; s§\\onecolumn§\\stopcolumns§g; # correct titles s§(\\part)(\**)§$1§g; # \part* --> \part s§\\chapter\*§\\title§g; s§\\(|sub)section\*§\\$1subject§g; s§\\paragraph§\\subsubsubsection§g; # s§§§g; # s§§§g; # correct tables s§(\\starttabulate)(\s*){([^{}]*)}§$1$2\[\|$3\|\]§g; s§&§\\NC §g; s§\\hline§\\HL§g; s§\\(top|bottom|mid)rule§\\HL§g; # correct typography s§\\verb(\||\+)([^\|]*)(\||\+)§\\type{$2}§g; s§\\verb§\\type§g; s§\\type{\\§\\tex{§g; s§\\texttt§\\type§g; s§\\emph{§{\\em §g; s§\\text(bf|sc|it|sl){§{\\$1 §g; s§\\(rm|ss|tt)family§\\switchtobodyfont\[$1\]§g; s§\\small §\\tfx §g; s§\\Small §\\tfxx §g; s§\\large §\\tfa §g; s§\\Large §\\tfb §g; } # unless comment line print ZIEL; print "."; } # while print "\n"; close (ZIEL); close (QUELLE);