-#! /usr/bin/env python
# -*- coding: utf-8 -*-
# file lyxpreview2bitmap.py
# --fg=<color>: The foreground color as a hexadecimal string, eg '000000'.
# --bg=<color>: The background color as a hexadecimal string, eg 'faf0e6'.
# --latex=<exe>: The converter for latex files. Default is latex.
+# --bibtex=<exe>: The converter for bibtex files. Default is bibtex.
# --lilypond: Preprocess through lilypond-book. Default is false.
# --lilypond-book=<exe>:
# The converter for lytex files. Default is lilypond-book.
from legacy_lyxpreview2ppm import legacy_conversion_step1
-from lyxpreview_tools import copyfileobj, error, filter_pages, find_exe, \
- find_exe_or_terminate, join_metrics_and_rename, latex_commands, \
- latex_file_re, make_texcolor, mkstemp, pdflatex_commands, progress, \
- run_command, warning, write_metrics_info
+from lyxpreview_tools import bibtex_commands, copyfileobj, error, \
+ filter_pages, find_exe, find_exe_or_terminate, join_metrics_and_rename, \
+ latex_commands, latex_file_re, make_texcolor, mkstemp, pdflatex_commands, \
+ progress, run_command, run_latex, run_tex, warning, write_metrics_info
def usage(prog_name):
--fg=<color>: Foreground color (default: black, ie '000000')
--bg=<color>: Background color (default: white, ie 'ffffff')
--latex=<exe>: Specify the executable for latex (default: latex)
+ --bibtex=<exe>: Specify the executable for bibtex (default: bibtex)
--lilypond: Preprocess through lilypond-book (default: false)
--lilypond-book=<exe>:
The executable for lilypond-book (default: lilypond-book)
return results
-def color_pdf(latex_file, bg_color, fg_color):
- use_preview_pdf_re = re.compile("(\s*\\\\usepackage\[[^]]+)((pdftex|xetex)\]{preview})")
-
- tmp = mkstemp()
-
- fg = ""
- if fg_color != "0.000000,0.000000,0.000000":
- fg = ' \\AtBeginDocument{\\let\\oldpreview\\preview\\renewcommand\\preview{\\oldpreview\\color[rgb]{%s}}}\n' % (fg_color)
-
- success = 0
- try:
- for line in open(latex_file, 'r').readlines():
- match = use_preview_pdf_re.match(line)
- if match == None:
- tmp.write(line)
- continue
- success = 1
- tmp.write(" \\usepackage{color}\n" \
- " \\pagecolor[rgb]{%s}\n" \
- "%s" \
- "%s\n" \
- % (bg_color, fg, match.group()))
- continue
-
- except:
- # Unable to open the file, but do nothing here because
- # the calling function will act on the value of 'success'.
- warning('Warning in color_pdf! Unable to open "%s"' % latex_file)
- warning(`sys.exc_type` + ',' + `sys.exc_value`)
-
- if success:
- copyfileobj(tmp, open(latex_file,"wb"), 1)
-
- return success
-
-
def fix_latex_file(latex_file):
documentclass_re = re.compile("(\\\\documentclass\[)(1[012]pt,?)(.+)")
dpi = 128
fg_color = "000000"
bg_color = "ffffff"
+ bibtex = None
latex = None
lilypond = False
lilypond_book = None
# Parse and manipulate the command line arguments.
try:
- (opts, args) = getopt.gnu_getopt(argv[1:], "dhv", ["bg=", "debug",
- "dpi=", "fg=", "help", "latex=", "lilypond", "lilypond-book=",
- "png", "ppm", "verbose"])
+ (opts, args) = getopt.gnu_getopt(argv[1:], "dhv", ["bibtex=", "bg=",
+ "debug", "dpi=", "fg=", "help", "latex=", "lilypond",
+ "lilypond-book=", "png", "ppm", "verbose"])
except getopt.GetoptError, err:
error("%s\n%s" % (err, usage(script_name)))
if opt in ("-h", "--help"):
print usage(script_name)
sys.exit(0)
+ elif opt == "--bibtex":
+ bibtex = [val]
elif opt == "--bg":
bg_color = val
elif opt in ("-d", "--debug"):
fg_color_dvipng = make_texcolor(fg_color, False)
bg_color_dvipng = make_texcolor(bg_color, False)
- fg_color_gr = make_texcolor(fg_color, True)
- bg_color_gr = make_texcolor(bg_color, True)
-
# External programs used by the script.
latex = find_exe_or_terminate(latex or latex_commands)
+ bibtex = find_exe(bibtex or bibtex_commands)
if lilypond:
- lilypond_book = find_exe_or_terminate(lilypond_book or ["lilypond-book"])
+ lilypond_book = find_exe_or_terminate(lilypond_book or
+ ["lilypond-book --safe"])
# These flavors of latex are known to produce pdf output
pdf_output = latex in pdflatex_commands
progress("Latex command: %s" % latex)
progress("Latex produces pdf output: %s" % pdf_output)
+ progress("Bibtex command: %s" % bibtex)
progress("Lilypond-book command: %s" % lilypond_book)
progress("Preprocess through lilypond-book: %s" % lilypond)
progress("Altering the latex file for font size and colors")
# Omit font size specification in latex file.
- if not fix_latex_file(latex_file):
- warning("Unable to remove font size from the latex file")
+ fix_latex_file(latex_file)
if lilypond:
progress("Preprocess the latex file through %s" % lilypond_book)
if pdf_output:
- lilypond_book += ' --pdf'
+ lilypond_book += " --pdf"
+ lilypond_book += " --latex-program=%s" % latex.split()[0]
# Make a copy of the latex file
lytex_file = latex_file_re.sub(".lytex", latex_file)
shutil.copyfile(latex_file, lytex_file)
# Preprocess the latex file through lilypond-book.
- lytex_call = '%s --safe --latex-program=%s "%s"' % (lilypond_book,
- latex, lytex_file)
- lytex_status, lytex_stdout = run_command(lytex_call)
- if lytex_status:
- warning("%s failed to compile %s" \
- % (os.path.basename(lilypond_book), lytex_file))
+ lytex_status, lytex_stdout = run_tex(lilypond_book, lytex_file)
if pdf_output:
progress("Using the legacy conversion method (PDF support)")
return legacy_conversion_step1(latex_file, dpi, output_format,
fg_color, bg_color, latex, pdf_output)
- # Move color information for PDF into the latex file.
- if not color_pdf(latex_file, bg_color_gr, fg_color_gr):
- warning("Unable to move color info into the latex file")
-
# Compile the latex file.
- latex_call = '%s "%s"' % (latex, latex_file)
-
- latex_status, latex_stdout = run_command(latex_call)
+ latex_status, latex_stdout = run_latex(latex, latex_file, bibtex)
if latex_status:
- warning("%s had problems compiling %s" \
- % (os.path.basename(latex), latex_file))
+ return (latex_status, [])
# The dvi output file name
dvi_file = latex_file_re.sub(".dvi", latex_file)
return (0, dvipng_metrics)
if __name__ == "__main__":
- exit(main(sys.argv)[0])
+ sys.exit(main(sys.argv)[0])