On Mon, 13 Dec 1999, Martin Sander wrote:
> Werner Arnhold wrote:
> >
> >
> > I send you an example, a little birthday song adapted from pmx -- tex --
> > latex + verse. I hope it helps. I just made a little python script to do
> > the conversion automatically, tell me if you are interested.
> >
> Oh, yes! I _should_ be interested!!
>
> Regards,
>
> Martin
Ok, here the little python script. It isn't in any way a general solution
but only fitting for what comes out from rosegarden. It depends on the fact
that rosegarden gives an output in a special way. If this doesn't fit for
you, send me a file from yours, maybe I can adopt the script.
I have added the "a4blatt.sty" missing with the examples (for Christian).
It just defines a paper with more textwidth and -height.
Hope this helps.
Bye
Werner
Werner Arnhold Fritz-Karsen-Schule
Feldspatweg 7 Onkel-Br�sig-Str. 76-78
D-12349 Berlin D-12359 Berlin
[EMAIL PROTECTED] [EMAIL PROTECTED]
%Grundzeilenabstand 1/6in = 4,23mm (DIN 2107,2142)
\newdimen\GZA
\GZA=1in
\divide\GZA by 6
\oddsidemargin 0pt \evensidemargin 0pt \marginparwidth 90pt \marginparsep
11pt \marginparpush 5pt
\topmargin -2\GZA \headheight 1\GZA \headsep 2\GZA %\footheight 12pt
\footskip 25pt \topskip 1\GZA
\textheight 55\GZA \textwidth 6in \columnsep 10pt \columnseprule 0pt
#! /usr/local/bin/python
# pmx2latex - Erzeugt aus einer von Rosegarden generierten PMX-Datei ein
# LaTeX-MusiXTeX-Dokument
# W. Arnhold 25.09.1999
# letzte Aenderung 25.09.1999
import os
import os.path
import sys
import string
def enthaelt(quelle, such):
return len(string.splitfields(quelle, such)) > 1
def dateinamen_pruefen():
global dateiname, dateiname_alt, dateibasename
if len(sys.argv) != 2:
print 'Gebrauch: %s <Datei>'%sys.argv[0]
sys.exit(-1)
d = string.splitfields(sys.argv[1], '.pmx')
if len(d) == 1:
dateiname_alt = sys.argv[1] + '.pmx'
elif len(d) == 2 and not d[1]:
dateiname_alt = sys.argv[1]
else:
print 'Falscher Dateiname: %s!'%sys.argv[1]
sys.exit (-1)
if not os.path.exists(dateiname_alt):
print 'Die Datei %s existiert nicht!'%dateiname_alt
dateiname = dateiname_alt
dateiname_alt = dateiname_alt + '.0'
dateibasename = string.splitfields(dateiname, '.pmx')[0]
print 'Dateiname (alt): %s, neu: %s, base %s'%\
(dateiname_alt, dateiname, dateibasename)
def pmx_machen():
command = 'mv %s %s'%(dateiname, dateiname_alt)
print command
if os.system(command):
print 'Umbenennen der Eingabedatei misslungen'
sys.exit (-1)
datalt = open(dateiname_alt, 'r')
datneu = open(dateiname, 'w')
datneu.write('---\n')
datneu.write('\\input musixtex\\\n')
datneu.write('\\input musixlyr\\\n')
datneu.write('---\n')
while 1:
einzeile = datalt.readline()
if enthaelt(einzeile, 'number of staffs'):
datneu.write(einzeile)
einzeile = datalt.readline()
anzahl_notensysteme = eval(einzeile[:-1])
print '%d Notensysteme'%anzahl_notensysteme
if enthaelt(einzeile, 'anacrusis'):
datneu.write(einzeile)
einzeile = datalt.readline()
auftaktschlaege = eval(einzeile[:-1])
print 'Auftakt: %d' % auftaktschlaege
if enthaelt(einzeile, 'indentation'):
datneu.write(einzeile)
dummy = datalt.readline()
datneu.write('0.000000\n')
break
datneu.write(einzeile)
for i in range(anzahl_notensysteme):
dummy = datalt.readline()
datneu.write('\n')
while 1:
einzeile = datalt.readline()
if not einzeile:
break
if auftaktschlaege > 0 and enthaelt(einzeile, 'Bar 1'):
datneu.write(einzeile)
l1 = []
l2 = []
for i in range(anzahl_notensysteme):
einzeile = datalt.readline()
l1.append(einzeile[:-2])
dummy = datalt.readline()
for i in range(anzahl_notensysteme):
einzeile = datalt.readline()
l2.append(einzeile)
for i in range(anzahl_notensysteme):
datneu.write(l1[i] + l2[i])
else:
datneu.write(einzeile)
datneu.close()
datalt.close()
command = 'pmx %s'%dateibasename
if os.system(command):
print 'Aufruf von PMX misslungen'
sys.exit(-1)
# Jetzt TeX in LaTeX umwandeln
def tex_nach_latex():
dateiname = dateibasename + '.tex'
dateiname_alt = dateibasename + '.tex.0'
if not os.path.exists(dateiname):
print 'Keine TeX-Datei erzeugt!'
sys.exit(-1)
command = 'mv %s %s' % (dateiname, dateiname_alt)
if os.system(command):
print 'Umbenennen der TeX-Quelle misslungen'
sys.exit(-1)
datalt = open(dateiname_alt, 'r')
datneu = open(dateiname, 'w')
datneu.write('\\documentclass{article}\n')
datneu.write('\\usepackage{a4blatt}\n')
datneu.write('\\usepackage[latin1]{inputenc}\n')
datneu.write('\\textheight= 50\\baselineskip\n')
datneu.write('\\textwidth= 210mm \\advance\\textwidth-2in %\n')
datneu.write('\\usepackage{musixtex}\n')
datneu.write('\\pagestyle{empty}\n')
for i in range(5):
einzeile = datalt.readline()
datneu.write(einzeile)
for i in range(10):
dummy = datalt.readline()
datneu.write('\\input musixlyr\n')
datneu.write('\\input pmx\n')
datneu.write('\\input musixmad\n')
datneu.write('\\input mymumacs\n')
datneu.write('\\smallmusicsize%\n')
datneu.write('\\begin{document}\n')
datneu.write('\\tracingstats=2\\relax\n')
datneu.write('\\hsize=424pt\n')
datneu.write('\\vsize=740pt\n')
while 1:
einzeile = datalt.readline()
if enthaelt(einzeile, '\\bye'):
break
datneu.write(einzeile)
datneu.write('\\end{document}\n')
datalt.close()
datneu.close()
dateinamen_pruefen()
pmx_machen()
tex_nach_latex()