Bash, sed: 228 223 197 (242 - 70) = 172
c=${5:-=};R=$c;L=;for f in r l;do
e="sed -e ";$e"$ d;s/$\| */ \n/g" $1>m
o=1;for w in `$e"$ p;d" $1`;do
$e"$o,/^$w /s/^$w /$L$w$R /" m>n;o="/$c/"
cp n m;done;tr -d \\n<n|fold -sw${2:-35}|$e"s/$c/ /g">$f
L=$c;R=;done;pr -tmw${3:-80} ${4:-l r}
Se o script estiver em um arquivo executável chamado "estéreo", digite
stereo file.in [column_width [page_width ["r l"]]]
column_width é um número; 25-45 funcionará, o padrão é 35.
page_width é um número, deve ter aproximadamente o dobro da column_width, o padrão é 80
Para visualização em vesgo, use "r l" como o quarto argumento. O padrão é "l r", que é configurado para visualização paralela.
EDIT: reescreva para dividir o arquivo em uma palavra por linha e depois remonte no final. Nota: reserva o sinal "=" para uso próprio. Qualquer sinal de "=" no arquivo de entrada ficará em branco.
EDIT: Se a sua mensagem tiver sinais "=", você poderá escolher outro símbolo para o script, fornecendo-o como o quinto parâmetro.
Exemplo
Entrada: vegetarianism.txt:
I invented vegetarianism. It is a diet involving no meat, just
vegetables. It is also common in cows - they are awesome.
vegetarianism. is awesome.
Resultado
./stereo vegetarianism.txt 32 72 "l r": | expandir (usando os dois pontos para seu símbolo de trabalho interno)
I invented vegetarianism. It I invented vegetarianism. It
is a diet involving no meat, is a diet involving no meat,
just vegetables. It is also just vegetables. It is also
common in cows - they are common in cows - they are
awesome. awesome.
./stereo washington.txt 35 75 "l r" | expandir
In a little district west of In a little district west of
Washington Square the streets Washington Square the streets
have run crazy and broken have run crazy and broken
themselves into small strips themselves into small strips
called 'places'. These 'places' called 'places'. These 'places'
make strange angles and curves. make strange angles and curves.
One Street crosses itself a time One Street crosses itself a time
or two. An artist once discovered or two. An artist once discovered
a valuable possibility in this a valuable possibility in this
street. Suppose a collector with a street. Suppose a collector with a
bill for paints, paper and canvas bill for paints, paper and canvas
should, in traversing this route, should, in traversing this route,
suddenly meet himself coming suddenly meet himself coming
back, without a cent having been back, without a cent having been
paid on account! paid on account!
O "| expand" não é necessário, mas ao mudar a saída em 4 locais, os TABs são manipulados incorretamente. Pode ser colocado no script a um custo de 7 bytes.
Variação do ImageMagick
Substituindo a última linha por um comando ImageMagick de texto para imagem:
c=${6:-=};R=$c;L=;for f in r l;do
e="sed -e ";$e"$ d;s/$\| */ \n/g" $1>m
o=1;for w in `$e"$ p;d" $1`;do
$e"$o,/^$w /s/^$w /$L$w$R /" m>n;o="/$c/"
cp n m;done;tr -d \\n<n|fold -sw${2:-35}|$e"s/$c/ /g">$f
L=$c;R=;done;
convert -border 10x30 label:@${4:-l} label:@${5:-r} +append show:
Neste, o "r" e "l" para visualização cruzada versus visualização paralela são argumentos separados:
./im_stereo vegetarianism.txt 40 80 lr =
(fonte: simplesystems.org )
EDIT 3: Adicionado variação do ImageMagick.