Add start frame
This commit is contained in:
202
wscript
Normal file
202
wscript
Normal file
@@ -0,0 +1,202 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
# Created On: Tue 28 Aug 2012 11:44:05 CEST
|
||||
# Last Modified: Tue 21 Mar 2017 08:40:17 pm CET
|
||||
# MAKEFILE for compiling LaTeX Files
|
||||
|
||||
VERSION='1.0.0'
|
||||
APPNAME='MAKEFILE FOR LaTeX'
|
||||
|
||||
top='.'
|
||||
out='build'
|
||||
chapterpath='./chapters'
|
||||
|
||||
# query the options that are possible outputs
|
||||
def options(ctx):
|
||||
ctx.add_option('--form',action='store',default='pdflatex',help='Specify the output format. Allowed values are: pdflatex, latex, htlatex, oolatex, epub, handlatex')
|
||||
ctx.add_option('--cover',action='store',help='Specify an image as cover for ePubs.\nOnly works with --form=epub')
|
||||
ctx.add_option('--infile',action='store',help='Specify the tex file to use as input file.\nIf not given, all files in the top level directory will be compiled.')
|
||||
ctx.add_option('--spellckpath',action='store',help='Specify the path in which to look for the content files for spellcheck.\nDefault is ./chapters',default=chapterpath);
|
||||
|
||||
# configure script
|
||||
def configure(ctx):
|
||||
# local functions to configure the selected element
|
||||
def find_tex_files(path):
|
||||
import os
|
||||
ret = []
|
||||
for name in os.listdir(path):
|
||||
if os.path.isfile(os.path.join(path,name)):
|
||||
if (name.endswith('.tex')) or (name.endswith('.ltx')):
|
||||
ret.append(name)
|
||||
return ret
|
||||
|
||||
def conf_tex(ctx):
|
||||
ctx.load('tex')
|
||||
|
||||
def conf_htlatex(ctx):
|
||||
ctx.find_program('mk4ht',var='TEX')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
def conf_epub(ctx):
|
||||
ctx.find_program('mk4ht',var='TEX')
|
||||
ctx.find_program('ebook-convert',var='EPUB')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
def conf_handlatex(ctx):
|
||||
ctx.find_program('handlatex',var='TEX')
|
||||
ctx.env.TEXINPUT = ctx.path.abspath() + '//'
|
||||
|
||||
# define a structure to assign the functions to the parameters
|
||||
conf_output = {'pdflatex' : conf_tex,
|
||||
'latex' : conf_tex,
|
||||
'htlatex' : conf_htlatex,
|
||||
'oolatex' : conf_htlatex,
|
||||
'epub' : conf_epub,
|
||||
'handlatex' : conf_handlatex
|
||||
|
||||
}
|
||||
|
||||
# set the selected mode
|
||||
if ctx.options.form:
|
||||
ctx.env.FORM = ctx.options.form
|
||||
conf_output[ctx.env.FORM](ctx)
|
||||
else:
|
||||
ctx.fatal('Output format is not set!')
|
||||
|
||||
# set a cover image
|
||||
if ctx.options.cover:
|
||||
ctx.env.COVER = ctx.options.cover
|
||||
else:
|
||||
ctx.env.COVER = ''
|
||||
|
||||
# find the aspell program
|
||||
ctx.find_program('aspell',var='ASPELL')
|
||||
|
||||
# set a default path to look for spellck sources
|
||||
if ctx.options.spellckpath:
|
||||
ctx.env.SPELLCK = ctx.options.spellckpath
|
||||
|
||||
# Set a list of all files to use
|
||||
if ctx.options.infile:
|
||||
sf = []
|
||||
sf.append(ctx.options.infile)
|
||||
ctx.env.SOURCEFILES = sf
|
||||
else:
|
||||
ctx.env.SOURCEFILES = find_tex_files(top)
|
||||
|
||||
|
||||
def build(ctx):
|
||||
# metadata parameters
|
||||
def build_metadata(fileName,cover):
|
||||
ret = '--level1-toc \'//*[@class="title"]\' '
|
||||
with open(fileName,'r') as in_file:
|
||||
count = 0
|
||||
for line in in_file:
|
||||
if '% Author' in line:
|
||||
ret += ' --authors "' + line.split(':')[1].rstrip().lstrip() +'"'
|
||||
count += 1
|
||||
elif '% Title' in line:
|
||||
ret += ' --title "' + line.split(':')[1].rstrip().lstrip() + '"'
|
||||
count += 1
|
||||
elif count > 1:
|
||||
break
|
||||
in_file.close()
|
||||
|
||||
if cover:
|
||||
ret += ' --cover "' + cover + '"'
|
||||
|
||||
return ret
|
||||
|
||||
# local functions to control the build process
|
||||
def build_tex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
ctx(features = 'tex',
|
||||
type = ctx.env.FORM,
|
||||
source = f,
|
||||
prompt = 0
|
||||
)
|
||||
if ctx.cmd == 'install':
|
||||
outExt = '.dvi'
|
||||
if ctx.env.FORM == 'pdflatex':
|
||||
outExt = '.pdf'
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + outExt)
|
||||
|
||||
def build_htlatex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${FORM} ${SRC} >/dev/null',source=f, target=fileName + '.html')
|
||||
if ctx.cmd == 'install':
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + '.html')
|
||||
|
||||
def build_epub(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
print(ctx.path.find_resource(ctx.env.COVER))
|
||||
if ctx.env.COVER :
|
||||
ctx.env.META = build_metadata(f,ctx.path.find_resource(ctx.env.COVER).abspath())
|
||||
else:
|
||||
ctx.env.META = build_metadata(f,'')
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} htlatex ${SRC} >/dev/null',source=f, target=fileName + '.html')
|
||||
ctx(rule='${EPUB} ${SRC} ${TGT} ${META}',source=fileName + '.html', target=fileName + '.epub')
|
||||
if ctx.cmd == 'install':
|
||||
ctx.install_files('${PREFIX}',fileName + '.epub')
|
||||
|
||||
def build_handlatex(ctx):
|
||||
import os
|
||||
for f in ctx.env.SOURCEFILES:
|
||||
ctx(rule='TEXINPUTS=${TEXINPUT}: ${TEX} ${SRC} >/dev/null && rm -f ../*.h*',source=f)
|
||||
if ctx.cmd == 'install':
|
||||
fileName, fileExt = os.path.splitext(f)
|
||||
ctx.install_files('${PREFIX}',fileName + outExt)
|
||||
|
||||
|
||||
# define a structure to assign the functions to the parameters
|
||||
build_output = {'pdflatex' : build_tex,
|
||||
'latex' : build_tex,
|
||||
'htlatex' : build_htlatex,
|
||||
'oolatex' : build_htlatex,
|
||||
'epub' : build_epub,
|
||||
'handlatex' : build_handlatex
|
||||
}
|
||||
|
||||
# call the configured build method
|
||||
build_output[ctx.env.FORM](ctx)
|
||||
|
||||
|
||||
# Custom command to spellcheck all
|
||||
def spellck(ctx):
|
||||
|
||||
# Search for all possible TEX files
|
||||
def find_tex_files(path):
|
||||
import os
|
||||
ret = []
|
||||
for root, dirs, files in os.walk(path):
|
||||
for name in files:
|
||||
if (name.endswith('.tex')) or (name.endswith('.ltx')):
|
||||
ret.append(os.path.join(root,name))
|
||||
return ret
|
||||
|
||||
# Set a list of input files to use
|
||||
if ctx.options.infile:
|
||||
sf = []
|
||||
sf.append(ctx.options.infile)
|
||||
ctx.env.SOURCEFILES = sf
|
||||
else :
|
||||
ctx.env.SOURCEFILES = find_tex_files(ctx.env.SPELLCK)
|
||||
|
||||
# run aspell
|
||||
from os import system
|
||||
for f in ctx.env.SOURCEFILES :
|
||||
system(ctx.env.ASPELL + ' -c ' + f)
|
||||
system('rm ' + f + '.' +'bak')
|
||||
|
||||
# Class declarartion to bind the build context to the spellck command
|
||||
from waflib.Build import BuildContext
|
||||
class spck(BuildContext):
|
||||
cmd='spellck'
|
||||
fun='spellck'
|
||||
Reference in New Issue
Block a user