'''utility function: run a command and get its output as a string
cmd: command to run
'''
- output = subprocess.check_output(cmd, shell=True)
+ if os.name == 'nt':
+ b = False
+ cmd = 'cmd /d /c pushd ' + os.getcwd() + '&' + cmd
+ else:
+ b = True
+ pipe = subprocess.Popen(cmd, shell=b, close_fds=b, stdin=subprocess.PIPE, \
+ stdout=subprocess.PIPE, universal_newlines=True)
+ pipe.stdin.close()
+ output = pipe.stdout.read()
+ pipe.stdout.close()
return output.strip()
from tempfile import mkstemp
fd, tmpfname = mkstemp(suffix='.ltx')
if os.name == 'nt':
+ from locale import getdefaultlocale
from ctypes import windll, create_unicode_buffer
GetShortPathName = windll.kernel32.GetShortPathNameW
- longname = unicode(tmpfname)
+ language, encoding = getdefaultlocale()
+ if encoding == None:
+ encoding = 'latin1'
+ longname = unicode(tmpfname, encoding)
shortlen = GetShortPathName(longname, 0, 0)
shortname = create_unicode_buffer(shortlen)
if GetShortPathName(longname, shortname, shortlen):
inpname = tmpfname.replace('\\', '/')
else:
inpname = cmdOutput('cygpath -m ' + tmpfname)
- logname = os.path.basename(inpname.replace('.ltx', '.log'))
+ logname = os.path.basename(re.sub("(?i).ltx", ".log", inpname))
inpname = inpname.replace('~', '\\string~')
os.write(fd, r'\relax')
os.close(fd)
sys.exit(2)
logger.info('checking for ' + description + '...')
## print '(' + ','.join(progs) + ')',
+ global java, perl
for idx in range(len(progs)):
# ac_prog may have options, ac_word is the command name
ac_prog = progs[idx]
ac_word = ac_prog.split(' ')[0]
+ if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '':
+ continue
+ if ac_word.endswith('.pl') and perl == '':
+ continue
msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path
extlist = ['']
for ext in extlist:
if os.path.isfile( os.path.join(ac_dir, ac_word + ext) ):
logger.info(msg + ' yes')
+ # deal with java and perl
+ if ac_word.endswith('.class'):
+ ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6])))
+ elif ac_word.endswith('.jar'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
+ elif ac_word.endswith('.pl'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if len(rc_entry) == 1:
addToRC(rc_entry[0].replace('%%', ac_prog))
found_prime = False
real_ac_dir = ''
real_ac_word = not_found
+ global java, perl
for idx in range(len(progs)):
# ac_prog may have options, ac_word is the command name
ac_prog = progs[idx]
ac_word = ac_prog.split(' ')[0]
+ if (ac_word.endswith('.class') or ac_word.endswith('.jar')) and java == '':
+ continue
+ if ac_word.endswith('.pl') and perl == '':
+ continue
msg = '+checking for "' + ac_word + '"... '
path = os.environ["PATH"].split(os.pathsep) + path
extlist = ['']
logger.info(msg + ' yes')
pr = re.compile(r'(\\\S+)(.*)$')
m = None
+ # deal with java and perl
+ if ac_word.endswith('.class'):
+ ac_prog = ac_prog.replace(ac_word, r'%s \"%s\"' % (java, os.path.join(ac_dir, ac_word[:-6])))
+ elif ac_word.endswith('.jar'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -jar \"%s\"' % (java, os.path.join(ac_dir, ac_word)))
+ elif ac_word.endswith('.pl'):
+ ac_prog = ac_prog.replace(ac_word, r'%s -w \"%s\"' % (perl, os.path.join(ac_dir, ac_word)))
# write rc entries for this command
if found_prime == False:
if len(rc_entry) == 1:
if len(rcs) == 1:
m = r.match(rcs[0])
if m:
- alt = '\n'.join([s + m.group(1) + " %%" for s in alt_tokens])
+ alt = '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens])
elif len(rcs) > 1:
m = r.match(rcs[idxx])
if m:
if idxx > 0:
alt += '\n'
- alt += '\n'.join([s + m.group(1) + " %%" for s in alt_tokens])
+ alt += '\n'.join([s + m.group(1) + ' "%%"' for s in alt_tokens])
return alt
# run platex on chklatex.ltx and check result
if cmdOutput(PLATEX + ' chklatex.ltx').find('pLaTeX2e') != -1:
# We have the Japanese pLaTeX2e
- addToRC(r'\converter platex dvi "%s" "latex=platex"' % PLATEX)
+ addToRC(r'\converter platex dvi "%s -kanji=$$E $$i" "latex=platex"' % PLATEX)
else:
PLATEX = ''
removeFiles(['chklatex.ltx', 'chklatex.log'])
def checkFormatEntries(dtl_tools):
''' Check all formats (\Format entries) '''
checkViewerEditor('a Tgif viewer and editor', ['tgif'],
- rc_entry = [r'\Format tgif obj Tgif "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format tgif "obj, tgo" Tgif "" "%%" "%%" "vector" "application/x-tgif"'])
#
checkViewerEditor('a FIG viewer and editor', ['xfig', 'jfig3-itext.jar', 'jfig3.jar'],
- rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format fig fig FIG "" "%%" "%%" "vector" "application/x-xfig"'])
#
checkViewerEditor('a Dia viewer and editor', ['dia'],
- rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format dia dia DIA "" "%%" "%%" "vector,zipped=native", "application/x-dia-diagram"'])
+ #
+ checkViewerEditor('an OpenOffice drawing viewer and editor', ['libreoffice', 'lodraw', 'ooffice', 'oodraw', 'soffice'],
+ rc_entry = [r'\Format odg "odg, sxd" "OpenOffice drawing" "" "%%" "%%" "vector,zipped=native" "application/vnd.oasis.opendocument.graphics"'])
#
checkViewerEditor('a Grace viewer and editor', ['xmgrace'],
- rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format agr agr Grace "" "%%" "%%" "vector" ""'])
#
checkViewerEditor('a FEN viewer and editor', ['xboard -lpf $$i -mode EditPosition'],
- rc_entry = [r'\Format fen fen FEN "" "%%" "%%" ""'])
+ rc_entry = [r'\Format fen fen FEN "" "%%" "%%" "" ""'])
#
checkViewerEditor('a SVG viewer and editor', ['inkscape'],
- rc_entry = [r'\Format svg svg SVG "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format svg svg SVG "" "%%" "%%" "vector" "image/svg+xml"'])
#
- path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'],
- rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" ""
-\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
-\Format pbm pbm PBM "" "%s" "%s" ""
-\Format pgm pgm PGM "" "%s" "%s" ""
-\Format png png PNG "" "%s" "%s" ""
-\Format ppm ppm PPM "" "%s" "%s" ""
-\Format tiff tif TIFF "" "%s" "%s" ""
-\Format xbm xbm XBM "" "%s" "%s" ""
-\Format xpm xpm XPM "" "%s" "%s" ""'''])
- path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'],
- rc_entry = [r'''\Format bmp bmp BMP "" "%s" "%s" ""
-\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
-\Format pbm pbm PBM "" "%s" "%s" ""
-\Format pgm pgm PGM "" "%s" "%s" ""
-\Format png png PNG "" "%s" "%s" ""
-\Format ppm ppm PPM "" "%s" "%s" ""
-\Format tiff tif TIFF "" "%s" "%s" ""
-\Format xbm xbm XBM "" "%s" "%s" ""
-\Format xpm xpm XPM "" "%s" "%s" ""'''])
- addToRC(r'''\Format bmp bmp BMP "" "%s" "%s" ""
-\Format gif gif GIF "" "%s" "%s" ""
-\Format jpg jpg JPEG "" "%s" "%s" ""
-\Format pbm pbm PBM "" "%s" "%s" ""
-\Format pgm pgm PGM "" "%s" "%s" ""
-\Format png png PNG "" "%s" "%s" ""
-\Format ppm ppm PPM "" "%s" "%s" ""
-\Format tiff tif TIFF "" "%s" "%s" ""
-\Format xbm xbm XBM "" "%s" "%s" ""
-\Format xpm xpm XPM "" "%s" "%s" ""''' % \
+ imageformats = r'''\Format bmp bmp BMP "" "%s" "%s" "" "image/x-bmp"
+\Format gif gif GIF "" "%s" "%s" "" "image/gif"
+\Format jpg "jpg, jpeg" JPEG "" "%s" "%s" "" "image/jpeg"
+\Format pbm pbm PBM "" "%s" "%s" "" "image/x-portable-bitmap"
+\Format pgm pgm PGM "" "%s" "%s" "" "image/x-portable-graymap"
+\Format png png PNG "" "%s" "%s" "" "image/x-png"
+\Format ppm ppm PPM "" "%s" "%s" "" "image/x-portable-pixmap"
+\Format tiff tif TIFF "" "%s" "%s" "" "image/tiff"
+\Format xbm xbm XBM "" "%s" "%s" "" "image/x-xbitmap"
+\Format xpm xpm XPM "" "%s" "%s" "" "image/x-xpixmap"'''
+ path, iv = checkViewerNoRC('a raster image viewer', ['xv', 'kview', 'gimp-remote', 'gimp'], rc_entry = [imageformats])
+ path, ie = checkEditorNoRC('a raster image editor', ['gimp-remote', 'gimp'], rc_entry = [imageformats])
+ addToRC(imageformats % \
(iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie, iv, ie) )
#
checkViewerEditor('a text editor', ['xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
- 'nedit', 'gedit', 'notepad'],
- rc_entry = [r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%" ""
-\Format asciiimage asc "Plain text (image)" "" "" "%%" ""
-\Format asciixfig asc "Plain text (Xfig output)" "" "" "%%" ""
-\Format dateout tmp "date (output)" "" "" "%%" ""
-\Format docbook sgml DocBook B "" "%%" "document,menu=export"
-\Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export"
-\Format dot dot "Graphviz Dot" "" "" "%%" "vector"
-\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export"
-\Format literate nw NoWeb N "" "%%" "document,menu=export"
-\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export"
-\Format r R "R/S code" "" "" "%%" "document,menu=export"
-\Format lilypond ly "LilyPond music" "" "" "%%" "vector"
-\Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export"
-\Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export"
-\Format luatex tex "LaTeX (LuaTeX)" "" "" "%%" "document,menu=export"
-\Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document,menu=export"
-\Format xetex tex "LaTeX (XeTeX)" "" "" "%%" "document,menu=export"
-\Format text txt "Plain text" a "" "%%" "document,menu=export"
-\Format text2 txt "Plain text (pstotext)" "" "" "%%" "document"
-\Format text3 txt "Plain text (ps2ascii)" "" "" "%%" "document"
-\Format text4 txt "Plain text (catdvi)" "" "" "%%" "document"
-\Format textparagraph txt "Plain Text, Join Lines" "" "" "%%" "document"''' ])
+ 'nedit', 'gedit', 'notepad', 'geany', 'leafpad', 'mousepad'],
+ rc_entry = [r'''\Format asciichess asc "Plain text (chess output)" "" "" "%%" "" ""
+\Format asciiimage asc "Plain text (image)" "" "" "%%" "" ""
+\Format asciixfig asc "Plain text (Xfig output)" "" "" "%%" "" ""
+\Format dateout tmp "date (output)" "" "" "%%" "" ""
+\Format docbook sgml DocBook B "" "%%" "document,menu=export" ""
+\Format docbook-xml xml "DocBook (XML)" "" "" "%%" "document,menu=export" "application/docbook+xml"
+\Format dot dot "Graphviz Dot" "" "" "%%" "vector" "text/vnd.graphviz"
+\Format dviluatex tex "LaTeX (dviluatex)" "" "" "%%" "document,menu=export" ""
+\Format platex tex "LaTeX (pLaTeX)" "" "" "%%" "document,menu=export" ""
+\Format literate nw NoWeb N "" "%%" "document,menu=export" ""
+\Format sweave Rnw "Sweave" S "" "%%" "document,menu=export" ""
+\Format r R "R/S code" "" "" "%%" "document,menu=export" ""
+\Format knitr Rnw "Rnw (knitr)" "" "" "%%" "document,menu=export" ""
+\Format lilypond ly "LilyPond music" "" "" "%%" "vector" "text/x-lilypond"
+\Format lilypond-book lytex "LilyPond book (LaTeX)" "" "" "%%" "document,menu=export" ""
+\Format latex tex "LaTeX (plain)" L "" "%%" "document,menu=export" "text/x-tex"
+\Format luatex tex "LaTeX (LuaTeX)" "" "" "%%" "document,menu=export" ""
+\Format pdflatex tex "LaTeX (pdflatex)" "" "" "%%" "document,menu=export" ""
+\Format xetex tex "LaTeX (XeTeX)" "" "" "%%" "document,menu=export" ""
+\Format text txt "Plain text" a "" "%%" "document,menu=export" "text/plain"
+\Format text2 txt "Plain text (pstotext)" "" "" "%%" "document" ""
+\Format text3 txt "Plain text (ps2ascii)" "" "" "%%" "document" ""
+\Format text4 txt "Plain text (catdvi)" "" "" "%%" "document" ""
+\Format textparagraph txt "Plain Text, Join Lines" "" "" "%%" "document" ""
+\Format beamer.info pdf.info "Info (Beamer)" "" "" "%%" "document,menu=export" ""''' ])
#Spreadsheets using ssconvert from gnumeric
checkViewer('gnumeric spreadsheet software', ['gnumeric'],
- rc_entry = [r'''\Format gnumeric gnumeric "Gnumeric spreadsheet" "" "" "%%" "document"
-\Format excel xls "Excel spreadsheet" "" "" "%%" "document"
-\Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document"'''])
+ rc_entry = [r'''\Format gnumeric gnumeric "Gnumeric spreadsheet" "" "" "%%" "document" "application/x-gnumeric"
+\Format excel xls "Excel spreadsheet" "" "" "%%" "document" "application/vnd.ms-excel"
+\Format oocalc ods "OpenOffice spreadsheet" "" "" "%%" "document" "application/vnd.oasis.opendocument.spreadsheet"'''])
#
- path, xhtmlview = checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
- rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export"'])
- if xhtmlview == "":
- addToRC(r'\Format xhtml xhtml "LyXHTML" y "" "" "document,menu=export"')
+ checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
+ rc_entry = [r'\Format xhtml xhtml "LyXHTML" y "%%" "" "document,menu=export" "application/xhtml+xml"'])
#
checkEditor('a BibTeX editor', ['jabref', 'JabRef', \
'pybliographic', 'bibdesk', 'gbib', 'kbib', \
'kbibtex', 'sixpack', 'bibedit', 'tkbibtex' \
'xemacs', 'gvim', 'kedit', 'kwrite', 'kate', \
- 'nedit', 'gedit', 'notepad'],
- rc_entry = [r'''\Format bibtex bib "BibTeX" "" "" "%%" ""''' ])
+ 'nedit', 'gedit', 'notepad', 'geany', 'leafpad', 'mousepad'],
+ rc_entry = [r'''\Format bibtex bib "BibTeX" "" "" "%%" "" "text/x-bibtex"''' ])
#
#checkProg('a Postscript interpreter', ['gs'],
# rc_entry = [ r'\ps_command "%%"' ])
checkViewer('a Postscript previewer', ['kghostview', 'okular', 'evince', 'gv', 'ghostview -swap'],
- rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector"
-\Format ps ps Postscript t "%%" "" "document,vector,menu=export"'''])
+ rc_entry = [r'''\Format eps eps EPS "" "%%" "" "vector" "image/x-eps"
+\Format eps2 eps "EPS (uncropped)" "" "%%" "" "vector" ""
+\Format ps ps Postscript t "%%" "" "document,vector,menu=export" "application/postscript"'''])
# for xdg-open issues look here: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg151818.html
checkViewer('a PDF previewer', ['kpdf', 'okular', 'evince', 'kghostview', 'xpdf', 'acrobat', 'acroread', \
'gv', 'ghostview'],
- rc_entry = [r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" "" "document,vector,menu=export"
-\Format pdf2 pdf "PDF (pdflatex)" F "%%" "" "document,vector,menu=export"
-\Format pdf3 pdf "PDF (dvipdfm)" m "%%" "" "document,vector,menu=export"
-\Format pdf4 pdf "PDF (XeTeX)" X "%%" "" "document,vector,menu=export"
-\Format pdf5 pdf "PDF (LuaTeX)" u "%%" "" "document,vector,menu=export"'''])
+ rc_entry = [r'''\Format pdf pdf "PDF (ps2pdf)" P "%%" "" "document,vector,menu=export" "application/pdf"
+\Format pdf2 pdf "PDF (pdflatex)" F "%%" "" "document,vector,menu=export" ""
+\Format pdf3 pdf "PDF (dvipdfm)" m "%%" "" "document,vector,menu=export" ""
+\Format pdf4 pdf "PDF (XeTeX)" X "%%" "" "document,vector,menu=export" ""
+\Format pdf5 pdf "PDF (LuaTeX)" u "%%" "" "document,vector,menu=export" ""'''])
#
checkViewer('a DVI previewer', ['xdvi', 'kdvi', 'okular', 'yap', 'dviout -Set=!m'],
- rc_entry = [r'''\Format dvi dvi DVI D "%%" "" "document,vector,menu=export"
-\Format dvi3 dvi "DVI (LuaTeX)" V "%%" "" "document,vector,menu=export"'''])
+ rc_entry = [r'''\Format dvi dvi DVI D "%%" "" "document,vector,menu=export" "application/x-dvi"
+\Format dvi3 dvi "DVI (LuaTeX)" V "%%" "" "document,vector,menu=export" ""'''])
if dtl_tools:
# Windows only: DraftDVI
- addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector"')
+ addToRC(r'\Format dvi2 dvi DraftDVI "" "" "" "vector" ""')
#
checkViewer('an HTML previewer', ['firefox', 'mozilla file://$$p$$i', 'netscape'],
- rc_entry = [r'\Format html html HTML H "%%" "" "document,menu=export"'])
+ rc_entry = [r'\Format html "html, htm" HTML H "%%" "" "document,menu=export" "text/html"'])
#
checkViewerEditor('Noteedit', ['noteedit'],
- rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector"'])
+ rc_entry = [r'\Format noteedit not Noteedit "" "%%" "%%" "vector" ""'])
#
- checkViewerEditor('an OpenDocument/OpenOffice viewer', ['swriter', 'oowriter', 'abiword'],
- rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector,menu=export"
-\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector"'''])
+ checkViewerEditor('an OpenDocument/OpenOffice viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'],
+ rc_entry = [r'''\Format odt odt OpenDocument "" "%%" "%%" "document,vector,menu=export" "application/vnd.oasis.opendocument.text"
+\Format sxw sxw "OpenOffice.Org (sxw)" "" "" "" "document,vector" "application/vnd.sun.xml.writer"'''])
#
- checkViewerEditor('a Rich Text and Word viewer', ['swriter', 'oowriter', 'abiword'],
- rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export"
-\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export"'''])
+ checkViewerEditor('a Rich Text and Word viewer', ['libreoffice', 'lwriter', 'lowriter', 'oowriter', 'swriter', 'abiword'],
+ rc_entry = [r'''\Format rtf rtf "Rich Text Format" "" "%%" "%%" "document,vector,menu=export" "application/rtf"
+\Format word doc "MS Word" W "%%" "%%" "document,vector,menu=export" "application/msword"'''])
#
# entries that do not need checkProg
- addToRC(r'''\Format date "" "date command" "" "" "" ""
-\Format csv csv "Table (CSV)" "" "" "" "document"
-\Format fax "" Fax "" "" "" "document"
-\Format lyx lyx LyX "" "" "" ""
-\Format lyx13x 13.lyx "LyX 1.3.x" "" "" "" "document"
-\Format lyx14x 14.lyx "LyX 1.4.x" "" "" "" "document"
-\Format lyx15x 15.lyx "LyX 1.5.x" "" "" "" "document"
-\Format lyx16x 16.lyx "LyX 1.6.x" "" "" "" "document,menu=export"
-\Format lyx20x 20.lyx "LyX 2.0.x" "" "" "" "document,menu=export"
-\Format clyx cjklyx "CJK LyX 1.4.x (big5)" "" "" "" "document"
-\Format jlyx cjklyx "CJK LyX 1.4.x (euc-jp)" "" "" "" "document"
-\Format klyx cjklyx "CJK LyX 1.4.x (euc-kr)" "" "" "" "document"
-\Format lyxpreview lyxpreview "LyX Preview" "" "" "" ""
-\Format lyxpreview-lytex lyxpreview-lytex "LyX Preview (LilyPond book)" "" "" "" ""
-\Format lyxpreview-platex lyxpreview-platex "LyX Preview (pLaTeX)" "" "" "" ""
-\Format pdftex pdftex_t PDFTEX "" "" "" ""
-\Format program "" Program "" "" "" ""
-\Format pstex pstex_t PSTEX "" "" "" ""
-\Format wmf wmf "Windows Metafile" "" "" "" "vector"
-\Format emf emf "Enhanced Metafile" "" "" "" "vector"
-\Format wordhtml html "HTML (MS Word)" "" "" "" "document"
+ addToRC(r'''\Format date "" "date command" "" "" "" "" ""
+\Format csv csv "Table (CSV)" "" "" "" "document" "text/csv"
+\Format fax "" Fax "" "" "" "document" ""
+\Format lyx lyx LyX "" "" "" "" "application/x-lyx"
+\Format lyx13x 13.lyx "LyX 1.3.x" "" "" "" "document" ""
+\Format lyx14x 14.lyx "LyX 1.4.x" "" "" "" "document" ""
+\Format lyx15x 15.lyx "LyX 1.5.x" "" "" "" "document" ""
+\Format lyx16x 16.lyx "LyX 1.6.x" "" "" "" "document,menu=export" ""
+\Format lyx20x 20.lyx "LyX 2.0.x" "" "" "" "document,menu=export" ""
+\Format clyx cjklyx "CJK LyX 1.4.x (big5)" "" "" "" "document" ""
+\Format jlyx cjklyx "CJK LyX 1.4.x (euc-jp)" "" "" "" "document" ""
+\Format klyx cjklyx "CJK LyX 1.4.x (euc-kr)" "" "" "" "document" ""
+\Format lyxpreview lyxpreview "LyX Preview" "" "" "" "" ""
+\Format pdftex pdftex_t PDFTEX "" "" "" "" ""
+\Format program "" Program "" "" "" "" ""
+\Format pstex pstex_t PSTEX "" "" "" "" ""
+\Format wmf wmf "Windows Metafile" "" "" "" "vector" "image/x-wmf"
+\Format emf emf "Enhanced Metafile" "" "" "" "vector" "image/x-emf"
+\Format wordhtml "html, htm" "HTML (MS Word)" "" "" "" "document" ""
''')
checkLuatex()
- ''' If we're running LyX in-place then tex2lyx will be found in
- ../src/tex2lyx. Add this directory to the PATH temporarily and
- search for tex2lyx.
- Use PATH to avoid any problems with paths-with-spaces.
- '''
- path_orig = os.environ["PATH"]
- os.environ["PATH"] = os.path.join('..', 'src', 'tex2lyx') + \
- os.pathsep + path_orig
+ # Look for tex2lyx in this order (see bugs #3308 and #6986):
+ # 1) If we're running LyX in-place then tex2lyx will be found
+ # in ../src/tex2lyx with respect to the srcdir.
+ # 2) If LyX was configured with a version suffix then tex2lyx
+ # will also have this version suffix.
+ # 3) Otherwise always use tex2lyx.
+ in_place = os.path.join(srcdir, '..', 'src', 'tex2lyx', 'tex2lyx')
+ in_place = os.path.abspath(in_place)
-# First search for tex2lyx with version suffix (bug 6986)
- checkProg('a LaTeX/Noweb -> LyX converter', ['tex2lyx' + version_suffix, 'tex2lyx'],
+ path, t2l = checkProg('a LaTeX/Noweb -> LyX converter', [in_place, 'tex2lyx' + version_suffix, 'tex2lyx'],
rc_entry = [r'''\converter latex lyx "%% -f $$i $$o" ""
-\converter literate lyx "%% -n -f $$i $$o" ""'''])
-
- os.environ["PATH"] = path_orig
+\converter literate lyx "%% -n -f $$i $$o" ""'''], not_found = 'tex2lyx')
+ if path == '':
+ logger.warning("Failed to find tex2lyx on your system.")
#
checkProg('a Noweb -> LaTeX converter', ['noweave -delay -index $$i > $$o'],
\converter sweave pdflatex "%%" ""
\converter sweave xetex "%%" ""
\converter sweave luatex "%%" ""'''])
+ #
+ checkProg('a knitr -> LaTeX converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r'],
+ rc_entry = [r'''\converter knitr latex "%%" ""
+\converter knitr pdflatex "%%" ""
+\converter knitr xetex "%%" ""
+\converter knitr luatex "%%" ""'''])
#
checkProg('a Sweave -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxstangle.R $$i $$e $$r'],
rc_entry = [ r'\converter sweave r "%%" ""' ])
#
- checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i', \
- 'htmltolatex -input $$i -output $$o', 'java -jar htmltolatex.jar -input $$i -output $$o'],
+ checkProg('a knitr -> R/S code converter', ['Rscript --verbose --no-save --no-restore $$s/scripts/lyxknitr.R $$p$$i $$p$$o $$e $$r tangle'],
+ rc_entry = [ r'\converter knitr r "%%" ""' ])
+ #
+ checkProg('an HTML -> LaTeX converter', ['html2latex $$i', 'gnuhtml2latex $$i',
+ 'htmltolatex -input $$i -output $$o', 'htmltolatex.jar -input $$i -output $$o'],
rc_entry = [ r'\converter html latex "%%" ""' ])
#
checkProg('an MS Word -> LaTeX converter', ['wvCleanLatex $$i $$o'],
#
checkProg('an OpenDocument -> LaTeX converter', ['w2l -clean $$i'],
rc_entry = [ r'\converter odt latex "%%" ""' ])
+ #
+ checkProg('an OpenDocument -> PDF converter', ['unoconv -f pdf --stdout $$i > $$o'],
+ rc_entry = [ r'\converter odt pdf "%%" ""' ])
# According to http://www.tug.org/applications/tex4ht/mn-commands.html
# the command mk4ht oolatex $$i has to be used as default,
# but as this would require to have Perl installed, in MiKTeX oolatex is
#
checkProg('a PS to TXT converter', ['ps2ascii $$i $$o'],
rc_entry = [ r'\converter ps text3 "%%" ""' ])
- #
- checkProg('a PS to EPS converter', ['ps2eps $$i'],
- rc_entry = [ r'\converter ps eps "%%" ""' ])
+ # Need to call ps2eps in a pipe, otherwise it would name the output file
+ # depending on the extension of the input file. We do not know the input
+ # file extension in general, so the resultfile= flag would not help.
+ # Since ps2eps crops the image, we do not use it to convert from ps->eps.
+ # This would create additional paths in the converter graph with unwanted
+ # side effects (e.g. ps->pdf via ps2pdf would create a different result
+ # than ps->eps->pdf via ps2eps and epstopdf).
+ checkProg('a PS to EPS converter', ['ps2eps -- < $$i > $$o'],
+ rc_entry = [ r'\converter eps2 eps "%%" ""' ])
#
checkProg('a PDF to PS converter', ['pdf2ps $$i $$o', 'pdftops $$i $$o'],
rc_entry = [ r'\converter pdf ps "%%" ""' ])
checkProg('a PDF to EPS converter', ['pdftops -eps -f 1 -l 1 $$i $$o'],
rc_entry = [ r'\converter pdf eps "%%" ""' ])
#
+ checkProg('a Beamer info extractor', ['makebeamerinfo -p $$i'],
+ rc_entry = [ r'\converter pdf2 beamer.info "%%" ""' ])
+ #
checkProg('a DVI to TXT converter', ['catdvi $$i > $$o'],
rc_entry = [ r'\converter dvi text4 "%%" ""' ])
#
checkProg('a DVI to PDF converter', ['dvipdfmx -o $$o $$i', 'dvipdfm -o $$o $$i'],
rc_entry = [ r'\converter dvi pdf3 "%%" ""' ])
#
- path, dvipng = checkProg('dvipng', ['dvipng'])
- path, dv2dt = checkProg('DVI to DTL converter', ['dv2dt'])
- if dvipng == "dvipng" and dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview png "" ""')
- if dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview ppm "" ""')
- #
checkProg('a fax program', ['kdeprintfax $$i', 'ksendfax $$i', 'hylapex $$i'],
rc_entry = [ r'\converter ps fax "%%" ""'])
#
checkProg('an EPS -> PDF converter', ['epstopdf'],
rc_entry = [ r'\converter eps pdf "epstopdf --outfile=$$o $$i" ""', ''])
#
+ checkProg('an EPS -> PNG converter', ['convert $$i $$o'],
+ rc_entry = [ r'\converter eps png "%%" ""', ''])
+ #
# no agr -> pdf converter, since the pdf library used by gracebat is not
# free software and therefore not compiled in in many installations.
# Fortunately, this is not a big problem, because we will use epstopdf to
#
checkProg('a Dia -> EPS converter', ['dia -e $$o -t eps $$i'],
rc_entry = [ r'\converter dia eps "%%" ""'])
+ # Actually, this produces EPS, but with a wrong bounding box (usually A4 or letter).
+ # The eps2->eps converter then fixes the bounding box by cropping.
+ # Although unoconv can convert to png and pdf as well, do not define
+ # odg->png and odg->pdf converters, since the bb would be too large as well.
+ checkProg('an OpenOffice -> EPS converter', ['libreoffice -headless -nologo -convert-to eps $$i', 'unoconv -f eps --stdout $$i > $$o'],
+ rc_entry = [ r'\converter odg eps2 "%%" ""'])
#
checkProg('a SVG -> PDF converter', ['rsvg-convert -f pdf -o $$o $$i', 'inkscape --file=$$i --export-area-drawing --without-gui --export-pdf=$$o'],
rc_entry = [ r'\converter svg pdf "%%" ""'])
# gnumeric/xls/ods to tex
checkProg('a spreadsheet -> latex converter', ['ssconvert'],
rc_entry = [ r'''\converter gnumeric latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
-\converter ods latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
-\converter xls latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""''',
+\converter oocalc latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""
+\converter excel latex "ssconvert --export-type=Gnumeric_html:latex $$i $$o" ""''',
''])
path, lilypond = checkProg('a LilyPond -> EPS/PDF/PNG converter', ['lilypond'])
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]) >= 13):
- if dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview-lytex ppm "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview-lytex ppm "" ""')
- if dvipng == "dvipng" and dv2dt == 'dv2dt':
- addToRC(r'\converter lyxpreview-lytex png "python -tt $$s/scripts/lyxpreview-lytex2bitmap.py" ""')
- else:
- # set empty converter to override the default imagemagick
- addToRC(r'\converter lyxpreview-lytex png "" ""')
# Note: The --lily-output-dir flag is required because lilypond-book
# does not process input again unless the input has changed,
# even if the output format being requested is different. So
# Currently, lyxpak outputs a gzip compressed tar archive on *nix
# and a zip archive on Windows.
# So, we configure the appropriate version according to the platform.
- cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$i" ""'
+ cmd = r'\converter lyx %s "python -tt $$s/scripts/lyxpak.py $$r/$$f" ""'
if os.name == 'nt':
- addToRC(r'\Format lyxzip zip "LyX Archive (zip)" "" "" "" "document,menu=export"')
+ addToRC(r'\Format lyxzip zip "LyX Archive (zip)" "" "" "" "document,menu=export" ""')
addToRC(cmd % "lyxzip")
else:
- addToRC(r'\Format lyxgz gz "LyX Archive (tar.gz)" "" "" "" "document,menu=export"')
+ addToRC(r'\Format lyxgz gz "LyX Archive (tar.gz)" "" "" "" "document,menu=export" ""')
addToRC(cmd % "lyxgz")
#
# checkProg('Image converter', ['convert $$i $$o'])
#
# Entries that do not need checkProg
- addToRC(r'''\converter lyxpreview-platex ppm "python -tt $$s/scripts/lyxpreview-platex2bitmap.py" ""
+ addToRC(r'''
\converter csv lyx "python -tt $$s/scripts/csv2lyx.py $$i $$o" ""
\converter date dateout "python -tt $$s/scripts/date.py %d-%m-%Y > $$o" ""
\converter docbook docbook-xml "cp $$i $$o" "xml"
\converter clyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c big5 $$i > $$o" ""
\converter jlyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_jp $$i > $$o" ""
\converter klyx lyx "python -tt $$s/lyx2lyx/lyx2lyx -c euc_kr $$i > $$o" ""
+\converter lyxpreview png "python -tt $$s/scripts/lyxpreview2bitmap.py --png" ""
+\converter lyxpreview ppm "python -tt $$s/scripts/lyxpreview2bitmap.py --ppm" ""
''')
alt_rc_entry = [ r'\index_alternatives "%%"' ])
checkProg('an index processor appropriate to Japanese', ['mendex -c -q', 'jmakeindex -c -q', 'makeindex -c -q'],
rc_entry = [ r'\jindex_command "%%"' ])
- path, splitindex = checkProg('the splitindex processor', ['splitindex.pl', 'splitindex'],
- rc_entry = [ r'\splitindex_command "%%"' ])
- if splitindex == '':
- checkProg('the splitindex processor (java version)', ['splitindex.class'],
- rc_entry = [ r'\splitindex_command "java splitindex"' ])
+ checkProg('the splitindex processor', ['splitindex.pl', 'splitindex',
+ 'splitindex.class'], rc_entry = [ r'\splitindex_command "%%"' ])
checkProg('a nomenclature processor', ['makeindex'],
rc_entry = [ r'\nomencl_command "makeindex -s nomencl.ist"' ])
## FIXME: OCTAVE is not used anywhere
tx.write(retval)
tx.close()
logger.info('\tdone')
+ if not os.path.isfile('packages.lst') or not check_config:
+ logger.info('+generating default list of packages... ')
+ removeFiles(['packages.lst'])
+ tx = open('packages.lst', 'w')
+ tx.close()
+ logger.info('\tdone')
if not check_config:
return None
# the following will generate textclass.lst.tmp, and packages.lst.tmp
cl.close()
#
# we have chklayouts.tex, then process it
- fout = subprocess.Popen([LATEX, "wrap_chkconfig.ltx"], stdout=subprocess.PIPE).stdout
- while True:
- line = fout.readline()
- if not line:
- break;
+ ret = 1
+ latex_out = cmdOutput(LATEX + ' wrap_chkconfig.ltx')
+ for line in latex_out.splitlines():
if re.match('^\+', line):
logger.info(line.strip())
- # if the command succeeds, None will be returned
- ret = fout.close()
+ # return None if the command succeeds
+ if line == "+Inspection done.":
+ ret = None
+ #
+ # remove the copied file
+ if rmcopy:
+ removeFiles( [ 'chkconfig.ltx' ] )
#
# currently, values in chhkconfig are only used to set
# \font_encoding
addToRC(r'\font_encoding "%s"' % values["chk_fontenc"])
except:
pass
- if rmcopy: # remove the copied file
- removeFiles( [ 'chkconfig.ltx' ] )
# if configure successed, move textclass.lst.tmp to textclass.lst
# and packages.lst.tmp to packages.lst
if os.path.isfile('textclass.lst.tmp') and len(open('textclass.lst.tmp').read()) > 0 \
if __name__ == '__main__':
lyx_check_config = True
outfile = 'lyxrc.defaults'
- lyxrc_fileformat = 1
+ lyxrc_fileformat = 7
rc_entries = ''
lyx_keep_temps = False
version_suffix = ''
''' % lyxrc_fileformat)
# check latex
LATEX = checkLatex(dtl_tools)
+ # check java and perl before any checkProg that may require them
+ java = checkProg('a java interpreter', ['java'])[1]
+ perl = checkProg('a perl interpreter', ['perl'])[1]
checkFormatEntries(dtl_tools)
checkConverterEntries()
(chk_docbook, bool_docbook, docbook_cmd) = checkDocBook()