* src/graphics/GraphicsConverter.C
(build_script): Change the current directory to the directory of
the output file
* src/converter.C
(Converters::convert): Add comment
* lib/external_templates: Add lilypond template
* lib/configure.py
(checkFormatEntries): Add lilypond format
(checkConverterEntries): Add lilypond converter
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15245
a592a061-630c-0410-9148-
cb99ea01b6c8
\Format docbook sgml DocBook B "" "%%" "document"
\Format docbook-xml xml "Docbook (XML)" "" "" "%%" "document"
\Format literate nw NoWeb N "" "%%" "document"
+\Format lilypond ly "LilyPond music" "" "" "%%" "vector"
\Format latex tex "LaTeX (plain)" L "" "%%" "document"
\Format linuxdoc sgml LinuxDoc x "" "%%" "document"
\Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document"
'latex2html -no_subdir -split 0 -show_section_numbers $$i', 'hevea -s $$i'],
rc_entry = [ r'\converter latex html "%%" "originaldir,needaux"' ])
#
+ path, lilypond = checkProg('a LilyPond -> ESP/PDF/PNG converter', ['lilypond'])
+ if (lilypond != ''):
+ version_string = cmdOutput("lilypond --version")
+ match = re.match('GNU LilyPond (\S+)', version_string)
+ if match:
+ version_number = match.groups()[0]
+ version = version_number.split('.')
+ if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 6):
+ addToRC(r'''\converter lilypond eps "lilypond -b eps --ps $$i" ""
+\converter lilypond png "lilypond -b eps --png $$i" ""''')
+ if int(version[0]) > 2 or (len(version) > 1 and int(version[0]) == 2 and int(version[1]) >= 9):
+ addToRC(r'\converter lilypond pdf "lilypond -b eps --pdf $$i" ""')
+ print '+ found LilyPond version %s.' % version_number
+ else:
+ print '+ found LilyPond, but version %s is too old.' % version_number
+ else:
+ print '+ found LilyPond, but could not extract version number.'
+ #
# FIXME: no rc_entry? comment it out
# checkProg('Image converter', ['convert $$i $$o'])
#
TemplateEnd
+Template LilyPond
+ GuiName "Lilypond typeset music"
+ HelpText
+ Sheet music typeset by GNU LilyPond,
+ converted to .pdf or .eps for inclusion
+ Using .eps requires at least lilypond 2.6
+ Using .pdf requires at least lilypond 2.9
+ HelpTextEnd
+ InputFormat "lilypond"
+ FileFilter "*.ly"
+ AutomaticProduction true
+ Transform Rotate
+ Transform Resize
+ Transform Clip
+ Transform Extra
+ Format LaTeX
+ TransformOption Rotate RotationLatexOption
+ TransformOption Resize ResizeLatexOption
+ TransformOption Clip ClipLatexOption
+ TransformOption Extra ExtraOption
+ Option Arg "[$$Extra,$$Rotate,$$Resize,$$Clip]"
+ Product "\\includegraphics$$Arg{$$AbsOrRelPathMaster$$Basename}"
+ UpdateFormat eps
+ UpdateResult "$$AbsPath$$Basename.eps"
+ Requirement "graphicx"
+ ReferencedFile latex "$$AbsPath$$Basename.eps"
+ ReferencedFile dvi "$$AbsPath$$Basename.eps"
+ FormatEnd
+ Format PDFLaTeX
+ TransformOption Rotate RotationLatexOption
+ TransformOption Resize ResizeLatexOption
+ TransformOption Clip ClipLatexOption
+ TransformOption Extra ExtraOption
+ Option Arg "[$$Extra,$$Rotate,$$Resize,$$Clip]"
+ Product "\\includegraphics$$Arg{$$AbsOrRelPathMaster$$Basename}"
+ UpdateFormat pdf
+ UpdateResult "$$AbsPath$$Basename.pdf"
+ Requirement "graphicx"
+ ReferencedFile pdflatex "$$AbsPath$$Basename.pdf"
+ FormatEnd
+ Format Ascii
+ Product "[LilyPond: $$FName]"
+ FormatEnd
+ Format DocBook
+ Product "[LilyPond: $$FName]"
+ FormatEnd
+TemplateEnd
+
+
Template Date
GuiName "Date"
HelpText
}
OutputParams runparams;
runparams.flavor = getFlavor(edgepath);
+
+ // Some converters (e.g. lilypond) can only output files to the
+ // current directory, so we need to change the current directory.
+ // This has the added benefit that all other files that may be
+ // generated by the converter are deleted when LyX closes and do not
+ // clutter the real working directory.
string path = onlyPath(from_file);
Path p(path);
+
// empty the error list before any new conversion takes place.
errorList.clear();
"outfile = " << quoteName(outfile, quote_python) << "\n"
"shutil.copy(infile, outfile)\n";
+ // Some converters (e.g. lilypond) can only output files to the
+ // current directory, so we need to change the current directory.
+ // This has the added benefit that all other files that may be
+ // generated by the converter are deleted when LyX closes and do not
+ // clutter the real working directory.
+ script << "os.chdir(" << quoteName(onlyPath(outfile)) << ")\n";
+
if (edgepath.empty()) {
// Either from_format is unknown or we don't have a
// converter path from from_format to to_format, so we use