#!/usr/bin/perl
use strict;
use warnings;

my @lineterm=qw(& & \\\\);
my $state=0;my $mline=0;
while (my $line=<>) {
    if ($state==0) {
        if ($line=~/matrix/) {$state=1};
    }
    if ($state==1) {
        if ($line=~/{/) {$state=2};
    }
    if ($line=~/\\end/) {$state=3}
    if ($state==2) {
        $line=~s[}\s*(&|\\\\|)\s*(%.*)?$][} $lineterm[$mline%3] $2\n]
            and ++$mline;
    }
    print $line;
    if ($mline==18) {
        $mline=0;
        print <<'EOM';
};
\end{tikzpicture}

\begin{tikzpicture}
\matrix
{
EOM
    }
}
