diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 04ac6820db5851f6a7217f7a0432cd4ea6c7b8df..500ff56423ad55155d0d1a4d985b03769f5d6cbb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,7 +19,7 @@ stages:
     - apt install -y xvfb # Virtual framebuffer for GL stuff.
     - apt install -y inkscape pdftk
     - apt install -y latexmk  poppler-utils # latexmk and pdftocairo
-    - DEBIAN_FRONTEND='noninteractive' apt install -y texlive-latex-recommended texlive-latex-extra texlive-science pdf2svg
+    - DEBIAN_FRONTEND='noninteractive' apt install -y texlive-latex-recommended texlive-latex-extra texlive-science pdf2svg texlive-fonts-extra texlive-fonts-recommended
     - pip install -U Pillow
     - pip install -e ./
     - cd tests
diff --git a/build/lib/jinjafy/__init__.py b/build/lib/jinjafy/__init__.py
deleted file mode 100644
index 0bebe70d96db3874f2f97a22a611728675673f86..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/__init__.py
+++ /dev/null
@@ -1,43 +0,0 @@
-from jinjafy.jinjafy import jinjafy_comment
-from jinjafy.jinjafy import jinjafy_template
-from jinjafy.jinja_matlab_load import matlab_load
-# from slider import latexmk
-from jinjafy.textools import mat2table
-import subprocess
-# import os
-import platform
-# from subprocess import subprocess
-
-
-def execute_command(command, shell=True):
-    if not isinstance(command, list):
-        command = [command]
-    if not platform.uname()[0] == "Linux":
-        result = subprocess.run(command, stdout=subprocess.PIPE, shell=shell)
-        out = result.stdout
-    else:
-        out = subprocess.check_output(command, shell=shell)
-    s = out.decode("utf-8")
-    OK = True
-    return s, OK
-
-
-# def get_system_name():
-#     if is_win():
-#         return "Win"
-#     if is_compute():
-#         return "thinlinc.compute.dtu.dk"
-#     if is_cogsys_cluster():
-#         return "cogys cluster"
-
-# def execute_command(command, shell=True):
-#     if not isinstance(command, list):
-#         command = [command]
-#     # if not is_compute():
-#     # result = subprocess.run(command, stdout=subprocess.PIPE, shell=shell)
-#     # out = result.stdout
-#     # else:
-#     out = subprocess.check_output(command, shell=shell)
-#     s = out.decode("utf-8")
-#     OK = True
-#     return s, OK
\ No newline at end of file
diff --git a/build/lib/jinjafy/cache/__init__.py b/build/lib/jinjafy/cache/__init__.py
deleted file mode 100644
index a46ef35f71399ee0932c8d376af74af0682a8e6c..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/cache/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from jinjafy.cache.simplecache import cache_update_str as cache_update_str
-from jinjafy.cache.simplecache import cache_contains_str as cache_contains_str
-
-from jinjafy.cache.simplecache import cache_update_file as cache_update_file
-from jinjafy.cache.simplecache import cache_contains_file as cache_contains_file
-
-from jinjafy.cache.simplecache import cache_update_dir as cache_update_dir
-from jinjafy.cache.simplecache import cache_contains_dir as cache_contains_dir
\ No newline at end of file
diff --git a/build/lib/jinjafy/cache/simplecache.py b/build/lib/jinjafy/cache/simplecache.py
deleted file mode 100644
index e24ab194c44642e727a0eae4ce6e281f3a607fd8..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/cache/simplecache.py
+++ /dev/null
@@ -1,94 +0,0 @@
-from hashlib import md5
-import os
-import pickle
-import glob
-
-def dir_content_cache_(dir, pattern="*"):
-    fl = glob.glob(dir + "/" + pattern)
-    s = ''.join(fl)
-    key = "key_"+dir
-    return fl, s,key
-
-def cache_contains_dir(cache_base, dir, pattern="*"):
-    # fl = glob.glob(dir)
-    fl,s,key =  dir_content_cache_(dir, pattern=pattern)
-
-    v = [cache_contains_file(cache_base, f) for f in fl]
-    if all(v) and cache_contains_str(cache_base, key, s):
-        return True
-    return False
-
-def cache_update_dir(cache_base, dir, pattern="*"):
-    fl, s, key = dir_content_cache_(dir, pattern=pattern)
-    cache_update_str(cache_base, key, s)
-    for f in fl:
-        cache_update_file(cache_base, f)
-
-
-def cache_contains_str(cache_base,key=None,value=None):
-    assert(key or value)
-    value = hash_binary_(value.encode())
-    if not key: key = value
-    return cache_contains_hash(cache_base, key, value)
-
-def cache_update_str(cache_base,key,value):
-    assert(key or value)
-    value = hash_binary_(value.encode())
-    if not key: key = value
-    return cache_update_hash(cache_base, key, value)
-
-
-def cache_contains_file(cache_base,file):
-    key = os.path.abspath(file)
-    if not os.path.exists(file):
-        return False
-    value = hash_file_(file)
-    return cache_contains_hash(cache_base, key, value)
-
-def hash_file_(file):
-    import hashlib
-    hasher = hashlib.md5()
-    with open(file, 'rb') as afile:
-        buf = afile.read()
-        hasher.update(buf)
-    return hasher.hexdigest()
-
-def cache_update_file(cache_base, file):
-    key = os.path.abspath(file)
-    value = hash_file_(file)
-    return cache_update_hash(cache_base, key, value)
-
-
-def cache_contains_hash(cache_base,key,hash_val):
-    cc = load_cache(cache_base)
-    return cc.get(key,"Not found") == hash_val
-
-def cache_update_hash(cache_base,key,hash_val):
-    cc = load_cache(cache_base)
-    cc[key] = hash_val
-    save_cache(cache_base, cc)
-
-
-def hash_binary_(str_bin):
-    return md5(str_bin).hexdigest()
-
-
-def cache_file(cache_base):
-    return os.path.join(cache_base, "cache.pkl")
-
-def save_cache(cache_base, cache):
-    with open(cache_file(cache_base), 'wb') as f:
-        pickle.dump(cache,f)
-
-def load_cache(cache_base):
-    if not os.path.exists(cache_file(cache_base)):
-        save_cache(cache_base, {'default' : 42})
-        return load_cache(cache_base)
-    with open(cache_file(cache_base), 'rb') as f:
-        return pickle.load(f)
-
-
-if __name__ == "__main__":
-    cache_base = "./"
-
-    print("Hello World")
diff --git a/build/lib/jinjafy/jinja_env.py b/build/lib/jinjafy/jinja_env.py
deleted file mode 100644
index 102ef966eba2420c374279e5d1d32d67cdfaa4ba..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/jinja_env.py
+++ /dev/null
@@ -1,136 +0,0 @@
-import numpy as np
-from fractions import Fraction
-import jinja2
-
-
-def format_list_symbols(list, pattern, symbol="x", seperator=",\ "):
-    return format_join(list, pattern=symbol+"_{%i}", seperator=seperator)
-
-
-def n2w(i):
-    w = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight',
-         9: 'nine', 10: 'ten'}
-    return i if i < 0 or i > 10 else w[i]
-
-
-def format_list(list_, pattern):
-    list_ = tolist(list_)
-    return [pattern % s for s in list_]
-
-
-def format_join(list, pattern, seperator=",\ ",withand=False,withor=False,lastsep=None):
-    ls = format_list(list, pattern)
-    if withand:
-        return seperator.join(ls[:-1]) + "$, and $" + ls[-1]
-    if withor:
-        return seperator.join(ls[:-1]) + "$, or $" + ls[-1]
-    return seperator.join(ls)
-
-
-def format_join_enum(list, pattern="x_{%i}=%g", seperator=",\ "):
-    list = tolist(list)
-    return seperator.join(format_list( zip( range(1,len(list)+1 ), list), pattern))
-
-
-def as_set(l, symbol='f_{%i}'):
-    if type(l) != list and type(l) != np.ndarray:
-        l = [l]
-    l = tolist(l)
-    s = [symbol%(i,) for i in l]
-    s = '\{' + ", ".join(s) + "\}"
-    return s
-
-
-def as_set_list(ll, symbol='%g'):
-    s = []
-    for l in ll.flat:
-        l = tolist(l)
-        s.append(as_set(l, symbol))
-    s = ["$"+ds+"$" for ds in s]
-    s = ", ".join(s)
-    return s
-
-
-def infty(n,tol=10^8):
-    if n > tol:
-        s = '\infty'
-    else:
-        s = str(n)
-    return s
-
-
-def flatten(ar):
-    v = []
-    if type(ar) is np.ndarray or type(ar) is np.array:
-        for x in ar.flat:
-            m = flatten(x)
-            if type(m) == list:
-                v = v + m
-            else:
-                v.append(m)
-    else:
-        v = ar
-    return v
-
-
-def tolist(l):
-    if type(l) == np.ndarray:
-        l2 = []
-        for x in l.flat:
-            l2.append(  x.tolist() if isinstance(x,np.ndarray) else x  )
-        l = l2
-
-    elif type(l) == list or hasattr(l, '__iter__'):
-        pass
-    else:
-        l = [l]
-    return l
-
-
-def jget(A,n=0):
-    A = flatten(A)
-    return A[n]
-
-
-def as_rational(x, output='tex', always_frac=False):
-    if type(x) == jinja2.runtime.Undefined:
-        return "UNDEFINED(jinja2)"
-    b = Fraction.from_float(x).limit_denominator(10000)
-    s = "output_error_in_as_rational_filter"
-    if output == 'tex':
-        if (b.denominator == 1 or b.numerator == 0) and not always_frac:
-            s = '%i'%b.numerator
-        else:
-            s = "\\frac{%i}{%i}"%(b.numerator, b.denominator)
-    return s
-
-
-def mylen(l):
-    if isinstance(l, np.ndarray):
-        sz = l.size
-    else:
-        sz = len(l)
-    return sz
-
-
-def permute_exam_answers(section,permutation):
-    v = section.split("\\item")
-    v = v[:5] + v[-1:]
-    assert(len(v) == 6)
-    permutation = [0] + permutation + [5]
-    v[0] = "\\begin{answer}[%i]\n"%permutation.index(1)
-    v2 = "\\item".join( [v[i] for i in permutation] )
-    return v2
-
-
-def startswithvowel(value):
-    if value.lower().startswith(("a", "e", "i", "o","u")):
-        return True
-    else:
-        return False
-
-
-def aan(s):
-    if s.startswith("no "):
-        return ""
-    return "an" if startswithvowel(s) else "a"
diff --git a/build/lib/jinjafy/jinja_matlab_load.py b/build/lib/jinjafy/jinja_matlab_load.py
deleted file mode 100644
index c67581542aaf2fc407f65489a2db9a1713770335..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/jinja_matlab_load.py
+++ /dev/null
@@ -1,149 +0,0 @@
-import numpy as np
-import scipy.io as spio
-
-def matlab_load(mfile):
-    j = mfile.rfind('.')
-    if j > -1:
-        ex = mfile[j + 1:]
-        base = mfile[:j]
-    else:
-        ex = ''
-        base = mfile
-    mat = loadmat(base + '.mat')
-    mat = uuroll(mat)
-    mat = fix_1_arrays(mat)
-    mat = fix_strings(mat)
-    mat = fix_simple_lists(mat)
-    return mat
-
-
-def loadmat(filename):
-    '''
-    this function should be called instead of direct spio.loadmat
-    as it cures the problem of not properly recovering python dictionaries
-    from mat files. It calls the function check keys to cure all entries
-    which are still mat-objects
-    '''
-    data = spio.loadmat(filename,struct_as_record=False)
-    data2 = _check_keys(data)
-    return data2
-
-
-def _check_keys(dd):
-    '''
-    checks if entries in dictionary are mat-objects. If yes
-    todict is called to change them to nested dictionaries
-    '''
-    if isinstance(dd, spio.matlab.mio5_params.mat_struct):
-        dd = _check_keys(_todict(dd))
-    elif type(dd) == dict:
-        for key in dd:
-            kv = flist(dd[key])
-            if type( kv ) == spio.matlab.mio5_params.mat_struct:
-                dd[key] = _check_keys(kv)
-            else:
-                dd[key] = _check_keys(dd[key])
-    elif type(dd) == list:
-        dd = [_check_keys(l) for l in dd]
-    elif type(dd) == np.ndarray:
-        if dd.dtype.str == '|O' and dd.size > 0:
-            if type( flist(dd.flat[0]) ) == spio.matlab.mio5_params.mat_struct:
-                for i in range( dd.size ):
-                    dd.flat[i] = _check_keys( flist( dd.flat[i]) )
-        else:
-            for i in range(dd.size):
-                dd.flat[i] = _check_keys(dd.flat[i])
-
-    return dd
-
-def fix_simple_lists(l):
-    if type(l) == dict:
-        for k,v in l.items():
-            l[k] = fix_simple_lists(v)
-    elif type(l) == np.ndarray and l.dtype.name == "uint8" and l.shape[0] == 1 and l.ndim == 2:
-        # l = l.tolist()
-        l = l.tolist()[0]
-    return l
-
-def apply_recursively(l, myfun):
-    if type(l) == dict:
-        for k,v in l.items():
-            l[k] = apply_recursively(v, myfun)
-    elif type(l) == np.ndarray and l.dtype.str == '|O' and l.size > 0:
-        for i in range( l.size ):
-            l.flat[i] = apply_recursively( l.flat[i], myfun)
-    else:
-        l = myfun(l)
-    return l
-
-
-def fix_1_arrays(l):
-    def _fix_1_arrays(l):
-        if type(l) == np.ndarray and l.size == 1 and np.issubdtype(l.dtype, np.number):
-            l = l.flat[0]
-        return l
-    l = apply_recursively(l, _fix_1_arrays)
-    return l
-
-
-def fix_strings(l):
-    if type(l) == dict:
-        for k,v in l.items():
-            l[k] = fix_strings(v)
-    elif type(l) == np.ndarray and l.size > 0:
-        tp = type(superpop(l.flat[0]))
-        if tp == str or tp == np.str_:
-            l = [superpop(x) for x in l.flat ]
-            if len(l) == 1:
-                l = l.pop()
-    return l
-
-
-def superpop(l):
-    if type(l) == list and len(l) == 1:
-        return superpop(l[0])
-    if type(l) == np.ndarray and l.size == 1:
-        return superpop(l.tolist())
-    return l
-
-
-def flist(l):
-    if type(l) == list and len(l) == 1:
-        l = flist( l.pop() )
-
-    if type(l) == np.ndarray and l.dtype.name == "object":
-        l3 = [flist(v) for v in l.flat]
-        l = flist( l3 )
-    return l
-
-
-def _todict(matobj):
-    '''
-    A recursive function which constructs from matobjects nested dictionaries
-    '''
-    dict = {}
-    for strg in matobj._fieldnames:
-        elem = matobj.__dict__[strg]
-        if isinstance(elem, spio.matlab.mio5_params.mat_struct):
-            dict[strg] = _todict(elem)
-        else:
-            dict[strg] = elem
-    return dict
-
-
-def uuroll(v):
-    if type(v) is dict:
-        for key,val in v.items():
-            v[key] = uuroll(val)
-    if type(v) is np.ndarray or type(v) is np.array:
-        for j in range(v.size):
-            v.flat[j] = uuroll(v.flat[j])
-    return v
-
-
-def uroll(mat):
-    for k in mat.keys():
-        v = mat[k]
-        v = uuroll(v)
-        mat[k] = v
-    return mat
\ No newline at end of file
diff --git a/build/lib/jinjafy/jinjafy.py b/build/lib/jinjafy/jinjafy.py
deleted file mode 100644
index 43da4a7568b76ee8e1d479026bb4f2b032cf5e3f..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/jinjafy.py
+++ /dev/null
@@ -1,214 +0,0 @@
-import inspect
-import jinja2
-from math import floor, log10
-import os
-import numpy as np
-from jinjafy import jinja_env
-
-
-def jinjafy_template(data,file_in,file_out=None, filters={},template_searchpath=None):
-    if template_searchpath:
-        file_in = os.path.relpath(file_in, template_searchpath)
-
-    return jinjafy_comment(data, file_in=file_in, file_out=file_out,jinja_tag=None, filters=filters,template_searchpath=template_searchpath)
-
-
-def jinjafy_comment(data,file_in=None,file_out=None,jinja_tag="jinja",jinja_code=None,trim_whitespace=True,trim_comments=True,comment_char="#",
-                    filters={},template_searchpath=None):
-    # Extract all comments from the given file and jinjafy them.
-    if file_in is None:
-        frame = inspect.stack()[1]
-        module = inspect.getmodule(frame[0])
-        file_in = module.__file__
-    elif not jinja_tag:
-        trim_comments=False
-        trim_whitespace=False
-
-    if not template_searchpath:
-        with open(file_in,'r') as f:
-            s = f.read()
-            if jinja_tag:
-                stag = "<" + jinja_tag + ">"
-                etag = "</" + jinja_tag + ">"
-
-                i_start = s.find(stag)
-                i_end = s.find(etag)
-                s = s[i_start+len(stag):i_end]
-            ss = [s]
-            if trim_comments:
-                ss = [ds.strip()[1:] for ds in s.splitlines() if len(ds.strip()) > 0 and ds.strip()[0] in ["#", "%"] ]
-            if trim_whitespace:
-                ss = [ds.strip() for ds in ss]
-
-            jinja_code = '\n'.join(ss)
-
-    from jinjafy.snipper import SnipperExtension
-    extensions = [SnipperExtension]
-    if template_searchpath:
-        if not isinstance(template_searchpath, list):
-            template_searchpath = [template_searchpath]
-        template_searchpath = [ts.replace("\\", "/") for ts in template_searchpath]
-        templateLoader = jinja2.FileSystemLoader(searchpath=template_searchpath)
-        env = jinja2.Environment(lstrip_blocks=True, trim_blocks=True,loader=templateLoader, extensions=extensions)
-    else:
-        env = jinja2.Environment(lstrip_blocks=True, trim_blocks=True, extensions=extensions)
-
-    import math
-    env.globals['exp'] = math.exp
-    env.globals['sqrt'] = math.sqrt
-    env.globals['cos'] = math.cos
-    env.globals['sin'] = math.sin
-
-    env.globals['mround'] = mround
-    env.globals['bold'] = bold
-    env.globals['fmat'] = fmat
-    env.globals['enumerate'] = enumerate
-    env.globals['zip'] = zip
-    env.globals['ensure_numpy'] = ensure_numpy
-    env.globals['transpose'] = transpose
-    import math
-    env.globals['ceil'] = math.ceil
-    env.globals['floor'] = math.floor
-
-
-    from pylatexenc import latexencode
-    env.globals['utf8tolatex'] = latexencode.utf8tolatex
-    env.globals['as_set'] = jinja_env.as_set
-    env.globals['as_set_list'] = jinja_env.as_set_list
-    env.globals['len'] = jinja_env.mylen
-    env.globals['get'] = jinja_env.jget
-    env.globals['tolist'] = jinja_env.tolist
-
-    filters['as_set'] =  jinja_env.as_set
-    filters['format_list'] =jinja_env.format_list
-    filters['format_join'] = jinja_env.format_join
-    filters['format_join_enum'] = jinja_env.format_join_enum
-    filters['pm'] = lambda x: f" {x}" if x < 0 else f"+{x}"
-    filters['bold'] = bold
-    filters['capfirst'] = lambda x: (x[0].upper() + x[1:] if len(x) > 1 else x.upper()) if x != None and isinstance(x, str) else x
-    filters['lowerfirst'] = lambda x: (x[0].lower() + x[1:] if len(x) > 1 else x.lower()) if x != None and isinstance(x, str) else x
-    filters['infty'] = jinja_env.infty
-    filters['n2w'] = jinja_env.n2w
-    def latex_url(url):
-        if not isinstance(url, str):
-            return url
-        url = url.replace("%", r"\%")
-        return url
-    filters['latex_url'] = latex_url
-    filters['format_list_symbols'] = jinja_env.format_list_symbols
-    filters['mround'] = mround
-    def eround(val,l):
-        x = str(mround(val, l))
-        if l == 0:
-            return x
-        if '.' not in x:
-            x = x + "."
-        n = l - (len(x) - x.find(".") - 1)
-        if n > 0:
-            x = x + "0"*n
-        return x
-
-    filters['eround'] = eround
-    filters['get'] = jinja_env.jget
-    filters['flatten'] = jinja_env.flatten
-    filters['aan'] = jinja_env.aan
-    filters['bracket'] = bracket
-    filters['tolist'] = jinja_env.tolist
-    filters['rational'] = jinja_env.as_rational
-    filters['permute_exam_answers'] = jinja_env.permute_exam_answers
-    env.filters.update(filters)
-
-    data['block_start_string'] = '{%'
-    if not template_searchpath:
-        jinja_out = env.from_string(jinja_code).render(data)
-    else:
-        file_in = file_in.replace("\\", "/")
-        template = env.get_template(file_in)
-        jinja_out = template.render(data)
-
-    if file_out is not None:
-        with open(file_out,'w',encoding='utf-8') as f:
-            # jinja_out = jinja_out.encode('utf-8')
-
-            f.write(jinja_out)
-            print("Writing to: " + file_out)
-
-    return jinja_out
-
-
-def bold(bob,d=True) :
-    if not isinstance(bob, str) :
-        bob = str(bob)
-    if d :
-        bob = '\\textbf{' + bob +"}"
-    return bob
-
-
-def fmat(bob,l=2,dobold=False) :
-    bob = mround(bob,l)
-    bob = bold(bob, dobold)
-    return bob
-
-def bracket(s):
-    return "{"+str(s)+"}"
-
-def un2str(x, xe, precision=2):
-    """pretty print nominal value and uncertainty
-
-        x  - nominal value
-        xe - uncertainty
-        precision - number of significant digits in uncertainty
-
-        returns shortest string representation of `x +- xe` either as
-        x.xx(ee)e+xx
-        or as
-        xxx.xx(ee)"""
-    # base 10 exponents
-    x_exp = int(floor(log10(x)))
-    xe_exp = int(floor(log10(xe)))
-
-    # uncertainty
-    un_exp = xe_exp - precision + 1
-    un_int = round(xe * 10 ** (-un_exp))
-
-    # nominal value
-    no_exp = un_exp
-    no_int = round(x * 10 ** (-no_exp))
-
-    # format - nom(unc)exp
-    fieldw = x_exp - no_exp
-    fmt = '%%.%df' % fieldw
-    result1 = (fmt + '(%.0f)e%d') % (no_int * 10 ** (-fieldw), un_int, x_exp)
-
-    # format - nom(unc)
-    fieldw = max(0, -no_exp)
-    fmt = '%%.%df' % fieldw
-    result2 = (fmt + '(%.0f)') % (no_int * 10 ** no_exp, un_int * 10 ** max(0, un_exp))
-
-    # return shortest representation
-    if len(result2) <= len(result1):
-        return result2
-    else:
-        return result1
-
-
-def mround(val, l=2):
-    if not isinstance(l, int):
-        return un2str(val, l, 1)
-    else:
-        if isinstance(val, np.ndarray):
-            return np.round(val * 10 ** l) / (10 ** l)
-        else:
-            return round(val * 10 ** l) / (10 ** l)
-
-
-def transpose(X):
-    return np.transpose( ensure_numpy( X) )
-
-
-def ensure_numpy(X):
-    if type(X) != np.ndarray:
-        X = np.asarray(X)
-    if X.ndim == 1:
-        X = np.transpose( np.expand_dims(X,1) )
-    return X
\ No newline at end of file
diff --git a/build/lib/jinjafy/plot/__init__.py b/build/lib/jinjafy/plot/__init__.py
deleted file mode 100644
index d2254a59f55bb578875e2f0e81c6aa4264e14025..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/plot/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# from thtools.plot.plot_helpers import *
diff --git a/build/lib/jinjafy/plot/plot_helpers.py b/build/lib/jinjafy/plot/plot_helpers.py
deleted file mode 100644
index 594e7182f50c536f1b6c5b7d8542f631325b1425..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/plot/plot_helpers.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import matplotlib.pyplot as plt
-import numpy as np
-import seaborn as sns
-import inspect
-import os
-from datetime import datetime
-
-def subplots(nrows=2, ncols=2, size_inches=(10,12), *args):
-    fig,axx = plt.subplots(nrows, ncols, *args)
-    fig.set_size_inches(size_inches[0], size_inches[1])
-    if not isinstance(axx, list):
-        axx = np.asarray(axx, dtype=np.object).reshape((nrows, ncols))
-    return fig, axx
-
-def get_colors(palette="dark",max_colors=5):
-    return sns.color_palette(palette, max_colors)
-
-
-def watermark_plot(extra="", nback=2, fz_y=10):
-    # from slider.thtools_base import watermark_string
-    s = watermark_string(nback=nback)
-    plt.figtext(0.05, 0.95, s)
-
-
-
-def watermark_string(nback=2):
-
-
-    tm =  datetime.now().strftime('%b-%d-%I:%M%p')
-    # for line in traceback.format_stack():
-    #     #     print(line.strip())
-    v = inspect.stack()
-    ss = []
-    j = 0
-    for i in range(len(v)):
-        if "plot_helpers.py" in v[i].filename: continue
-        ss.append( os.path.basename( v[i].filename) )
-        j = j + 1
-        if j > nback: break
-    # from thtools import execute_command
-    from jinjafy import execute_command
-    v, _ = execute_command("git rev-parse --short HEAD".split())
-
-    ss.append(tm)
-    return ('/'.join(ss) + f" @{v}").strip()
-
-
-
diff --git a/build/lib/jinjafy/snipper.py b/build/lib/jinjafy/snipper.py
deleted file mode 100644
index ad55d29ae0dcc9746768c017852d129e98ed5d3c..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/snipper.py
+++ /dev/null
@@ -1,89 +0,0 @@
-from jinja2 import nodes
-from jinja2.ext import Extension
-import os
-
-
-class SnipperExtension(Extension):
-    # a set of names that trigger the extension.
-    tags = set(['snipper'])
-
-    def __init__(self, environment):
-        super(SnipperExtension, self).__init__(environment)
-
-        # add the defaults to the environment
-        environment.extend(
-            fragment_cache_prefix='',
-            fragment_cache=None
-        )
-        self.ofile = ""
-
-    def parse(self, parser):
-        # the first token is the token that started the tag.  In our case
-        # we only listen to ``'cache'`` so this will be a name token with
-        # `cache` as value.  We get the line number so that we can give
-        # that line number to the nodes we create by hand.
-        lineno = next(parser.stream).lineno
-
-        # now we parse a single expression that is used as cache key.
-        args = [parser.parse_expression()]
-        ofile = os.path.join(os.path.dirname(parser.filename), args[0].value)
-        args[0].value = ofile
-        if not os.path.isdir(os.path.dirname(ofile)):
-            os.makedirs(os.path.dirname(ofile))
-        self.ofile = ofile
-        print("Snipper args", args, "ofile", ofile)
-
-        # if there is a comma, the user provided a timeout.  If not use
-        # None as second parameter.
-        if parser.stream.skip_if('comma'):
-            args.append(parser.parse_expression())
-        else:
-            args.append(nodes.Const(None))
-
-        # now we parse the body of the cache block up to `endcache` and
-        # drop the needle (which would always be `endcache` in that case)
-        body = parser.parse_statements(['name:endsnipper'], drop_needle=True)
-
-        # now return a `CallBlock` node that calls our _cache_support
-        # helper method on this extension.
-        return nodes.CallBlock(self.call_method('_snip_method', args),
-                                [], [], body).set_lineno(lineno)
-
-        # parser.environment.loader.searchpath
-        # parser.parse_statements(body)
-        return body
-
-    def _snip_method(self, name, timeout, caller):
-        # rv = 0
-        # key = self.environment.fragment_cache_prefix + name
-
-        # try to load the block from the cache
-        # if there is no fragment in the cache, render it and store
-        # it in the cache.
-        # rv = self.environment.fragment_cache.get(key)
-        # if rv is not None:
-        #     return rv
-        rv = caller()
-        outfile = name
-        print("Actually snipping to ", self.ofile, "name", name, "timeout", timeout)
-        with open(name, 'w') as f:
-            f.write(rv)
-        # print("Actually snipping to ", self.ofile, 'writing', rv)
-
-        # self.environment.fragment_cache.add(key, rv, timeout)
-        return rv
-
-
-    def _cache_support(self, name, timeout, caller):
-        """Helper callback."""
-        key = self.environment.fragment_cache_prefix + name
-
-        # try to load the block from the cache
-        # if there is no fragment in the cache, render it and store
-        # it in the cache.
-        rv = self.environment.fragment_cache.get(key)
-        if rv is not None:
-            return rv
-        rv = caller()
-        self.environment.fragment_cache.add(key, rv, timeout)
-        return rv
\ No newline at end of file
diff --git a/build/lib/jinjafy/textools.py b/build/lib/jinjafy/textools.py
deleted file mode 100644
index 511932d118708e006a70e908b681fd50643a8647..0000000000000000000000000000000000000000
--- a/build/lib/jinjafy/textools.py
+++ /dev/null
@@ -1,187 +0,0 @@
-from jinjafy import jinjafy_comment
-import numpy as np
-
-#"<jinja1>"
-#\begin{tabular}{ {{cc}} }
-# {% if bookstabs %}\toprule{% endif %}
-# {% if vvlabels %}
-#   {% for vl in vvlabels %}
-#       {% if loop.index > 1 %} & {% endif %}  \multicolumn{ {{vl[0]}} }{ {{vl[2]}} }{ {{vl[1]}} }
-#   {% endfor %} \\
-#   {% for vl in vvlabels %}
-#       {% if vl[3] %}
-# 	     \cmidrule(r){ {{vl[3]}} }
-#       {% endif %}
-#   {% endfor %}
-# {% endif %}
-# {% for row in X %}
-# {% if bookstabs and loop.index == 2%}\midrule{% endif %}
-# {% for c in row %}
-# {% if loop.index > 1 %} & {% endif %} {{ c['tex'] }} {% if loop.index == W %} \\ {% endif %}
-# {% endfor %}
-# {% endfor %}
-# {% if bookstabs %}\bottomrule{% endif %}
-#\end{tabular}
-#</jinja1>
-# Convert a matrix to a table super quickly
-def mat2table(X,vlabels=None,hlabels=None,file_out = None, bookstabs=True, vvlabels=None,plot=False,pdf_out=None, standalone=False):
-    X, Xx, Xerr,Xdl = fmat_X2dict(X)
-    if pdf_out: plot = True
-    #%%
-    if plot:
-        import matplotlib.pyplot as plt
-        #plt.style.use('ggplot')
-        plt.style.use('seaborn')
-        fig = plt.figure()
-        ax = fig.gca()
-        #ax = plt.gca()
-        ls = []
-        for j in range(X.shape[0]):
-            ls.append(ax.plot(Xx[j, :]).pop() )
-
-            if Xerr[j]:
-                plt.errorbar(range(X.shape[1]), Xx[j,:], yerr=Xerr[j], color=ls[j].get_color())
-
-            for i in range( X.shape[1] ):
-                if 'xs' in X[j,i]:
-                    plt.plot([i]*len(X[j,i]['xs']), X[j,i]['xs'], '.', color=ls[j].get_color())
-
-        if vlabels:
-            plt.legend(ls, vlabels, bbox_to_anchor=(1.04, 1), loc="upper left")
-        if hlabels:
-            plt.xticks(range(X.shape[1]), hlabels[1:])
-        #plt.subplots_adjust(right=0.5)
-        plt.tight_layout(rect=[0, 0, 1, 1])
-        plt.show()
-        #if pdf_out:
-        #    fig.savefig(pdf_out, bbox_inches='tight')
-
-
-    if vlabels:
-        vltex =  [{'tex': v} for v in vlabels]
-        for i in range(len(Xdl)):
-            Xdl[i] = [vltex[i]] + Xdl[i]
-
-    if hlabels:
-        Xdl = [ [{'tex': h} for h in hlabels] ] + Xdl
-
-    if vvlabels:
-        cc = 1
-        for i in range(len(vvlabels)):
-            if len(vvlabels[i]) < 3:
-                vvlabels[i].append("c")
-            dl = vvlabels[i][0]
-            if dl == 1:
-                a = None
-            else:
-                a = "%i-%i"%(cc, cc+dl-1)
-            cc = cc + dl
-            vvlabels[i] = vvlabels[i] + [a]
-
-    H = len(Xdl)
-    W = len(Xdl[0])
-    cc = ["c" for i in range(W)]
-    if vlabels:
-        cc[0] = "l"
-    cc = "".join(cc)
-
-    def fmat(x):
-        if isinstance(x, int):
-            x = str(x)
-        if isinstance(x, float):
-            x = "%2.3f"%x
-        return x
-
-    #X = [ [fmat(x) for x in row] for row in X]
-
-    data = {'X' : Xdl, 'hlabels': hlabels, 'vlabels': vlabels, 'cc': cc, 'H':H, 'W': W, 'bookstabs': bookstabs,
-            'vvlabels': vvlabels}
-
-    from jinjafy.jinjafy import jinjafy_comment
-    s = jinjafy_comment(data,jinja_tag="jinja1")
-    if file_out:
-        print("Writing to: " + file_out)
-
-        if standalone:
-            s = jinjafy_comment({"s": s}, jinja_tag="jinja3")
-
-        with open(file_out, 'w') as f:
-            f.write(s)
-        if standalone:
-
-            from slider import latexmk
-            latexmk(file_out)
-
-
-    return s
-# "<jinja3>"
-# \documentclass[crop]{standalone}
-# \usepackage{booktabs}
-# \usepackage{siunitx}
-# \begin{document}
-# {{s}}
-# \end{document}
-# </jinja3>
-
-def fmat_X2dict(X):
-    X = np.asarray(X, dtype=np.object)
-    if len(X.shape) > 2:
-        X2 = np.ndarray(X.shape[:2], dtype=np.object)
-        for i in range(X.shape[0]):
-            for j in range(X.shape[1]):
-                X2[i, j] = X[i, j, :].squeeze()
-        X = X2
-    X = np.reshape(X, X.shape[:2])
-
-    for i in range(X.shape[0]):
-        for j in range(X.shape[1]):
-            dx = X[i,j]
-            if isinstance(dx, (list, np.ndarray)):
-                dx = [x for x in np.ravel(dx)]
-
-            if not isinstance(dx, dict):
-                dx = {'x': dx}
-            elif not isinstance(dx['x'], str):
-                x = dx['x']
-                # if isinstance(x, np.ndarray):
-                if 'tex' not in dx:
-                    dx['std'] = np.std(x)
-                    dx['std_mean'] = np.std(x) / np.sqrt( len(x))
-                    dx['xs'] = x
-                    dx['x'] = np.mean(x)
-                    x2, u2 = mround( dx['x'], dx['std_mean'] )
-
-                    dx['tex'] = '\\SI{%g\\pm %.2f}{}'%(x2, u2)
-
-            if 'tex' not in dx:
-                dx['tex'] = dx['x']
-
-            X[i,j] = dx
-
-    Xerr = [None] * X.shape[0]
-    Xx = np.zeros(X.shape)
-
-    for i in range(X.shape[0]):
-        if "std" in X[0,0]:
-            Xerr[i] = [dx['std_mean'] for dx in X[i]]
-
-        for j in range(X.shape[1]):
-            Xx[i,j] = X[i,j]['x']
-
-    Xdl = []
-    for i in range(X.shape[0]):
-        dx = []
-        for j in range(X.shape[1]):
-            dx.append(X[i,j])
-        Xdl.append(dx)
-
-
-    return X,Xx,Xerr,Xdl
-
-import math
-def mround(x,u):
-    n = np.floor(np.log10(x)+1)
-    dx = np.round(x / np.power(10.0, n), 2)
-    du = np.round(u / np.power(10.0, n), 2)
-    return dx * np.power(10, n), du * np.power(10.0,n)
-
diff --git a/build/lib/slider/DTU_Beamer_files/02450_beamer_preamble.tex b/build/lib/slider/DTU_Beamer_files/02450_beamer_preamble.tex
deleted file mode 100644
index 2dd8694d7ac59705810fe9deb9816ad20f034655..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/02450_beamer_preamble.tex
+++ /dev/null
@@ -1,93 +0,0 @@
-% WARNING! This file was automatically generated; see slider/DTU_Beamer_files for original version.
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[english]{babel}
-\usepackage{pgfplots}
-\pgfplotsset{compat=newest}
-\usepackage{booktabs}
-\usepackage{siunitx}
-
-\usepackage[inkscape=true,inkscapeformat=pdf,inkscapelatex=true]{svg}
-\svgpath{osvgs/}
-
-\usepackage{url}
-\usepackage{pmboxdraw}
-\usepackage{amssymb}
-\usepackage{pgffor}
-	
-\usetheme[department=compute]{DTU}
-\newcommand{\tabitem}{{\color{dtured}$\bullet$} }
-\usepackage[absolute,overlay]{textpos}
-\textblockorigin{0mm}{0mm}
-
-\setlength{\TPHorizModule}{\paperwidth}
-\setlength{\TPVertModule}{\paperheight}
-
-% Latin Modern
-\usepackage{lmodern}
-\newcommand{\overlabel}[1]{ \begin{textblock}{1}(0,0) \url{#1} \end{textblock} }
-
-% Verdana font type
-%\usepackage{verdana}
-% Helvetica
-%\usepackage{helvet}
-% Times (text and math)
-%\usepackage{newtx, newtxmath}
-
-% \usetheme[department=compute]{DTU}
-
-\makeatletter
-
-\def\osvg{\@ifnextchar[{\@with}{\@without} }
-\def\@with[#1]#2{
-	\foreach[count=\n] \x in {#1}{
-		\iftoggle{overlabel_includesvgs}{
-			\IfFileExists{osvgs/x_do_not_edit_#2-l\n_nofonts.pdf}{
-			\begin{textblock}{1}(0,0)
-				\includegraphics<\x>[width=1.0\linewidth]{osvgs/x_do_not_edit_#2-l\n_nofonts}
-			\end{textblock}
-			}{ File: \url{osvgs/x_do_not_edit_#2-l\n_nofonts.pdf} does not exist; bad layer import? Check \url{osvgs/#2.svg} including layer information.
-			}
-		}
-	}
-	\olabel{#2}
-}
-\def\@without#1{
-	% Try to include first 10 layer files if they are there.
-	\foreach[count=\n] \x in {1,...,10}{
-		\iftoggle{overlabel_includesvgs}{
-			\IfFileExists{osvgs/x_do_not_edit_#1-l\n_nofonts.pdf}{
-				\begin{textblock}{1}(0,0)
-					\includegraphics<\n->[width=1.0\linewidth]{osvgs/x_do_not_edit_#1-l\n_nofonts}
-				\end{textblock}
-			}{
-		}
-	}
-	}
-	\olabel{#1}
-}
-\newcommand{\olabel}[1]{
-	\iftoggle{overlabel_includelabels}{
-		\begin{textblock}{1}(0,0) \url{#1} \end{textblock}
-	}{ 
-	\begin{textblock}{1}(0,0) 	{\color{white} \url{#1} } \end{textblock}
-	}
-}
-
-\makeatother
-
-\makeatother
-\ifdefined\bluem
-% nothing.
-\else
-
-\newcommand\bluem[1]{{\textcolor[rgb]{0.20, 0.40, 0.80}{ #1 }}}
-\newcommand\redm[1]{{\textcolor[rgb]{0.60, 0.00, 0.00}{ #1 }}}
-\newcommand\greenm[1]{{\textcolor[HTML]{398E00}{ #1 }}}
-\newcommand\yellowm[1]{{\textcolor[rgb]{1.00, 0.80, 0.00}{ #1 }}}
-				
-\newcommand\bluet[1]{{\textcolor[rgb]{0.20, 0.40, 0.80}{\textbf{#1}}}}
-\newcommand\redt[1]{{\textcolor[rgb]{0.60, 0.00, 0.00}{\textbf{#1}}}}
-\newcommand\greent[1]{{\textcolor[HTML]{398E00}{\textbf{#1}}}}
-\newcommand\yellowt[1]{{\textcolor[rgb]{1.00, 0.80, 0.00}{\textbf{#1}}}}
-\fi
\ No newline at end of file
diff --git a/build/lib/slider/DTU_Beamer_files/02450_lectures_base.tex b/build/lib/slider/DTU_Beamer_files/02450_lectures_base.tex
deleted file mode 100644
index c8c834a522846e935a44878b7140c5f2d0a6ebfe..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/02450_lectures_base.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-\documentclass[aspectratio=43]{beamer}
-\usepackage{etoolbox}
-\newtoggle{overlabel_includesvgs}
-\newtoggle{overlabel_includelabels}
-
-\toggletrue{overlabel_includesvgs}
-\toggletrue{overlabel_includelabels}
-
-\input{02450_beamer_preamble}
-
-\IfFileExists{generated/slide1.tex}{ \input{generated/slide1} }{ }
-\begin{document}
-	\begin{frame}
-	\maketitle
-\end{frame}
-\begin{frame}
-\IfFileExists{generated/slide2.tex}{ \input{generated/slide2} }{ }
-\end{frame}
-\begin{frame}
-\IfFileExists{generated/slide3.tex}{ \input{generated/slide3} }{ }
-\end{frame}
-
-\input{svg_converted_slides}
-
-\end{document}
diff --git a/build/lib/slider/DTU_Beamer_files/beamer_slider_preamble.tex b/build/lib/slider/DTU_Beamer_files/beamer_slider_preamble.tex
deleted file mode 100644
index 2dd8694d7ac59705810fe9deb9816ad20f034655..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamer_slider_preamble.tex
+++ /dev/null
@@ -1,93 +0,0 @@
-% WARNING! This file was automatically generated; see slider/DTU_Beamer_files for original version.
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage[english]{babel}
-\usepackage{pgfplots}
-\pgfplotsset{compat=newest}
-\usepackage{booktabs}
-\usepackage{siunitx}
-
-\usepackage[inkscape=true,inkscapeformat=pdf,inkscapelatex=true]{svg}
-\svgpath{osvgs/}
-
-\usepackage{url}
-\usepackage{pmboxdraw}
-\usepackage{amssymb}
-\usepackage{pgffor}
-	
-\usetheme[department=compute]{DTU}
-\newcommand{\tabitem}{{\color{dtured}$\bullet$} }
-\usepackage[absolute,overlay]{textpos}
-\textblockorigin{0mm}{0mm}
-
-\setlength{\TPHorizModule}{\paperwidth}
-\setlength{\TPVertModule}{\paperheight}
-
-% Latin Modern
-\usepackage{lmodern}
-\newcommand{\overlabel}[1]{ \begin{textblock}{1}(0,0) \url{#1} \end{textblock} }
-
-% Verdana font type
-%\usepackage{verdana}
-% Helvetica
-%\usepackage{helvet}
-% Times (text and math)
-%\usepackage{newtx, newtxmath}
-
-% \usetheme[department=compute]{DTU}
-
-\makeatletter
-
-\def\osvg{\@ifnextchar[{\@with}{\@without} }
-\def\@with[#1]#2{
-	\foreach[count=\n] \x in {#1}{
-		\iftoggle{overlabel_includesvgs}{
-			\IfFileExists{osvgs/x_do_not_edit_#2-l\n_nofonts.pdf}{
-			\begin{textblock}{1}(0,0)
-				\includegraphics<\x>[width=1.0\linewidth]{osvgs/x_do_not_edit_#2-l\n_nofonts}
-			\end{textblock}
-			}{ File: \url{osvgs/x_do_not_edit_#2-l\n_nofonts.pdf} does not exist; bad layer import? Check \url{osvgs/#2.svg} including layer information.
-			}
-		}
-	}
-	\olabel{#2}
-}
-\def\@without#1{
-	% Try to include first 10 layer files if they are there.
-	\foreach[count=\n] \x in {1,...,10}{
-		\iftoggle{overlabel_includesvgs}{
-			\IfFileExists{osvgs/x_do_not_edit_#1-l\n_nofonts.pdf}{
-				\begin{textblock}{1}(0,0)
-					\includegraphics<\n->[width=1.0\linewidth]{osvgs/x_do_not_edit_#1-l\n_nofonts}
-				\end{textblock}
-			}{
-		}
-	}
-	}
-	\olabel{#1}
-}
-\newcommand{\olabel}[1]{
-	\iftoggle{overlabel_includelabels}{
-		\begin{textblock}{1}(0,0) \url{#1} \end{textblock}
-	}{ 
-	\begin{textblock}{1}(0,0) 	{\color{white} \url{#1} } \end{textblock}
-	}
-}
-
-\makeatother
-
-\makeatother
-\ifdefined\bluem
-% nothing.
-\else
-
-\newcommand\bluem[1]{{\textcolor[rgb]{0.20, 0.40, 0.80}{ #1 }}}
-\newcommand\redm[1]{{\textcolor[rgb]{0.60, 0.00, 0.00}{ #1 }}}
-\newcommand\greenm[1]{{\textcolor[HTML]{398E00}{ #1 }}}
-\newcommand\yellowm[1]{{\textcolor[rgb]{1.00, 0.80, 0.00}{ #1 }}}
-				
-\newcommand\bluet[1]{{\textcolor[rgb]{0.20, 0.40, 0.80}{\textbf{#1}}}}
-\newcommand\redt[1]{{\textcolor[rgb]{0.60, 0.00, 0.00}{\textbf{#1}}}}
-\newcommand\greent[1]{{\textcolor[HTML]{398E00}{\textbf{#1}}}}
-\newcommand\yellowt[1]{{\textcolor[rgb]{1.00, 0.80, 0.00}{\textbf{#1}}}}
-\fi
\ No newline at end of file
diff --git a/build/lib/slider/DTU_Beamer_files/beamercolorthemeDTU.sty b/build/lib/slider/DTU_Beamer_files/beamercolorthemeDTU.sty
deleted file mode 100644
index 8e406d195b7a016415ed00d0b0d42a0dd8b914bd..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamercolorthemeDTU.sty
+++ /dev/null
@@ -1,29 +0,0 @@
-% beamercolorthemeDTU.sty
-% This file is a part of the DTU beamer package and makes sure that
-% the DTU colours are available. This file does neither redefine 
-% beamer settings, nor does it add new configurations. It has to be 
-% maintained for backward compatibility.
-%
-% Changelog
-% 2011-06-23 jowr Replaced the old colour definitions with the new ones from the design guide
-% 2011-07-05 jowr Added alternative colours for the graphs
-% 2011-08-16 jowr Moved colour definitions to resources folder, also used in poster class
-% 2014-09-27 jowr Added documentation and prepared merge to git repository
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Load the file if it exists, throw a warning otherwise
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-\InputIfFileExists{dtucolours}{
-    \PackageInfo{dtubeamer}{Successfully loaded the DTU colours.}
-  }{
-    \PackageWarning{dtubeamer}{Could not load the colours from dtucolours.sty. This compilation is likely to fail.}
-  }%
-
-\mode<presentation>
-
-% The new design does not need any adaption here, black is 
-% the default colour. 
-
-\mode<all> 
\ No newline at end of file
diff --git a/build/lib/slider/DTU_Beamer_files/beamerfontthemeDTU.sty b/build/lib/slider/DTU_Beamer_files/beamerfontthemeDTU.sty
deleted file mode 100644
index 49c4eab954b5f0d2e9abbbe1034921d212d260af..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamerfontthemeDTU.sty
+++ /dev/null
@@ -1,38 +0,0 @@
-% Copyright 2014 by Remus Mihail Prunescu
-
-% LaTeX Support Group 2014
-% DTU Official Presentation
-
-% For PDFLATEX
-\usefonttheme{professionalfonts}
-
-% Title font
-\setbeamerfont{title}{size=\large, series=\bfseries}
-\setbeamercolor{title}{fg=black}
-
-% Subtitle font
-\setbeamerfont{subtitle}{size=\small, series=\normalfont}
-
-% Author font
-\setbeamerfont{author}{size=\small, series=\normalfont}
-
-% Footline
-\setbeamerfont{framecounter in head/foot}{size=\tiny}
-\setbeamerfont{department in head/foot}{size=\tiny, series=\bfseries}
-\setbeamerfont{title in head/foot}{size=\tiny}
-\setbeamerfont{date in head/foot}{size=\tiny}
-
-% Frametitle
-\setbeamerfont{frametitle}{size=\large, series=\bfseries}
-\setbeamerfont{block body}{size=\small}
-\setbeamerfont{section title}{size=\small}
-\setbeamerfont{block body alerted}{size=\small}
-\setbeamerfont{block body example}{size=\small}
-\setbeamerfont{block title}{size=\large,parent={structure,block body}}
-\setbeamerfont{block title alerted}{parent={block title,alerted text}}
-\setbeamerfont{block title example}{parent={block title,example text}}
-\setbeamerfont{itemize/enumerate body}{size=\small}
-
-% Colors
-\setbeamercolor{frametitle}{fg=black}
-\setbeamercolor{structure}{fg=black}
\ No newline at end of file
diff --git a/build/lib/slider/DTU_Beamer_files/beamerinnerthemeDTU.sty b/build/lib/slider/DTU_Beamer_files/beamerinnerthemeDTU.sty
deleted file mode 100644
index 9e464ffdc2be91d9a1d1ef8afc917d90fcf63f94..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamerinnerthemeDTU.sty
+++ /dev/null
@@ -1,52 +0,0 @@
-% Copyright 2007 by Till Tantau
-% Copyright 2010 by Remus Mihail Prunescu
-
-% LaTeX Support Group 2010
-% DTU Official Presentation
-
-
-\mode<presentation>
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Title page: DTU
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\defbeamertemplate*{title page}{DTU}[1][]
-{
-	% Set bInTitle to true to make sure the right footline is printed
-	\global\edef\bInTitle{true}
-	
-	\linespread{1.45}
-	% Content of the title page
-	
-	% Title + Subtitle
-	\vspace{\dimTitleOffset}
-	\begin{beamercolorbox}[left]{title box}
-		\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle\par
-		\ifx\insertsubtitle\@empty
-		\else
-			\vspace{\dimSubtitleOffset}
-			{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}
-		\fi
-	\end{beamercolorbox}
-	
-	\vspace{\dimAuthorOffset}
-	% Author
-	\begin{beamercolorbox}[left]{author box}
-		\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor
-	\end{beamercolorbox}
-	
-	\vspace{\dimInstituteOffset}% Institute
-	\begin{beamercolorbox}[left]{institute box}
-		\usebeamerfont{institute}\usebeamercolor[fg]{author}\insertinstitute
-	\end{beamercolorbox}
-
-	% Title graphic
-	{\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
-	
-	% Fill the space till bottom
-	\vskip0pt plus 1filll
-}
-
-\mode
-<all> 
diff --git a/build/lib/slider/DTU_Beamer_files/beamerouterthemeDTU.sty b/build/lib/slider/DTU_Beamer_files/beamerouterthemeDTU.sty
deleted file mode 100644
index 79b75f4c89cf835cdaf4fdd3ffc8a182d485a9cb..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamerouterthemeDTU.sty
+++ /dev/null
@@ -1,98 +0,0 @@
-% Copyright 2014 by Remus Mihail Prunescu
-
-% LaTeX Support Group 2014
-% DTU Official Presentation
-
-\mode<presentation>
-
-\setbeamercolor*{framecounter in head/foot}{parent=palette tertiary}
-\setbeamercolor*{department in head/foot}{parent=palette tertiary}
-\setbeamercolor*{title in head/foot}{parent=palette tertiary}
-\setbeamercolor*{date in head/foot}{parent=palette tertiary}
-
-% No navigation symbols
-\setbeamertemplate{navigation symbols}{} 
-
-% Header
-\setbeamertemplate{headline}
-{
-	\ifdefstring{\bDTUWhiteFrame}{true}
-	{
-		\insertFrameDTUWhiteLogo
-	}
-	{
-		\ifdefstring{\bInTitle}{true}
-		{
-			\insertTitleDTULogo
-		}
-		{
-			\insertFrameDTULogo
-		}
-	}
-}
-
-% Footer
-\setbeamertemplate{footline}
-{
-	\ifdefstring{\bInTitle}{true}
-	{
-		\vspace{-0.35\paperheight}
-		\begin{beamercolorbox}[wd=\paperwidth]{title bottom}
-			\vbox{%
-				\makebox[0pt][l]{\hspace{\dimDTUDepLogoXOffset}\insertdepartmentlogoA}%
-				\vbox{%
-					\hspace{\dimDTUFriseXOffset}%
-					\makebox[0pt][l]{\insertDTUFrise}%
-					\vspace{\dimDTUDepFriseOffset}%
-				}%
-			}%
-			\vspace{\dimDTUFriseYOffset}
-		\end{beamercolorbox}
-		\global\def\bInTitle{false}
-	}
-	{
-		\ifdefstring{\bDTUWhiteFrame}{true}
-		{
-		}
-		{ %
-			\hbox{ %
-				\hspace{\dimTextLeftMargin}\hspace{-1.5pt}\insertframenumber %
-				\setlength{\widthframenumber}{2em + \widthof{\insertframenumber}} %
-				\setlength{\widthdepartment}{1em + \widthof{\insertdepartmentandinstitute}} %
-				\setlength{\widthdate}{1em + \widthof{00 00000000 0000}} % Tue: Added extra 0's (2 to 7) to prevent wrap
-				\setlength{\widthtitle}{\textwidth-\widthframenumber-\widthdepartment-\widthdate-\dimTextLeftMargin-\dimTextLeftMargin} %
-				%\parbox[t]{\widthframenumber}{\insertframenumber} %
-				\parbox[t]{\widthdepartment}{\insertdepartmentandinstitute} %
-				\parbox[t]{\widthtitle}{\raggedleft\insertshorttitleinfooter} %
-				\parbox[t]{\widthdate}{\raggedleft\DTUDateFormat\insertdate} %
-				\vspace{\dimFootlineYOffset} %
-			}
-		}
-	}
-}
-
-% Position the frame title so that it would get into the headline
-\setbeamertemplate{frametitle}
-{
-	\vspace{\dimPlaceTitleInHeader}
-	\ifdefstring{\inShowSection}{true}
-	{
-			\usebeamerfont{section title}\color{black!20}%
-			\ifnumcomp{\thesection}{=}{0}{%
-				\ \par%
-			}
-			{%
-				\insertsection\par
-			}
-	}
-	{
-		\vspace{\dimFrameTitleOffset}
-	}
-	\vspace{-1pt}\usebeamerfont{frametitle}%
-	\ifdefstring{\bDTUWhiteFrame}{true}{\color{white}}{\color{black}}%
-	\insertframetitle
-	\vspace{\dimAfterFrameTitleOffset}
-}
-
-\mode
-<all>
diff --git a/build/lib/slider/DTU_Beamer_files/beamerthemeDTU.sty b/build/lib/slider/DTU_Beamer_files/beamerthemeDTU.sty
deleted file mode 100644
index d8841f692e3920f289df75f62fffc46c869113dc..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/beamerthemeDTU.sty
+++ /dev/null
@@ -1,255 +0,0 @@
-% Copyright Remus Mihail Prunescu
-
-% LaTeX Support Group
-% DTU Official Presentation
-
-\mode<presentation>
-
-\RequirePackage{etoolbox}
-\RequirePackage{datetime}
-\RequirePackage{keyval}
-\RequirePackage{calc}
-
-% Enlarge slide size
-\beamer@paperwidth 1.09375\beamer@paperwidth%
-\beamer@paperheight 1.09375\beamer@paperheight%
-
-% Extra package
-\InputIfFileExists{departments}%
-	{\ClassInfo{}{The file departments.tex with department logo file naming has been loaded.}}%
-	{\ClassInfo{}{The file departments.tex is missing. Consult the manual.}%
-}%
-
-% Default values for options
-\newcommand{\inDepartmentShortName}{elektro}
-\newcommand{\inLanguage}{english}
-\newcommand{\inShowSection}{true}
-
-% Check language
-\@ifpackagewith{babel}{danish}{%
-	\renewcommand{\inLanguage}{danish}%
-}{}
-
-
-% Save options
-\DeclareOptionBeamer{department}{\renewcommand{\inDepartmentShortName}{#1}}
-\DeclareOptionBeamer{showsection}{\renewcommand{\inShowSection}{#1}}
-\ProcessOptionsBeamer
-
-% % % % % % % % % % % %
-% Define Dimensions
-% % % % % % % % % % % %
-
-\newcommand{\dimDTULogoWidth}{0.0394\paperwidth} % Percent
-\newcommand{\dimDTULogoHeight}{0.0777\paperheight} % Percent
-\newcommand{\dimDTULogoYOffset}{0.0404\paperheight} % Percent
-\newcommand{\dimDTULogoXOffset}{0.9176\paperwidth} % Percent
-
-\newcommand{\dimDTUDepLogoXOffset}{0.062\paperwidth} % Percent
-\newcommand{\dimDTUDepLogoHeight}{0.0897\paperheight} % Percent
-
-\newcommand{\dimDTUFriseYOffset}{0.03\paperheight} % Percent
-\newcommand{\dimDTUFriseXOffset}{0.418\paperwidth} % Percent
-\newcommand{\dimDTUFriseHeight}{0.3412\paperheight} % Percent
-\newcommand{\dimDTUDepFriseOffset}{0.018\paperheight} % Percent
-
-\newcommand{\dimTitleOffset}{0.148\paperheight}
-\newcommand{\dimSubtitleOffset}{0.0175\paperheight}
-\newcommand{\dimFrameTitleOffset}{0.033\paperheight}
-\newcommand{\dimAfterFrameTitleOffset}{-0.008\paperheight}
-\newcommand{\dimAuthorOffset}{0.06\paperheight}
-\newcommand{\dimInstituteOffset}{0.027\paperheight}
-
-\newcommand{\dimFootlineYOffset}{0.025\paperheight} % Tue: This was 0.0355 in original file
-
-\newcommand{\dimLeftMarginI}{0.02\paperwidth}
-\newcommand{\dimTextLeftMargin}{0.0669\paperwidth} % Percent
-
-\newcommand{\dimPlaceTitleInHeader}{-0.09\paperheight}
-
-
-\makeatletter
-\setbeamersize{text margin left=\dimTextLeftMargin, text margin right=\dimTextLeftMargin}
-\makeatother
-
-% % % % % % % % % % % %
-% End of Dimensions
-% % % % % % % % % % % %
-
-% New commands to be used in the DTU template
-%\newcommand{\insertdepartmentandinstitute}{\departmenttitle , \institutetitle}
-\newcommand{\insertdepartmentandinstitute}{\departmenttitle}
-\newcommand{\insertDTULogo}{\includegraphics[width=\dimDTULogoWidth]{tex_dtu_logo}}
-\newcommand{\insertDTUWhiteLogo}{}
-\newcommand{\inserttitlefootline}{}
-\newcommand{\inserttitleheadline}{}
-\newcommand{\institutetitle}{}
-
-% Internal variable to check if \titlepage was called: false by default
-\def\bInTitle{false}
-\def\bDTUWhiteFrame{false}
-
-% Process language
-% Is it DK or UK?
-\ifdefstring{\inLanguage}{danish}
-{
-	\renewcommand{\institutetitle}{Danmarks Tekniske Universitet}
-	\renewcommand{\insertDTUWhiteLogo}{\includegraphics[height=\dimDTULogoHeight]{tex_dtu_dk_a1_neg}}
-}
-{
-	\ifdefstring{\inLanguage}{english}
-	{
-		\renewcommand{\institutetitle}{Technical University of Denmark}
-		\renewcommand{\insertDTUWhiteLogo}{\includegraphics[height=\dimDTULogoHeight]{tex_dtu_uk_a1_neg}}
-	}
-	{
-		% Undefined language
-		% Default values are used
-	}
-}
-
-\ifcsdef{department@\inDepartmentShortName}
-{
-	\activateDepartmentInfo{\inLanguage}{\inDepartmentShortName}
-}
-{
-	\PackageError{DTU Beamer Template}{Department is undefined. Reverting to default (elektro).}{Check the user guide for defined departments. If you cannot find it then contact support group to add the department.}
-	\activateDepartmentInfo{\inLanguage}{elektro}
-}
-
-% Command for generating the department title
-\newcommand{\departmenttitle}{\thedepartmentNameText}
-% Command for inserting the department logo
-\newcommand{\insertdepartmentlogoA}{%
-	\ifdefstring{\inDepartmentShortName}{admin}
-	{
-	}
-	{
-		\includegraphics[height=\dimDTUDepLogoHeight]{\thedepartmentLogo}
-	}
-}
-% Command for inserting frise
-\newcommand{\insertDTUFrise}{\includegraphics[height=\dimDTUFriseHeight]{\thedepartmentFrise}}
-
-% Command used from frame DTU logo (headline)
-\newcommand{\insertFrameDTULogo}
-{
-	\vspace{\dimDTULogoYOffset}
-	\begin{beamercolorbox}[right]{logo in head/foot}%
-		\insertDTULogo\makebox[\dimDTULogoWidth][]{}
-	\end{beamercolorbox}
-}
-\newcommand{\insertFrameDTUWhiteLogo}
-{
-	\vspace{\dimDTULogoYOffset}
-	\begin{beamercolorbox}[right]{logo in head/foot}%
-		\insertDTUWhiteLogo\makebox[\dimDTULogoWidth][]{}
-	\end{beamercolorbox}
-}
-
-% Command used in title page for inserting the DTU logo in headline
-\newcommand{\insertTitleDTULogo}
-{
-	\insertFrameDTULogo
-}
-
-% Change themes
-\usefonttheme{DTU}
-\useoutertheme{DTU}
-\useinnertheme{DTU}
-\usecolortheme{DTU}
-
-% Left margin for list environment
-\setlength{\leftmargini}{\dimLeftMarginI}
-
-% Adjust bullets placement
-\setlength\labelsep{3pt}
-
-\setbeamersize{text margin left=\dimTextLeftMargin}
-
-% Itemize
-\setbeamertemplate{items}[circle]
-\setbeamercolor{itemize item}{fg=dtured}
-\setbeamercolor{itemize subitem}{fg=dtured}
-
-\setbeamerfont{section in toc}{size=\small}
-\setbeamerfont{subsection in toc}{size=\scriptsize}
-
-\setbeamertemplate{enumerate items}[circle]
-\setbeamercolor{item projected}{fg=white,bg=dtured}
-
-% Table of contents
-\setbeamertemplate{section in toc}{%
-	\color{dtured}$\bullet$  \inserttocsection \par}
-
-\setbeamertemplate{subsection in toc}{
-	\hskip1em{\color{dtured}$\bullet$} \inserttocsubsection \par}
-
-% Fix space between sections and subsections in toc
-\makeatletter
-\patchcmd{\beamer@sectionintoc}
-  {\vfill}
-  {\vskip\itemsep}
-  {}
-  {}
-\pretocmd{\beamer@subsectionintoc}
-  {\vskip0.5\itemsep}
-  {}
-  {}
-\makeatother 
-
-
-% Date format
-\newcommand{\DTUDateFormat}{\DTUDate}
-\newdateformat{DTUDate}{\THEDAY.\THEMONTH.\THEYEAR}
-
-% Customize blocks
-\setbeamertemplate{blocks}[rounded][shadow=true]
-\setbeamercolor{block title}{fg=white,bg=dtured}
-\setbeamerfont{block title}{series=\bfseries\small}
-\setbeamercolor{block body}{fg=black,bg=white}
-
-
-\newcommand{\defaultDTUFrameStyle}{
-	\setbeamertemplate{background}{}
-	\color{black}
-}
-
-% White DTU frame
-\makeatletter
-\define@key{beamerframe}{dtuwhitelogo}[true]{%
-	\global\def\bDTUWhiteFrame{true}
-	\color{white}
-}
-\define@key{beamerframe}{bgfilename}{%
-	\setbeamertemplate{background}{
-		\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{#1}
-	}
-}
-% Default framestyle
-\pretocmd{\beamer@@@@frame}
-{
-	\global\def\bDTUWhiteFrame{false}
-	\defaultDTUFrameStyle
-}
-{}{}
-\makeatother
-
-% Lengths for footer
-\newlength{\widthframenumber}
-\newlength{\widthdepartment}
-\newlength{\widthtitle}
-\newlength{\widthdate}
-
-% Short title for the footer
-\makeatletter
-\newcommand\insertshorttitleinfooter{%
-	\beamer@shorttitle%
-}
-\makeatother
-
-% Description list
-\setbeamercolor{description item}{fg=dtured}
-
-\mode
-<all>
diff --git a/build/lib/slider/DTU_Beamer_files/blank.png b/build/lib/slider/DTU_Beamer_files/blank.png
deleted file mode 100644
index 082daebc2e8b00d950bcd22987c75a26f0349d97..0000000000000000000000000000000000000000
Binary files a/build/lib/slider/DTU_Beamer_files/blank.png and /dev/null differ
diff --git a/build/lib/slider/DTU_Beamer_files/departments.tex b/build/lib/slider/DTU_Beamer_files/departments.tex
deleted file mode 100644
index d248470b36886f1d90673adbb3acf3af777619d4..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/departments.tex
+++ /dev/null
@@ -1,130 +0,0 @@
-% departments.tex
-% This file is a part of the DTU letter package and contains the file path for
-% the grahic file, and text name for the different departments.
-%
-% Changelog
-% 2010-04-07 Added % at the end of each line to make it possible to use the definitions in the documentation
-% 2010-04-09 Added the 5th mandatory argument (long text name)
-% 2010-04-23 Moved the new argument, #6, to #4 and added all info. However two graphic files are missing and I have therefore made a test: if the graphic file is missing the administration logo is used.  
-% 2013-02-11 Added compute and diplom department entries.  Added check to see that the department macros are defined, otherwise an error is printed.
-% 
-%\makeDepartmentInfo{<danish|english>}{<departmentname>}{<text graphic file name>}{<Big department logo file name>}{<department text name>}{<department long text name>}
-%
-
-\RequirePackage{etoolbox}
-
-\newcommand\setDepartmentNameLogo[1]{\def\@departmentNameLogo{#1}}%
-\newcommand\thedepartmentNameLogo{\@departmentNameLogo}%
-\newcommand\setDepartmentNameText[1]{\def\@departmentNameText{#1}}%
-\newcommand\thedepartmentNameText{\@departmentNameText}%
-\newcommand\setDepartmentLongNameText[1]{\def\@departmentLongNameText{#1}}%
-\newcommand\thedepartmentLongNameText{\@departmentLongNameText}%
-\newcommand\setDepartmentLogo[1]{\def\@departmentLogo{#1}}%
-\newcommand\thedepartmentLogo{\@departmentLogo}%
-\newcommand\setDepartmentFrise[1]{\def\@departmentFrise{#1}}%
-\newcommand\thedepartmentFrise{\@departmentFrise}%
-%
-\newcommand\createDepartment[1]{%
-\expandafter\def\csname department@#1\endcsname{#1}}%
-%
-\newcommand\aliasDepartment[2]{%
-\expandafter\def\csname department@#2\endcsname{#1}}%
-%
-\ifundef{\makeDepartmentInfo}{%
-	\newcommand\makeDepartmentInfo[7]{%
-		\def\@departmentcmd{\csname department@#2\endcsname}
-		\createDepartment{#2}
-		\expandafter\def\csname namelogo#1@\@departmentcmd\endcsname{\setDepartmentNameLogo{#3}}%
-		\expandafter\def\csname deplogo#1@\@departmentcmd\endcsname{\setDepartmentLogo{#4}}%
-		\expandafter\def\csname depfrise#1@\@departmentcmd\endcsname{\setDepartmentFrise{#5}}%
-		\expandafter\def\csname nametext#1@\@departmentcmd\endcsname{\setDepartmentNameText{#6}}%
-		\expandafter\def\csname namelongtext#1@\@departmentcmd\endcsname{\setDepartmentLongNameText{#7}}%
-		
-	}%
-}{}%
-%
-\newcommand\activateDepartmentInfo[2]{%
-	\ifcsname department@#2\endcsname%
-		\def\@departmentcmd{\csname department@#2\endcsname}%
-	\else%
-		\def\@departmentcmd{\department@admin}%
-	\fi%
-	\csname namelogo#1@\@departmentcmd\endcsname% TODO test if command exists before executing it
-	\csname nametext#1@\@departmentcmd\endcsname%
-	\csname namelongtext#1@\@departmentcmd\endcsname%
-	\csname deplogo#1@\@departmentcmd\endcsname%
-	\csname depfrise#1@\@departmentcmd\endcsname%
-	% \fromdepartment{\thedepartmentLongNameText}
-}%
-%
-\makeDepartmentInfo{danish} {aqua}{tex_aqua_dk}{tex_dtu_aqua_a}{tex_dtu_aqua_frise}{DTU Aqua}{Institut for Akvatiske Ressourcer}%
-\makeDepartmentInfo{english}{aqua}{tex_aqua_uk}{tex_dtu_aqua_a_uk}{tex_dtu_aqua_frise}{DTU Aqua}{National Institute of Aquatic Resources}%
-
-\makeDepartmentInfo{danish} {byg}{tex_byg_dk}{tex_dtu_byg_a}{tex_dtu_byg_frise}{DTU Byg}{Institut for Byggeri og Anl\ae g}%
-\makeDepartmentInfo{english}{byg}{tex_byg_uk}{tex_dtu_byg_a_uk}{tex_dtu_byg_frise}{DTU Civil Engineering}{Department of Civil Engineering}%
-
-\makeDepartmentInfo{danish}{compute}{tex_compute_uk}{tex_dtu_compute_a}{tex_dtu_frise}{DTU Compute}{Institut for Matematik og Computer Science}
-\makeDepartmentInfo{english}{compute}{tex_compute_uk}{tex_dtu_compute_a_uk}{tex_dtu_frise}{DTU Compute}{Department of Applied Mathematics and Computer Science}
-
-\makeDepartmentInfo{danish} {elektro}{tex_elektro_dk}{tex_dtu_elektro_a}{tex_dtu_frise}{DTU Elektro}{Institut for Elektroteknologi}
-\makeDepartmentInfo{english}{elektro}{tex_elektro_uk}{tex_dtu_elektro_a_uk}{tex_dtu_frise}{DTU Electrical Engineering}{Department of Electrical Engineering}
-
-\makeDepartmentInfo{danish} {energi}{tex_energikonvertering_dk}{tex_dtu_energi_a}{tex_dtu_energi_frise}{DTU Energi}{Institut for Energikonvertering og -lagring}
-\makeDepartmentInfo{english}{energi}{tex_energikonvertering_uk}{tex_dtu_energi_a_uk}{tex_dtu_energi_frise}{DTU Energy}{Department of Energy Conversion and Storage}
-
-\makeDepartmentInfo{danish} {fotonik}{tex_fotonik_dk}{tex_dtu_fotonik_a}{tex_dtu_frise}{DTU Fotonik}{Institut for Fotonik}
-\makeDepartmentInfo{english}{fotonik}{tex_fotonik_uk}{tex_dtu_fotonik_a_uk}{tex_dtu_frise}{DTU Fotonik}{Department of Photonics Engineering}
-
-\makeDepartmentInfo{danish} {fysik}{tex_fysik_dk}{tex_dtu_fysik_a}{tex_dtu_fysik_frise}{DTU Fysik}{Institut for Fysik}
-\makeDepartmentInfo{english}{fysik}{tex_fysik_uk}{tex_dtu_fysik_a_uk}{tex_dtu_fysik_frise}{DTU Physics}{Department of Physics}
-
-\makeDepartmentInfo{danish} {food}{tex_fodevareinstituttet_dk}{tex_dtu_fdevareinstituttet_a}{tex_dtu_frise}{DTU F\o devareinstituttet}{F\o devareinstituttet}
-\makeDepartmentInfo{english}{food}{tex_fodevareinstituttet_uk}{tex_dtu_fdevareinstituttet_a_uk}{tex_dtu_frise}{DTU Food}{National Food Institute}
-
-\makeDepartmentInfo{danish} {kemi}{tex_kemi_dk}{tex_dtu_kemi_a}{tex_dtu_kemi_frise}{DTU Kemi}{Institut for Kemi}
-\makeDepartmentInfo{english}{kemi}{tex_kemi_uk}{tex_dtu_kemi_a_uk}{tex_dtu_kemi_frise}{DTU Chemistry}{Department of Chemistry}
-
-\makeDepartmentInfo{danish} {kemiteknik}{tex_kemiteknik_dk}{tex_dtu_kemiteknik_a}{tex_dtu_kemiteknik_frise}{DTU Kemiteknik}{Institut for Kemiteknik}
-\makeDepartmentInfo{english}{kemiteknik}{tex_kemiteknik_uk}{tex_dtu_kemiteknik_a_uk}{tex_dtu_kemiteknik_frise}{DTU Chemical Engineering}{Department of Chemical and Biochemical Engineering}
-
-\makeDepartmentInfo{danish} {management}{tex_management_dk}{tex_dtu_management_a}{tex_dtu_frise}{DTU Management}{Institut for Systemer, Produktion og Ledelse}
-\makeDepartmentInfo{english}{management}{tex_management_uk}{tex_dtu_management_a_uk}{tex_dtu_frise}{DTU Management Engineering}{Department of Management Engineering}
-
-\makeDepartmentInfo{danish} {mekanik}{tex_mekanik_dk}{tex_dtu_mekanik_a}{tex_dtu_mek_frise}{DTU Mekanik}{Institut for Mekanisk Teknologi}
-\makeDepartmentInfo{english}{mekanik}{tex_mekanik_uk}{tex_dtu_mekanik_a_uk}{tex_dtu_mek_frise}{DTU Mechanical Engineering}{Department of Mechanical Engineering}
-
-\makeDepartmentInfo{danish} {miljo}{tex_miljo_dk}{tex_dtu_milj_a}{tex_dtu_miljoe_frise}{DTU Milj\o}{Institut for Vand og Milj\o teknologi}
-\makeDepartmentInfo{english}{environmentalEng}{tex_miljo_uk}{tex_dtu_milj_a_uk}{tex_dtu_miljoe_frise}{DTU Environment}{Department of Environmental Engineering}
-
-\makeDepartmentInfo{danish} {nanotek}{tex_nanotek_dk}{tex_dtu_nanotek_a}{tex_dtu_frise}{DTU Nanotek}{Institut for Mikro- og Nanoteknologi}
-\makeDepartmentInfo{english}{nanotek}{tex_nanotek_uk}{tex_dtu_nanotek_a_uk}{tex_dtu_frise}{DTU Nanotech}{Department of Micro- and Nanotechnology}
-
-\makeDepartmentInfo{danish} {space}{tex_space_dk}{tex_dtu_space_a}{tex_dtu_space_frise}{DTU Space}{Institut for Rumforskning og Rumteknologi}
-\makeDepartmentInfo{english}{space}{tex_space_uk}{tex_dtu_space_a_uk}{tex_dtu_space_frise}{DTU Space}{National Space Institute}
-
-\makeDepartmentInfo{danish} {systembiologi}{}{tex_dtu_systembiologi_a}{tex_dtu_frise}{DTU Systembiologi}{Institut for Systembiologi}
-\makeDepartmentInfo{english}{systembiologi}{}{tex_dtu_systembiologi_a_uk}{tex_dtu_frise}{DTU Systems Biology}{Department of Systems Biology}
-
-\makeDepartmentInfo{danish} {transport}{tex_transport_dk}{tex_dtu_transport_a}{tex_dtu_transport_frise}{DTU Transport}{Institut for Transport}
-\makeDepartmentInfo{english}{transport}{tex_transport_uk}{tex_dtu_transport_a_uk}{tex_dtu_transport_frise}{DTU Transport}{Department of Transport}
-
-\makeDepartmentInfo{danish} {vaterinaerinstituttet}{tex_veterinaertinstituttet_dk}{tex_dtu_veterinerinstituttet_a}{tex_dtu_vet_frise}{DTU Veterin\ae rinstituttet}{Veterin\ae rinstituttet}
-\makeDepartmentInfo{english}{vaterinaerinstituttet}{tex_veterinaertinstituttet_uk}{tex_dtu_veterinerinstituttet_a_uk}{tex_dtu_vet_frise}{DTU Vet}{National Veterinary Institute}
-
-\makeDepartmentInfo{danish} {vindenergi}{tex_vindenergi_dk}{tex_dtu_vindenergi_a}{tex_dtu_vindenergi_frise}{DTU Vindenergi}{Institut for Vindenergi}
-\makeDepartmentInfo{english}{vindenergi}{tex_vindenergi_uk}{tex_dtu_vindenergi_a_uk}{tex_dtu_vindenergi_frise}{DTU Wind Energy}{Department of Wind Energy}
-
-
-% Extra
-\makeDepartmentInfo{danish} {bibliotek}{tex_bibliotek_dk}{tex_dtu_bibliotek_a}{tex_dtu_bibliotek_frise}{DTU Bibliotek}{Danmarks Tekniske Informationcenter}%
-\makeDepartmentInfo{english}{bibliotek}{tex_bibliotek_uk}{tex_dtu_bibliotek_uk_a}{tex_dtu_bibliotek_frise}{DTU Library}{Technical Information Center of Denmark}%
-
-\makeDepartmentInfo{danish} {admin}{tex_dtu_navn_dk}{}{tex_dtu_frise}{Danmarks Tekniske Universitet}{}%
-\makeDepartmentInfo{english}{admin}{tex_dtu_navn_uk}{}{tex_dtu_frise}{Technical University of Denmark}{}%
-
-\makeDepartmentInfo{danish} {riso}{tex_riso_dk}{tex_ris_dtu_a}{tex_dtu_frise}{Ris\o\ DTU}{Nationallaboratoriet for B\ae redygtig Energi}
-\makeDepartmentInfo{english}{riso}{tex_riso_uk}{tex_ris_dtu_a_uk}{tex_dtu_frise}{Ris\o\ DTU}{National Laboratory for Sustainable Energy}
-
-\makeDepartmentInfo{danish}{diplom}{tex_diplom_dk}{tex_dtu_diplom_a}{tex_dtu_frise}{Center for Diplomingeni\o ruddannelse}{DTU Diplom}
-\makeDepartmentInfo{english}{diplom}{tex_diplom_dk}{tex_dtu_diplom_a_uk}{tex_dtu_frise}{Center for Diplomingeni\o ruddannelse}{DTU Diplom}
-
diff --git a/build/lib/slider/DTU_Beamer_files/dtu_slideshow_base.tex b/build/lib/slider/DTU_Beamer_files/dtu_slideshow_base.tex
deleted file mode 100644
index 5cc71c689f9c944f821bd47c1786c8543e412d86..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/dtu_slideshow_base.tex
+++ /dev/null
@@ -1,25 +0,0 @@
-% This is the basic DTU slideshow file. Used when creating a new slideshow with slider
-\documentclass[aspectratio=43]{beamer}
-\usepackage{etoolbox}
-
-\input{02450_beamer_preamble}
-%\IfFileExists{generated/slide2.tex}{ \input{generated/slide2} }{ }
-\newtoggle{overlabel_includesvgs}
-\newtoggle{overlabel_includelabels}
-
-\toggletrue{overlabel_includesvgs}
-\toggletrue{overlabel_includelabels}
-
-\begin{document}
-\begin{frame}
-\maketitle
-\end{frame}
-
-\begin{frame} \osvg{osvg01}
-\frametitle{Example frame}
-\begin{enumerate}
-	\item Item 1	
-\end{enumerate}
-\end{frame}
-
-\end{document}
\ No newline at end of file
diff --git a/build/lib/slider/DTU_Beamer_files/dtucolours.tex b/build/lib/slider/DTU_Beamer_files/dtucolours.tex
deleted file mode 100644
index cda2381d7225b0ec1879df97e258b805a3cc8511..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/dtucolours.tex
+++ /dev/null
@@ -1,83 +0,0 @@
-% dtucolours.sty
-% This file has been a part of the DTU beamer package and is now
-% moved to the resources folder because there are other parts of the 
-% DTU package that need the colours as well.
-%
-% Changelog
-% 2011-06-23 jowr Replaced the old colour definitions with the new ones from the design guide
-% 2011-07-05 jowr Added alternative colours for the graphs
-% 2011-08-16 jowr Moved colour definitions to resources folder, also used in poster class
-% 2012-06-19 jowr Added colours for cooperation with IPU
-% 2014-09-27 jowr Replaced definecolor with providecolor, do not overwrite custom colour definitions
-%
-%
-\RequirePackage{xcolor}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define primary colours (designguide v2.3, page 13)
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecolor{dtured}       {rgb}{0.60, 0.00, 0.00} % Primærfarve 1 - CMYK:   0/ 91/ 72/ 23 - RGB: 153/  0/  0
-\providecolor{dtugrey}      {rgb}{0.60, 0.60, 0.60} % Primærfarve 2 - CMYK:   0/  0/  0/ 56 - RGB: 153/153/153
-% 
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define secondary colours  (designguide v2.3, page 13)
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Please note that dtured and dtubrown have the same rgb and hex values and only differ in cmyk and pms notation.
-\providecolor{dtuyellow}    {rgb}{1.00, 0.80, 0.00} % Sekundærfarve 12 - CMYK:   0/ 25/100/  0 - RGB: 255/204/  0 - HEX: FFCC00
-\providecolor{dtuorange}    {rgb}{1.00, 0.60, 0.00} % Sekundærfarve 1  - CMYK:   0/ 50/100/  0 - RGB: 255/153/  0 - HEX: FF9900
-\providecolor{dtulightred}  {rgb}{1.00, 0.00, 0.00} % Sekundærfarve 3  - CMYK:   0/100/100/  0 - RGB: 255/  0/  0 - HEX: FF0000
-\providecolor{dtubrown}     {rgb}{0.60, 0.00, 0.00} % Sekundærfarve 4  - CMYK:   0/100/100/ 50 - RGB: 153/  0/  0 - HEX: 990000
-\providecolor{dtupurple}    {rgb}{0.80, 0.20, 0.60} % Sekundærfarve 6  - CMYK:  25/100/  0/  0 - RGB: 204/ 51/153 - HEX: CC3399
-\providecolor{dtuviolet}    {rgb}{0.40, 0.00, 0.60} % Sekundærfarve 9  - CMYK:  75/ 75/  0/  0 - RGB: 102/  0/153 - HEX: 660099
-\providecolor{dtudarkblue}  {rgb}{0.20, 0.40, 0.80} % Sekundærfarve 13 - CMYK:  75/ 50/  0/  0 - RGB:  51/102/204 - HEX: 3366CC
-\providecolor{dtulightblue} {rgb}{0.20, 0.80, 1.00} % Sekundærfarve 10 - CMYK:  50/  0/  0/  0 - RGB:  51/204/255 - HEX: 33CCFF
-\providecolor{dtulightgreen}{rgb}{0.60, 0.80, 0.20} % Sekundærfarve 11 - CMYK:  25/  0/100/  0 - RGB: 153/204/ 51 - HEX: 99CC33
-\providecolor{dtudarkgreen} {rgb}{0.40, 0.80, 0.00} % Sekundærfarve 14 - CMYK:  50/  0/100/  0 - RGB: 102/204/  0 - HEX: 66CC00
-\providecolor{dtucoolgrey}  {rgb}{0.59, 0.58, 0.57} % Farve til poster - CMYK:   0/  1/  5/ 39 - RGB: 150/148/145 - HEX: 969491
-% 
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define colours for drawings and graphs (designguide v2.3, page 14)
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecolor{graph01}{named}{dtuorange}
-\providecolor{graph02}{named}{dtupurple}
-\providecolor{graph03}{named}{dtulightblue}
-\providecolor{graph04}{named}{dtubrown}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define alternate colours for drawings and graphs 
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define alternate colours for graphs, which are compatible with black 
-% and white printers. The initial set of colours makes it hard to distinguish 
-% between the two lighter and the two darker colours.
-\providecolor{graph01alt}{named}{dtuviolet}
-\providecolor{graph02alt}{named}{dtuyellow}
-\providecolor{graph03alt}{named}{dtulightred}
-\providecolor{graph04alt}{named}{dtulightgreen}
-\providecolor{graph05alt}{named}{dtugrey}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define colours for IPU related documents, from IPU Designguide (16.09.2008)
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecolor{ipugreen}     {rgb}{0.00, 0.40, 0.20} % Dark green, 1st  standard colour  - CMYK: 088/000/095/026 - RGB: 000/102/051
-\providecolor{ipugrey}      {rgb}{0.45, 0.47, 0.49} % Dark grey, 2nd standard colour    - CMYK: 015/000/000/075 - RGB: 114/121/126
-\providecolor{ipulightgreen}{rgb}{0.36, 0.67, 0.15} % Light green, 1sr secondary colour - CMYK: 070/000/100/000 - RGB: 091/172/038
-\providecolor{ipulightgrey} {rgb}{0.85, 0.86, 0.87} % Light grey, 2nd secondary colour  - CMYK: 003/000/003/020 - RGB: 217/220/222
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Old definitions
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \providecolor{dtured}       {cmyk}{0.00, 0.95, 0.72, 0.27}
-% \providecolor{dtudarkgray}  {cmyk}{0.00, 0.00, 0.00, 0.56}
-% \providecolor{dtugray}      {cmyk}{0.00, 0.00, 0.00, 0.37}
-% \providecolor{dtulightgray} {cmyk}{0.00, 0.00, 0.00, 0.19}
-% \providecolor{dtudarkblue}  {cmyk}{1.00, 0.72, 0.00, 0.38}
-% \providecolor{dtublue}      {cmyk}{0.60, 0.44, 0.00, 0.24}
-% \providecolor{dtulightblue} {cmyk}{0.30, 0.22, 0.00, 0.12}
-% \providecolor{dtudarkgreen} {cmyk}{1.00, 0.00, 0.83, 0.47}
-% \providecolor{dtugreen}     {cmyk}{0.725,0.004,1.00, 0.004}
-% \providecolor{dtuyellow}    {cmyk}{0.00, 0.00, 1.00, 0.00}
-% \providecolor{dtuorange}    {cmyk}{0.00, 0.34, 0.91, 0.00}
-% \providecolor{dtudarkorange}{cmyk}{0.00, 0.51, 1.00, 0.00}
-% \providecolor{dtupurpur}    {cmyk}{0.00, 0.94, 0.00, 0.43}
-% \providecolor{dtupurple}    {cmyk}{0.83, 1.00, 0.00, 0.23}
-%
diff --git a/build/lib/slider/DTU_Beamer_files/tex_compute_uk.pdf b/build/lib/slider/DTU_Beamer_files/tex_compute_uk.pdf
deleted file mode 100644
index 1488ea4bb66ad14ada91789909d4f3b9448e1103..0000000000000000000000000000000000000000
Binary files a/build/lib/slider/DTU_Beamer_files/tex_compute_uk.pdf and /dev/null differ
diff --git a/build/lib/slider/DTU_Beamer_files/tex_dtu_compute_a_uk.pdf b/build/lib/slider/DTU_Beamer_files/tex_dtu_compute_a_uk.pdf
deleted file mode 100644
index d0d2f4efcdd8ace82a3d969627865501743c2671..0000000000000000000000000000000000000000
Binary files a/build/lib/slider/DTU_Beamer_files/tex_dtu_compute_a_uk.pdf and /dev/null differ
diff --git a/build/lib/slider/DTU_Beamer_files/tex_dtu_frise.pdf b/build/lib/slider/DTU_Beamer_files/tex_dtu_frise.pdf
deleted file mode 100644
index a099312f58e8adc076799f45f00699408020fcc2..0000000000000000000000000000000000000000
Binary files a/build/lib/slider/DTU_Beamer_files/tex_dtu_frise.pdf and /dev/null differ
diff --git a/build/lib/slider/DTU_Beamer_files/tex_dtu_logo.pdf b/build/lib/slider/DTU_Beamer_files/tex_dtu_logo.pdf
deleted file mode 100644
index 862fbcd41103ab0c721cdcf46f52131c89dfbe03..0000000000000000000000000000000000000000
Binary files a/build/lib/slider/DTU_Beamer_files/tex_dtu_logo.pdf and /dev/null differ
diff --git a/build/lib/slider/DTU_Beamer_files/textext_preamble.tex b/build/lib/slider/DTU_Beamer_files/textext_preamble.tex
deleted file mode 100644
index 8f34c6d920f6d1c85472d72ed1d72cd4c672fc7b..0000000000000000000000000000000000000000
--- a/build/lib/slider/DTU_Beamer_files/textext_preamble.tex
+++ /dev/null
@@ -1,9 +0,0 @@
-\usepackage{amsmath}
-\usepackage{amsfonts}
-\usepackage{color}
-\usepackage{bm}
-
-\newcommand{\m}[1]{\bm{ #1} }
-\newcommand{\mcal}[1]{\mathcal{ #1}}
-
-	
\ No newline at end of file
diff --git a/build/lib/slider/__init__.py b/build/lib/slider/__init__.py
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/build/lib/slider/__main__.py b/build/lib/slider/__main__.py
deleted file mode 100644
index 0961f3387b6fd17172a24baf8122ccfbe5528207..0000000000000000000000000000000000000000
--- a/build/lib/slider/__main__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# from jinjafy import execute_command
-from slider.latexutils import latexmk
-from slider.slider_cli import clize_main_entry_point
-
-if __name__ == "__main__":
-    clize_main_entry_point()
\ No newline at end of file
diff --git a/build/lib/slider/beamer_nup.py b/build/lib/slider/beamer_nup.py
deleted file mode 100644
index 7b11e781af1e18f1f049413c2dd96cfdfae3af63..0000000000000000000000000000000000000000
--- a/build/lib/slider/beamer_nup.py
+++ /dev/null
@@ -1,79 +0,0 @@
-import os
-import glob
-
-
-def beamer_nup(pdf_file, nup=6, output=None):
-    # pdf_file = pdf_file[:-4] + ".pdf"
-    if nup not in [1, 2, 3, 4, 6]:
-        assert False
-
-    jinja = os.path.dirname( __file__ ) + "/../../jinja"
-    if os.path.isdir(jinja):
-        js = {}
-        for name in glob.glob(jinja + "/*.tex"):
-            with open(name, 'r') as f:
-                js[os.path.basename(name)[:-4] ] = f.read()
-
-        s = ""
-        for k, v in js.items():
-            v = v.replace("\\", "\\\\")
-
-            s += f'{k} = """\n' + v + '\n"""' + "\n"
-
-        with open(os.path.dirname(__file__) + "/jinjastrings/generated.py", 'w') as f:
-            s = "# WARNING! THIS FILE IS AUTOMATICALLY GENERATED! ALL CHANGES WILL BE WIPED. SEE JINJA DIRECTORY\n"*10  + s
-            f.write(s)
-
-
-
-    from slider.jinjastrings.generated import lecture_collector_partial
-
-    import jinja2
-
-    import tempfile
-    # tempfile.gettempdir()
-    tmp = tempfile.TemporaryDirectory().name
-    os.mkdir(tmp)
-    import shutil
-    dest_pdf = tmp + "/" + os.path.basename(pdf_file)
-    shutil.copyfile(pdf_file, dest_pdf)
-
-    import jinja2
-    data = {'a4': False,
-            'twoup': False,
-            'sixup': False}
-    if nup == 1:
-        data['a4'] = True
-    if nup == 2:
-        data['twoup'] = True
-    if nup == 3:
-        data['threeup'] = True
-    if nup == 4:
-        data['fourup'] = True
-    if nup == 6:
-        data['sixup'] = True
-    data['frame'] = True
-
-    data['pdffiles'] = [os.path.basename(dest_pdf)]
-
-    # data = {'hello': 'world'}
-    print(tmp)
-    s = jinja2.Environment().from_string(lecture_collector_partial).render(data)
-
-    with open(tmp +"/nup.tex", 'w') as f:
-        f.write(s)
-
-    from slider import latexmk
-    latexmk(tmp +"/nup.tex", shell=True)
-
-    if output == None:
-        output = os.path.dirname(pdf_file) + "/" + os.path.basename(pdf_file)[:-4] + f"_{nup}up.pdf"
-    shutil.move(tmp +"/nup.pdf", output)
-    print("[Beamer-nup] Wrote output to", output)
-    return output
-
-
-
-if __name__ == "__main__":
-    beamer_nup("../../examples/new_project/index.pdf")
-
diff --git a/build/lib/slider/convert.py b/build/lib/slider/convert.py
deleted file mode 100644
index 61b85ca74723d2757bbffefbe129a21f2953c6dd..0000000000000000000000000000000000000000
--- a/build/lib/slider/convert.py
+++ /dev/null
@@ -1,126 +0,0 @@
-from jinjafy import execute_command
-import os
-from bs4 import BeautifulSoup
-
-def svg2pdf(fin, fout=None, crop=True, text_to_path=False, export_area_page=True):
-    """
-     -C, --export-area-page                     Area to export is page
-       -T, --export-text-to-path                  Convert text to paths (PS/EPS/PDF/SVG)
-    """
-    # text_to_path = True
-    if fout is None:
-        fout = fin[:-4] + ".pdf"
-    cmd = ['inkscape']
-    if export_area_page:
-        cmd.append("-C")
-    if text_to_path: # Good idea for inkscape which seems to bungle the fonts (space in font names?)
-        cmd.append("-T")
-    cmd.append(fin)
-    cmd.append(f"--export-filename={fout}")
-    # '-C', '--without-gui', f'--file={fin}', f'--export-pdf={fout}']
-    # cmd = ['inkscape', '-C', '-T', '--without-gui', '--file=%s'%svg_fonts_layers[-1], '--export-pdf=%s' % pdf_nofonts_layers[-1]]
-    execute_command(cmd)
-    # cmd = f"pdftocairo {fout} -pdf {fout}"
-    # execute_command(cmd.split())
-
-    if crop:
-        cmd = ['pdfcrop', fout, fout]
-        execute_command(cmd)
-
-
-
-def pdf2svg(fin, fout, page_no=None):
-    '''
-    To remove fonts look at
-    https://tex.stackexchange.com/questions/23407/how-can-i-convert-text-to-paths-with-pdflatex
-    convert to ps and back to pdf
-    '''
-    if fout is None:
-        fout = fin[:-4] + ".svg"
-
-    '''
-    pdftocairo -svg C:/Users/tuhe/Documents/02465public/Lectures/Lecture_2/Latex/Lecture_2_NO_SVGS.pdf C:/Users/tuhe/Documents/02465public/Lectures/Lecture_2/Latex/osvgs/tmp/determpath.svg -f 2 -l 2
-    
-    '''
-    cmd = ['pdftocairo', '-svg', fin, fout]
-    if page_no is not None:
-        if not isinstance(page_no, str):
-            page_no = str(page_no)
-        cmd += ['-f', str(page_no), '-l', str(page_no)]
-
-    execute_command(cmd)
-
-
-def pdf2png(fin, fout=None, scale_to=None):
-    if fout is None:
-        fout = fin[:-4] + ".png"
-    fout = fout[:-4]
-    cmd = f"pdftocairo -png -singlefile {fin} {fout}"
-    if scale_to is not None:
-        cmd += f" -scale-to {scale_to}"
-    execute_command(cmd.split())
-    return fout + ".png"
-
-
-def pdfcrop(fin, fout=None):
-    if fout is None:
-        fout = fin
-    cmd = f"pdfcrop {fin} {fout}"
-    execute_command(cmd.split())
-
-
-
-def svg_edit_to_importable(svg_edit_file,verbose=False, keep_background_layer=True):
-    assert False
-    """
-    Take an inkscape file as input and split it into layers.
-    CODE NOT IN USE RIGHT NOW; MUST WORK OUT WHAT TO USE IT FOR.
-    """
-    odir = os.path.dirname(svg_edit_file)
-    fn = os.path.basename(svg_edit_file)[:-4]
-
-    pdf_nofonts_base = odir + "/x_do_not_edit_%s-l%s_nofonts.pdf"
-    svg_fonts_base =  odir + "/" + SVG_TEXINCLUDE_RELPATH + "/%s-l%s_fonts.svg"
-    if not os.path.exists(os.path.dirname(svg_fonts_base)):
-        os.mkdir(os.path.dirname(svg_fonts_base))
-
-    pdf_nofonts_layers = []
-    svg_fonts_layers = []
-
-    with open(svg_edit_file, 'r', encoding="UTF-8",errors="surrogateescape") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        for i in soup.findAll("image", {'id': 'image4444th'}):
-            i.extract()
-
-        layer_labels = []
-        for i in soup.findAll("g", {'inkscape:groupmode': 'layer'}):
-            if i['inkscape:label'] == "bg_layer":
-                #i.extract()
-                pass
-            else:
-                layer_labels.append(i['inkscape:label'])
-
-        for j in range(len(layer_labels)):
-            s2 = soup.__copy__()
-            for i in s2.findAll("g", {'inkscape:groupmode': 'layer'}):
-                if layer_labels[j] == i['inkscape:label'] or i['inkscape:label'] == "bg_layer":
-                    pass
-                else:
-                    i.extract()
-            # now you got an image only with this layer. save it.
-            layer_number = layer_labels[j].split(" ").pop()
-            pdf_nofonts_layers.append(pdf_nofonts_base%(fn,layer_number))
-            svg_fonts_layers.append(svg_fonts_base % (fn, layer_number))
-
-            with open(svg_fonts_layers[-1], 'bw') as f2:
-                f2.write(s2.encode("UTF-8"))
-
-            cmd = ['inkscape', '-C', '-T', '--without-gui', '--file=%s'%svg_fonts_layers[-1], '--export-pdf=%s' % pdf_nofonts_layers[-1]]
-            execute_command(cmd)
-
-    if verbose:
-        print("svg_edit_to_importable called. Converting svg file\n  > %s\nto files:"%svg_edit_file)
-        for s in pdf_nofonts_layers + svg_fonts_layers:
-            print("  > " + s)
-
-    return pdf_nofonts_layers, svg_fonts_layers
diff --git a/build/lib/slider/latexutils.py b/build/lib/slider/latexutils.py
deleted file mode 100644
index 2e50e0978da7c792fd2d44a35209b4afdc3e7d71..0000000000000000000000000000000000000000
--- a/build/lib/slider/latexutils.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from jinjafy import execute_command
-import os
-import shutil
-
-def latexmk(texfile,pdf_out=None,shell=True,cleanup=False, Linux=False):
-    cdir = os.getcwd()
-    dname = os.path.dirname(texfile)
-    os.chdir(dname)
-    texfile = os.path.basename(texfile)
-    if Linux:
-        CMD = "latexmk -f -g -pdf -interaction=nonstopmode " + texfile
-        print("Running LaTeX command>> " + CMD)
-        s = execute_command(CMD.split(" "), shell=shell)
-    else:
-        CMD = "latexmk -f -g -pdf -shell-escape -interaction=nonstopmode " + texfile
-        print("Running LaTeX command>> " + CMD)
-        s = execute_command(CMD.split(" "),shell=shell)
-
-    if pdf_out:
-        shutil.copyfile(texfile[:-4]+".pdf", pdf_out)
-    else:
-        pdf_out = os.path.join(os.path.dirname(texfile), texfile[:-4]+".pdf")
-
-    if cleanup and os.path.exists(pdf_out):
-        bft = ['bbl', 'blg', 'fdb_latexmk', 'fls', 'aux', 'synctex.gz', 'log']
-        for ex in bft:
-            import glob
-            fl = glob.glob(dname + "/*."+ex)
-            for f in fl:
-                os.remove(f)
-
-    os.chdir(cdir)
-    return pdf_out
-
-
-
diff --git a/build/lib/slider/legacy_importer.py b/build/lib/slider/legacy_importer.py
deleted file mode 100644
index 058a79ed579aea5f505f5d78fc45634b3c1779ac..0000000000000000000000000000000000000000
--- a/build/lib/slider/legacy_importer.py
+++ /dev/null
@@ -1,487 +0,0 @@
-# Control import of slides from pdf to svg-editable format.
-# inkscape -z -f "Input.pdf" -l "Output.svg"
-# https://github.com/eea/odfpy
-import os
-import shutil
-from jinjafy import jinjafy_comment
-from bs4 import BeautifulSoup
-import glob
-from jinjafy import execute_command
-
-CDIR = os.path.dirname(os.path.realpath(__file__))
-CDIR = CDIR.replace('\\','/')
-
-SVG_EDIT_RELPATH = "osvgs" # files that are supposed to be edited goes here.
-SVG_TMP_RELPATH = "tmp" # various files that can be flat out deleted goes here
-SVG_TEXINCLUDE_RELPATH = "do_not_edit" # the no_fonts version and the pure (+fonts) versions goes here
-DTU_beamer_base = CDIR +"/DTU_Beamer_files"
-BLANK_PNG =DTU_beamer_base + "/blank.png"
-
-def ensure_dir(dname):
-    assert False
-    if not os.path.exists(dname):
-        os.mkdir(dname)
-
-def join_pdfs(slide_deck_pdf, outfile):
-    assert False
-    dn = os.path.dirname(slide_deck_pdf[0])
-    files = [os.path.relpath(os.path.dirname(pdf), start=dn) + "/" + os.path.basename(pdf) for pdf in slide_deck_pdf]
-    outf = os.path.relpath(os.path.dirname(outfile), start=dn) + "/" + os.path.basename(outfile)
-    cmd = "cd " + dn + " && pdftk " + " ".join(files) + " cat output " + outf
-    execute_command(cmd.split())
-
-
-def li_import(slide_deck_pdf, tex_output_path=None, num_to_take=None, force=False, svg_pfix="osvg", svg_height=743.75, svg_width=992.5,
-              svg_converted_slides="svg_converted_slides.tex"):
-    assert False
-    '''
-    svg_height and svg_width are used to scale the converted image. This is useful because otherwise the viewbox
-    will fail to match the DTU template. I.e. these numbers will generally change dependent on the LaTeX template.
-
-    :param slide_deck_pdf:
-    :param tex_output_path:
-    :param num_to_take:
-    :param force:
-    :param svg_pfix:
-    :param svg_height:
-    :param svg_width:
-    :return:
-    '''
-    # take this slide deck. Generate beamer, svg output.
-
-    if isinstance(slide_deck_pdf, list):
-        dn = os.path.dirname(slide_deck_pdf[0])
-        ofile = os.path.join(dn, "tmp.pdf")
-        join_pdfs(slide_deck_pdf, ofile)
-        slide_deck_pdf = ofile
-
-    if tex_output_path is None:
-        tex_output_path = slide_deck_pdf[:-4]+"_output.tex"
-
-    output_dir = os.path.dirname(tex_output_path)
-
-    # if output_dir is None:
-    #     output_dir = os.path.dirname(slide_deck_pdf)
-    assert(os.path.exists(output_dir))
-    svg_tmp_dir = output_dir + "/" + SVG_EDIT_RELPATH +"/" + SVG_TMP_RELPATH
-    svg_texinclude_dir = output_dir + "/" + SVG_EDIT_RELPATH +"/" +SVG_TEXINCLUDE_RELPATH
-    svg_edit_dir = output_dir + "/" +SVG_EDIT_RELPATH
-    tex_output_file = os.path.basename(tex_output_path)
-
-    print("Converting slides to output: " + tex_output_file)
-    if os.path.exists(output_dir + "/" + tex_output_file) or glob.glob(svg_edit_dir + "/*.svg"):
-        print("Non-empty output directory...")
-        if not force:
-            raise Exception("Non-empty output directory. Please clean")
-
-    ensure_dir(svg_edit_dir)
-    ensure_dir(svg_tmp_dir)
-    ensure_dir(svg_texinclude_dir)
-
-    if not output_dir:
-        raise Exception("Must specify output directory!")
-
-    lecture_tex_out = move_template_files(output_dir, tex_output_file)
-    osvgs_basename = []
-    print("Splitting slide deck into images...")
-
-    # slide_deck_split_svg = slidedeck_to_images(slide_deck_pdf, svg_tmp_dir + "/" + svg_pfix + "-%i.svg",
-    #                                            num_to_take=num_to_take)
-    slide_deck_split_svg = slidedeck_to_images(slide_deck_pdf, svg_tmp_dir+"/"+svg_pfix+"-%i.svg", num_to_take=num_to_take)
-    print("Converting svg to osvg..")
-    for i,osvg in enumerate(slide_deck_split_svg):
-        dosvg = raw_svg_to_osvg(osvg, overwrite_existing=True, height=svg_height, width=svg_width)
-        osvgs_basename.append(dosvg)
-
-    print("jinjafying and cleaning...")
-    # osvgs_basename = osvgs_basename[3:] # Drop first 3 slides; automatically generated.
-    data = {'osvgs_basename' : osvgs_basename}
-    s = jinjafy_comment(data, jinja_tag="jinja1")
-    with open(output_dir + "/%s"%svg_converted_slides, 'w') as f:
-        f.write(s)
-    return lecture_tex_out
-
-# <jinja1>
-# {% for sf in osvgs_basename %}
-# \begin{frame}\osvg{{"{"}}{{sf}}{{"}"}}
-# % add content here
-# \end{frame}
-# {% endfor %}
-# </jinja1>
-# \begin{textblock}{1}(0,0)
-# 	\includesvg[width=1.0\linewidth]{{"{"}}{{sf}}{{"}"}}
-# \end{textblock}\overlabel{ {{sf}} }
-# SVG editable file (i.e. with background image) to file which can be imported into
-# the .tex file.
-
-'''
-Take a raw svg in the tmp directory and compile it into the nice svg format with empty, white background.
-This can be used when importing a new slide deck or when inserting a new overlabel tag somewhere in a
-tex document.
-'''
-def raw_svg_to_osvg(raw_svg_file, overwrite_existing=False, height=None, width=None):
-    svg_tmp_dir = os.path.dirname(raw_svg_file)
-    svg_edit_dir = os.path.dirname(svg_tmp_dir)
-    ofile_edit = svg_edit_dir + "/" + os.path.basename(raw_svg_file)
-    # if height is not None and width is not None:
-    #     svg_set_hw_(raw_svg_file, raw_svg_file,height=height, width=width)
-
-    ofile_fonts_pure = rm_svg_bg(svg_input=raw_svg_file, svg_output=ofile_edit, height=height, width=width)
-    png_file = svg_tmp_dir + "/" + os.path.basename(ofile_fonts_pure)[:-4] + ".png"
-    shutil.copyfile(BLANK_PNG, png_file)
-    ofile_edit = add_png_background_to_svg(svg_input=ofile_fonts_pure, svg_output=None, png_file=png_file)
-    pdf_nofonts, svg_fonts = svg_edit_to_importable(ofile_edit)
-    osvgs_basename = os.path.basename(raw_svg_file)[:-4]
-    return osvgs_basename
-
-
-'''
-Related to li_import. 
-Set the width/height of an imported slide svg image in case it does not match the DTU template. 
-'''
-def svg_set_hw_(svg_in, svg_out, height, width):
-    assert False
-    print(f"HW fix [{height} {width}] > {svg_in} -> {svg_out}")
-
-    with open(svg_in, 'r', encoding="UTF-8") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        tags = soup.find_all("svg")
-        assert (len(tags) == 1)
-        tag = tags[0]
-        tag['height'] = str(height)
-        tag['width'] = str(width)
-        tag['viewBox'] = f"0 0 {height} {width}"
-    # print([svg_input, logo_rem, bg_rem, tx_rem])
-    with open(svg_out, 'bw') as f:
-        f.write(soup.encode("UTF-8"))
-    return
-    with open(svg_in, 'r', encoding="UTF-8", errors="surrogateescape") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        tags = soup.find_all("svg")
-        assert(len(tags) == 1)
-        tag = tags[0]
-        tag['height'] = str(height)
-        tag['width'] = str(width)
-        tag['viewBox'] = f"0 0 {height} {width}"
-        s2 = soup.__copy__()
-        # sout = s2.encode("UTF-8")
-    # f.close()
-    with open(svg_out, 'w', encoding="UTF-8") as f2:
-        f2.write(str(s2))
-
-def svg_check_background_layer(svg_edit_file, verbose=False):
-    assert False
-
-    # Check if svg background layer is pointing to the right .png file.
-    # this may not be the case sometimes because svg files are moved, etc. which overwrite the default
-    # background .png path.
-    with open(svg_edit_file, 'r', encoding="UTF-8",errors="surrogateescape") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        g = None
-        for i in soup.findAll("g", {'inkscape:groupmode': 'layer'}):
-            if i['inkscape:label'] == "bg_layer":
-                g = i
-                break
-        ok = True
-        bgim = g.find("image")
-        bg_png = bgim['xlink:href']
-        real_png = os.path.dirname(svg_edit_file) + "/" + SVG_TMP_RELPATH + "/" + os.path.basename(svg_edit_file)[:-4] + ".png"
-        real_png = os.path.relpath(real_png, start=os.path.dirname( svg_edit_file) )
-        bg_png = os.path.relpath(bg_png,start=os.path.dirname( svg_edit_file)  )
-        if real_png != bg_png:
-            print("slider:warning> Bungled background png image in " + svg_edit_file)
-            s = jinjafy_comment({'png_file': real_png}, jinja_tag="jinja3")
-            new_img = BeautifulSoup(s, "html.parser")
-            g.insert_after( new_img)
-            g.unwrap()
-            bgim.unwrap()
-
-            with open(svg_edit_file[:-4]+"_test.svg", "w") as f2:
-                f2.write(soup.prettify(formatter="xml"))
-
-# <jinja3>
-# <g inkscape:groupmode="layer" id="layer1" inkscape:label="bg_layer" style="display:inline" sodipodi:insensitive="true">
-#      <image
-#        xlink:href="{{png_file}}"
-#        width="100%"
-#        height="100%"
-#        preserveAspectRatio="none"
-#        style="image-rendering:optimizeQuality"
-#        id="image4444th"
-#        x="0"
-#        y="0" />
-#  </g>
-# </jinja3>
-
-
-
-def svg_edit_to_importable(svg_edit_file,verbose=False):
-    odir = os.path.dirname(svg_edit_file)
-    fn = os.path.basename(svg_edit_file)[:-4]
-
-    pdf_nofonts_base = odir + "/x_do_not_edit_%s-l%s_nofonts.pdf"
-    svg_fonts_base =  odir + "/" + SVG_TEXINCLUDE_RELPATH + "/%s-l%s_fonts.svg"
-    if not os.path.exists(os.path.dirname(svg_fonts_base)):
-        os.mkdir(os.path.dirname(svg_fonts_base))
-
-    pdf_nofonts_layers = []
-    svg_fonts_layers = []
-
-    with open(svg_edit_file, 'r', encoding="UTF-8",errors="surrogateescape") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-
-        for i in soup.findAll("image", {'id': 'image4444th'}):
-            i.extract()
-
-        layer_labels = []
-        for i in soup.findAll("g", {'inkscape:groupmode': 'layer'}):
-            if i['inkscape:label'] == "bg_layer":
-                #i.extract()
-                pass
-            else:
-                layer_labels.append(i['inkscape:label'])
-
-        for j in range(len(layer_labels)):
-            s2 = soup.__copy__()
-            for i in s2.findAll("g", {'inkscape:groupmode': 'layer'}):
-                if layer_labels[j] == i['inkscape:label'] or i['inkscape:label'] == "bg_layer":
-                    pass
-                else:
-                    i.extract()
-            # now you got an image only with this layer. save it.
-            layer_number = layer_labels[j].split(" ").pop()
-            pdf_nofonts_layers.append(pdf_nofonts_base%(fn,layer_number))
-            svg_fonts_layers.append(svg_fonts_base % (fn, layer_number))
-
-            with open(svg_fonts_layers[-1], 'bw') as f2:
-                f2.write(s2.encode("UTF-8"))
-
-            from slider.convert import svg2pdf
-            svg2pdf(svg_fonts_layers[-1], fout=pdf_nofonts_layers[-1], crop=False, text_to_path=True, export_area_page=True)
-            # cmd = ['inkscape', '-C', '-T', '--without-gui', '--file=%s'%svg_fonts_layers[-1], '--export-pdf=%s' % pdf_nofonts_layers[-1]]
-
-    if verbose:
-        print("svg_edit_to_importable called. converted svg file\n  > %s\nto files:"%svg_edit_file)
-        for s in pdf_nofonts_layers + svg_fonts_layers:
-            print("  > " + s)
-
-    return pdf_nofonts_layers, svg_fonts_layers
-
-# <jinja2>
-# {{svg_start}}
-# <g inkscape:groupmode="layer" id="layer1" inkscape:label="bg_layer" style="display:inline" sodipodi:insensitive="true">
-#      <image
-#        xlink:href="{{png_file}}"
-#        width="100%"
-#        height="100%"
-#        preserveAspectRatio="none"
-#        style="image-rendering:optimizeQuality"
-#        id="image4444th"
-#        x="0"
-#        y="0" />
-#  </g>
-# <g inkscape:groupmode="layer"
-#     id="layer2"
-#     inkscape:label="Layer 1"
-#     style="display:inline">
-# {{svg_end}}
-# </g></svg>
-# </jinja2>
-def add_png_background_to_svg(svg_input, png_file, svg_output=None):
-    if not svg_output: svg_output = svg_input
-    rp = os.path.relpath(png_file, os.path.commonprefix([svg_output, png_file]))
-    rp = rp.replace("\\", "/")
-
-    with open(svg_input,'r', encoding="UTF-8") as f:
-        svg = f.read()
-    mds = "</metadata>"
-    mds_id = svg.find(mds)
-    if mds_id < 0:
-        # file has no meta data.
-        j = svg.find(">", svg.find("<svg"))
-        svg = svg[:j+1] + "<metadata></metadata>" +svg[j+1:]
-        mds_id = svg.find(mds)
-
-    mds_dex = mds_id+len(mds)
-
-    data = {'png_file' : rp, 'svg_start': svg[:mds_dex],'svg_end': svg[mds_dex:]}
-    svg = jinjafy_comment(data, jinja_tag="jinja2")
-
-    si = svg.find("<svg") + 4
-    dsvg = ' xmlns:sodipodi = "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n xmlns:inkscape = "http://www.inkscape.org/namespaces/inkscape" \n'
-    svg = svg[:si] + dsvg + svg[si:]
-
-    with open(svg_output, 'w',encoding="UTF-8") as f:
-        f.write(svg)
-    return svg_output
-
-
-def slidedeck_to_images(slide_deck_pdf, base_out_pattern, num_to_take=None):
-    assert False
-    if not os.path.exists(os.path.dirname(base_out_pattern)):
-        os.mkdir(os.path.dirname(base_out_pattern))
-    num_pages = num_pages_in_pdf(slide_deck_pdf)
-    opat = base_out_pattern[:-4] + "_tmp.pdf"
-    opat.replace("%i", '%d')
-    cmd = f"pdftk {slide_deck_pdf} burst output {opat} compress"
-    print("pdftk splitting into ", num_pages)
-
-    execute_command(cmd.split())
-    outfiles = []
-    slide_deck_split_pdf = [base_out_pattern[:-4] % (i + 1) + "_tmp.pdf" for i in range(num_pages)]
-    for i, opdf in enumerate(slide_deck_split_pdf):
-        print("convertion", i, opdf)
-        ofile = base_out_pattern %(i+1)
-        cmd = f"pdf2svg {opdf} {ofile}"
-        execute_command(cmd.split())
-        b = os.path.getsize(ofile)
-        # print(b)
-        if b == 0:
-            print("Skipping this file because it has size 0...")
-        else:
-            outfiles.append(ofile)
-
-    return outfiles
-
-def slidedeck_to_images_DEFUNCT(slide_deck_pdf, base_out_pattern, num_to_take=None):
-    assert False
-    if not os.path.exists(os.path.dirname(base_out_pattern)):
-        os.mkdir(os.path.dirname(base_out_pattern))
-
-    num_pages = num_pages_in_pdf(slide_deck_pdf)
-    slide_deck_split_pdf = [base_out_pattern[:-4] % (i + 1) + "_tmp.pdf" for i in range(num_pages)]
-    if num_to_take: slide_deck_split_pdf = slide_deck_split_pdf[0:num_to_take]
-
-    outfiles = []
-    for i, opdf in enumerate(slide_deck_split_pdf):
-        print("convertion", i, opdf)
-        ofile = base_out_pattern %(i+1)
-        slide_to_image(slide_deck_pdf, ofile, page_to_take=i+1)
-        outfiles.append(ofile)
-    return outfiles
-
-def num_pages_in_pdf(pdf_file):
-    assert False
-    cmd = ['pdftk', '%s' % pdf_file, 'dump_data']
-    ss = execute_command(cmd)[0].splitlines()
-    s = int([s for s in ss if 'NumberOfPages' in s].pop().split()[-1])
-    return s
-
-
-def slide_to_image(slide_deck_pdf, output, page_to_take=1, use_inkscape=True):
-    if not os.path.exists(os.path.dirname(output)):
-        os.mkdir(os.path.dirname(output))
-    slide_deck_split_pdf = output[:-4] + "_tmp.pdf"
-    ext = output[-3:]
-    if ext == "svg":
-        from slider.convert import pdf2svg
-        pdf2svg(slide_deck_pdf, fout=output, page_no=page_to_take)
-        # cmd = ['pdftk', '%s' % slide_deck_pdf, 'cat', '%i' % page_to_take, 'output', '%s' % slide_deck_split_pdf]
-        # # page_to_take = 1
-
-        # if use_inkscape:
-        #     cmd = ['inkscape', '-C', '--without-gui', '--file=%s' % slide_deck_split_pdf, '-l', '%s' % output]
-        # else:
-        #     cmd = ['pdf2svg', slide_deck_split_pdf, output]
-    else:
-        if os.path.exists(output):
-            os.remove(output)
-        cmd = ("pdftocairo -png -f %i -l %i"% (page_to_take, page_to_take)).split(" ") + [slide_deck_pdf, output]
-        execute_command(cmd)
-    if ext == "png":
-        png_with_postfix = glob.glob(output + "-*.png")
-        if not png_with_postfix:
-            print("WARNING! no png generated.")
-            print(output)
-        else:
-            png_with_postfix = png_with_postfix.pop()
-            shutil.move(png_with_postfix, output)
-
-    return output
-
-
-def move_template_files(output_dir="examples/output", output_tex_file=None):
-    files_to_move = ["tex_dtu_logo.pdf", "tex_dtu_compute_a_uk.pdf", "tex_dtu_frise.pdf", "dtucolours.tex",
-                     "beamerthemeDTU.sty", "beamerfontthemeDTU.sty","beamercolorthemeDTU.sty",
-                     "beamerinnerthemeDTU.sty", "beamerouterthemeDTU.sty", "departments.tex", "tex_compute_uk.pdf",
-                     "02450_beamer_preamble.tex",  # Deprecated.
-                     'beamer_slider_preamble.tex', # The current version.
-                     ]
-    sd = list( zip(files_to_move, files_to_move) )
-    if output_tex_file:
-        sd.append( ("02450_lectures_base.tex", output_tex_file))
-    for (source,dest) in sd:
-        shutil.copy(DTU_beamer_base + "/" + source, output_dir + "/" + dest)
-
-    if output_tex_file:
-        lecture_tex_out = output_dir + "/" + output_tex_file
-    else:
-        lecture_tex_out = None
-
-    return lecture_tex_out
-
-
-def rm_svg_bg(svg_input, svg_output=None, fix_bg=True, fix_txt=True, fix_logo=True, height=None, width=None):
-    logo_rem = 0
-    tx_rem = 0
-    bg_rem = 0
-    if not svg_output:
-        svg_output = svg_input
-
-    with open(svg_input, 'r', encoding="UTF-8") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        BG_white = ["fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none", "fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"]
-        for bgw in BG_white:
-            gg = soup.findAll("path", {"style" : bgw})
-            for g in gg:
-                if not fix_bg: break
-                g['style'] = bgw.replace("opacity:1", "opacity:0")
-                bg_rem += 1
-                if bg_rem >= 2: break
-
-        dtulogo = soup.findAll("image")
-        for i in dtulogo:
-            if "iVBORw0KGgoAAAANSUhEUgAABawAAAFcCAYAAAAkg" in i['xlink:href'] and fix_logo:
-                i.extract()
-                logo_rem += 1
-
-        btx = ["font-variant:normal;font-weight:bold;font-size:8px;font-family:Verdana;-inkscape-font-specification:Verdana-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none",
-               "font-variant:normal;font-weight:normal;font-size:9px;font-family:Verdana;-inkscape-font-specification:Verdana;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none",
-               "font-variant:normal;font-weight:bold;font-size:9px;font-family:Verdana;-inkscape-font-specification:Verdana-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none",
-               "font-variant:normal;font-weight:bold;font-size:8px;font-family:Arial;-inkscape-font-specification:Arial-BoldMT;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none",
-               "font-variant:normal;font-weight:normal;font-size:9px;font-family:Arial;-inkscape-font-specification:ArialMT;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"]
-
-        for j,style in enumerate(btx):
-            if not fix_txt:
-                break
-            for tx in soup.findAll("text", {"style": style}):
-                tx.extract()
-                tx_rem += 1
-
-        # soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-        if height is not None and width is not None:
-            ''' 
-            We are doing this if the svg is being imported and the height/width might not match the DTU template viewbox. 
-                        
-            '''
-            tags = soup.find_all("svg")
-            if len(tags) != 1:
-                a = 1234
-
-            assert (len(tags) == 1)
-            tag = tags[0]
-            tag['height'] = str(height)
-            tag['width'] = str(width)
-            tag['viewBox'] = f"0 0 {height} {width}"
-
-
-    print([svg_input, logo_rem, bg_rem, tx_rem])
-    with open(svg_output, 'bw') as f:
-        f.write(soup.encode("UTF-8"))
-    return svg_output
-
-
-if __name__ == "__main__":
-    print("operating...")
-    lecture_tex_out = li_import("examples/ex1/Lecture11.pdf", output_dir="examples/output", num_to_take=3)
-    print("Wrote new main file: " + lecture_tex_out)
\ No newline at end of file
diff --git a/build/lib/slider/slide.py b/build/lib/slider/slide.py
deleted file mode 100644
index ec49193b9b7c4294f4bdaddf11985717560af0c7..0000000000000000000000000000000000000000
--- a/build/lib/slider/slide.py
+++ /dev/null
@@ -1,282 +0,0 @@
-#!python
-# The above makes the script executable.
-
-import slider.legacy_importer
-import PyPDF2
-import os
-from jinjafy import execute_command
-# from slider import slide
-from slider import legacy_importer
-from slider.legacy_importer import SVG_EDIT_RELPATH, SVG_TMP_RELPATH, move_template_files, DTU_beamer_base, svg_edit_to_importable
-from jinjafy.cache import cache_update_str, cache_contains_str, cache_contains_file, cache_update_file
-import shutil
-from slider.slide_fixer import check_svg_file_and_fix_if_broken
-from slider.latexutils import latexmk
-import clize
-import glob
-
-dc = "\\documentclass"
-
-def fix_handout(s):
-    i = s.find(dc) + len(dc)
-    j1 = s.find('[', i)
-    j2 = s.find("{", i)
-    if 0 < j1 < j2:
-        s = s[:j1 + 1] + "handout," + s[j1 + 1:]
-    else:
-        s = s[:j2 + 1] + "[handout]" + s[j2 + 1:]
-    return s
-
-def set_svg_background_images(lecture_tex, verbose=False,
-                              fix_broken_osvg_files=False,
-                              recompile_on_change=True,
-                              clean_temporary_files=False,
-                              copy_template_resource_files=True,
-                              force_recompile=False,
-                              force_fix_broken_osvg_files = None,
-                              ):
-    '''
-    Main file for fixing/setting osvg background images in the given lecture .pdf.
-    Usage:
-
-    > slider <text-file-to-convert>
-
-    :param lecture_tex: File to set background image in.
-    :return:
-    '''
-    MAIN_TEX_DIR = os.path.dirname(lecture_tex)
-    SVG_TMP_DIR = MAIN_TEX_DIR + "/" + SVG_EDIT_RELPATH + "/" + SVG_TMP_RELPATH
-    SVG_OSVG_DIR = MAIN_TEX_DIR + "/" + SVG_EDIT_RELPATH
-    force_fix_broken_osvg_files = [] if force_fix_broken_osvg_files is None else force_fix_broken_osvg_files
-
-    print("Slider is setting the background images for the .tex. file\n>  %s" % os.path.abspath(lecture_tex))
-    if copy_template_resource_files:
-        move_template_files(output_dir=MAIN_TEX_DIR, output_tex_file=None)
-    if not os.path.exists(lecture_tex):
-        # move a basic .tex file to this location and proceed
-        shutil.copyfile(DTU_beamer_base +"/dtu_slideshow_base.tex", lecture_tex)
-
-    ANY_CHANGES = True
-    tex = recursive_tex_apply(lecture_tex)
-    tex = "\n".join([tex[k] for k in tex])
-    all_tex = tex
-    tex = tex.splitlines()
-
-    ol = "\\osvg"
-    tex = [s.strip() for s in tex if ol in s and "@ifnextchar" not in s and "%" not in s[:s.find(ol)]] # exclude definition of osvg command
-    sinfo = {}
-
-    for s in tex:
-        i = s.find(ol) + len(ol)
-        if s[i] == "[": i = s.find("]", i)
-        i = s.find("{", i)
-        ie = s.find("}", i)
-        if ie == -1: continue
-        s = s[i+1:ie]
-        ii = all_tex.find(s)
-        frame_start = all_tex.rfind("\\begin{frame}", 0, ii)
-        frame_end = all_tex.find("\\end{frame}", ii, len(all_tex))
-
-        cs = all_tex[frame_start:frame_end]
-        d = {"pdf_label": s, "svg_edit_file": MAIN_TEX_DIR + "/" + SVG_EDIT_RELPATH + "/" + s + ".svg", 'slide_tex': cs}
-        sinfo[s] = d
-        # print(d)
-
-    if not os.path.exists(MAIN_TEX_DIR + "/" + SVG_EDIT_RELPATH):
-        os.mkdir(MAIN_TEX_DIR + "/" + SVG_EDIT_RELPATH)
-    # Prepare alternative .tex file; compile with handout and watermarks for later reference.
-    lecture_tex_nosvg = lecture_tex[:-4] + "_NO_SVGS.tex"
-    with open(lecture_tex, "r") as f:
-        s = f.read()
-
-    if s.find(dc) < 0:
-        # find and fix the import
-        dc2 = "\\input{"
-        j1 = s.find(dc2)+len(dc2)
-        j2 = s.find(dc2) + s.find("}", s.find(dc2))
-        fhead = MAIN_TEX_DIR + "/" + s[j1:j2]+".tex"
-        with open(fhead, 'r') as f:
-            sh = f.read()
-            sh = fix_handout(sh)
-            with open(fhead, 'w') as f2:
-                f2.write(sh)
-    else:
-        s = fix_handout(s)
-
-    i = s.find("\\begin{document}")
-    ii = s.rfind("\n", i - 10, i)
-    s = s[:ii] + "\n \\togglefalse{overlabel_includesvgs}\n\\toggletrue{overlabel_includelabels}\n" + s[ii:]
-
-    with open(lecture_tex_nosvg, "w") as f:
-        f.write(s)
-
-    lecture_tex_nosvg_pdf = lecture_tex_nosvg[:-4] + ".pdf"
-
-    # lecture_tex_nosvg_tex = recursive_tex_apply(lecture_tex_nosvg)
-
-    if cache_contains_str(MAIN_TEX_DIR, key='all_tex', value=all_tex) and os.path.exists(lecture_tex_nosvg_pdf):
-        print("slider> Cache contains nosvg tex file")
-    else:
-        cdir = os.getcwd()
-        os.chdir(os.path.dirname(lecture_tex_nosvg))
-        execute_command(("latexmk -shell-escape -f -pdf -interaction=nonstopmode " + os.path.basename(lecture_tex_nosvg)).split(" "))
-        os.chdir(cdir)
-        cache_update_file(MAIN_TEX_DIR, lecture_tex_nosvg)
-        ANY_CHANGES = True
-
-    # Make .png background images.
-    with open(lecture_tex_nosvg_pdf, 'rb') as f:
-        pdfdoc = PyPDF2.PdfFileReader(f)
-        for i in range(pdfdoc.getNumPages()):
-            content = pdfdoc.getPage(i).extractText()
-            for osvg_name, d in sinfo.items(): #enumerate(sinfo):
-
-                if d['pdf_label'] in content:
-                    d['pdf_page'] = i
-                    d['png_bgimg'] = SVG_TMP_DIR + "/" + d['pdf_label'] + ".png"
-                    if not os.path.exists(d['svg_edit_file']):
-                        '''
-                        Found \osvg{myslide}, but myslide.svg does not exist. Re-create it from the original slide.
-                        '''
-                        print("Failed to find editable file: %s. Re-creating from snapshot..."%d['svg_edit_file'])
-                        tmp_svg_file = "%s/%s/%s"%(os.path.dirname(d['svg_edit_file']),
-                                                   SVG_TMP_RELPATH,
-                                                   os.path.basename(d['svg_edit_file']))
-                        tmp_svg_file = legacy_importer.slide_to_image(lecture_tex_nosvg_pdf, tmp_svg_file, i + 1)
-                        legacy_importer.raw_svg_to_osvg(tmp_svg_file, overwrite_existing=True)
-                        ANY_CHANGES = True
-
-                    if cache_contains_str(MAIN_TEX_DIR, key=d['pdf_label'], value=d['slide_tex']):
-                        # print("slider> Cache contains slide tex; continuing: " + d['pdf_label'] )
-                        continue
-                    legacy_importer.slide_to_image(lecture_tex_nosvg_pdf, d['png_bgimg'], i + 1)
-                    ANY_CHANGES = True
-                    cache_update_str(MAIN_TEX_DIR, key=d['pdf_label'], value=d['slide_tex'])
-
-
-    # This is the step that actually fixes the svg files. i.e. squeeze fonts, etc.
-    for osvg_name, d in sinfo.items():
-        if (osvg_name+".svg") not in force_fix_broken_osvg_files:
-            if cache_contains_file(MAIN_TEX_DIR, d['svg_edit_file']) and not force_recompile:
-                continue
-        '''        
-        Check if the svg image pass sanity checks: Does it exist and is it okay?                
-        '''
-        if fix_broken_osvg_files:
-            check_svg_file_and_fix_if_broken(d['svg_edit_file'], verbose=verbose)
-
-        legacy_importer.svg_edit_to_importable(d['svg_edit_file'], verbose=verbose)
-        # legacy_importer.svg_check_background_layer(d['svg_edit_file'], verbose=verbose) # This was an old check for BG img.
-        cache_update_file(MAIN_TEX_DIR, d['svg_edit_file'])
-        ANY_CHANGES = True
-
-    if ANY_CHANGES and recompile_on_change:
-
-        latexmk(lecture_tex)
-
-    if clean_temporary_files:
-        if verbose:
-            print("> SlideConverter: Removing temporary dirs...")
-        # raise Exception()
-        DNE = SVG_OSVG_DIR + "/do_not_edit"
-        if os.path.exists(SVG_TMP_DIR):
-            for v in glob.glob(SVG_TMP_DIR + "/*"):
-                if not v.endswith("png"):
-                    os.remove(v)
-
-        if os.path.exists(DNE):
-            for v in glob.glob(DNE + "/*"):
-                if not v.endswith("png"):
-                    os.remove(v)
-
-def slide_no_by_text(pdf_file, text):
-    assert False
-    # Make .png background images.
-    if os.path.exists(pdf_file):
-        with open(pdf_file, 'rb') as f:
-            print(pdf_file)
-            pdfdoc = PyPDF2.PdfFileReader(f)
-            for i in range(pdfdoc.getNumPages()):
-                content = pdfdoc.getPage(i).extractText()
-                # for j, d in enumerate(sinfo):
-                if text in content:
-                    return i+1
-    else:
-        print("Warning: slide.py() -> slide_no_by_text(): PDF file not found " + pdf_file)
-    return -1
-    # raise Exception()
-
-def recursive_tex_apply(doc, fun=None, current_output=None):
-    if not fun:
-        def mfun(curdoc, txt, cur_out):
-            if not cur_out: cur_out = dict()
-            cur_out[curdoc] = txt
-            return cur_out
-
-        fun = mfun
-    if os.path.exists(doc):
-        def rfile(doc, encoding):
-            with open(doc, 'r', encoding=encoding) as f:
-                tex = f.read()
-            return tex
-        try:
-            tex = rfile(doc, encoding="utf-8")
-        except Exception as e:
-            print("Problem reading file", doc)
-            print(e)
-            import glob
-            from chardet.universaldetector import UniversalDetector
-            detector = UniversalDetector()
-            detector.reset()
-            with open(doc, 'rb') as f:
-                detector.feed(f.read())
-            detector.close()
-            res = detector.result['encoding']
-            print("Detecting encoding with chardet...")
-            print(res)
-            tex = rfile(doc, encoding=detector.result['encoding'])
-
-        current_output = fun(doc, tex, current_output)
-        for s in tex.splitlines():
-            fs = '\\input{'
-            if fs in s and not s.strip().startswith("%"):
-                j = s.find(fs)
-                rec_file = s[j + len(fs):s.find("}", j)]
-                if os.path.isabs(rec_file):
-                    rec_file_tex = rec_file
-                else:
-                    rec_file_tex = os.path.dirname(doc) + "/" + rec_file
-                    if not rec_file_tex.endswith(".tex"):
-                        rec_file_tex += ".tex"
-
-                current_output = recursive_tex_apply(rec_file_tex, fun, current_output)
-    return current_output
-
-def recursive_tex_collect(doc):
-    assert False
-    sdict = recursive_tex_apply(doc)
-    def gathersub(file):
-        lines = []
-        if file not in sdict:
-            print(sdict)
-            raise Exception("Bad error occured in split lines " + file )
-        for s in sdict[file].splitlines():
-            fs = '\\input{'
-            if fs in s and not s.strip().startswith("%"):
-                j = s.find(fs)
-                rec_file = s[j + len(fs):s.find("}", j)]
-                if os.path.isabs(rec_file):
-                    rec_file_tex = rec_file
-                else:
-                    rec_file_tex = os.path.dirname(file) + "/" + rec_file
-                    if not rec_file_tex.endswith(".tex"):
-                        rec_file_tex += ".tex"
-
-                lines += gathersub(rec_file_tex)
-            else:
-                lines.append(s)
-        return lines
-
-    lines = gathersub(doc)
-    return "\n".join(lines)
-
diff --git a/build/lib/slider/slide_fixer.py b/build/lib/slider/slide_fixer.py
deleted file mode 100644
index 3ca3f50ad5b9c32345121abc3a6f169468f6c337..0000000000000000000000000000000000000000
--- a/build/lib/slider/slide_fixer.py
+++ /dev/null
@@ -1,140 +0,0 @@
-"""
-Fix broken issues in osvg files.
-for instance, you copy a random file, and it has the wrong dimensions, etc.
-Need some fairly serious checking I guess...
-
-Example of a good file:
-
-inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="bg_layer"
-     style="display:inline"
-     sodipodi:insensitive="true">
-"""
-
-
-good_file = """<?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns:sodipodi = "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape = "http://www.inkscape.org/namespaces/inkscape"
- height="297.638pt" version="1.2" viewBox="0 0 396.85 297.638" width="396.85pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><metadata></metadata>
-<g inkscape:groupmode="layer" id="layer1" inkscape:label="bg_layer" style="display:inline" sodipodi:insensitive="true">
-<image
-xlink:href="{0}"
-width="100%"
-height="100%"
-preserveAspectRatio="none"
-style="image-rendering:optimizeQuality"
-id="image4444th"
-x="0"
-y="0" />
-</g>
-<g inkscape:groupmode="layer"
-id="layer2"
-inkscape:label="Layer 1"
-style="display:inline">
-</svg>
-"""
-
-""""
-First idea would be to simply load files, replace the tmp-stuff, and check if they agree.
-"""
-from bs4 import BeautifulSoup
-import os
-
-def check_svg_file_and_fix_if_broken(osvg_file, verbose=True):
-    assert False
-    '''
-    Sanity check the given file. Does the slide appears to be in okay shape? Is it broken?
-    if it is, fix it.
-    '''
-    # print(osvg_file)
-    png_ = "tmp/" + os.path.basename(osvg_file)[:-4] + ".png"
-
-    ID = 'image4444th'
-    to_save = None
-    with open(osvg_file, 'r', encoding="UTF-8",errors="surrogateescape") as f:
-        soup = BeautifulSoup(f, 'xml', from_encoding="UTF-8")
-
-        bg_tags = soup.findAll("image", {'id': ID})
-
-        if len(bg_tags) == 0:
-            print("uh oh. No background image found in", osvg_file)
-
-        g = None
-        is_file_ok = True
-        for i in soup.findAll("g", {'inkscape:groupmode': 'layer'}):
-            if i['inkscape:label'] == "bg_layer":
-                g = i
-        if g is not None:
-            bgim = g.find("image")
-            if bgim['id'] == ID:
-                # We have a BG image, it has the right ID. Also check if the path matches.
-                bg_png = bgim['xlink:href']
-
-                if bg_png != png_:
-                    print("Mismatching background PNGs", osvg_file)
-                    print(bg_png, png_)
-                    bgim['xlink:href'] = png_
-                    to_save = soup.prettify(formatter="xml")
-
-            else:
-                print("We found the bg_layer tag, but it has no image in it. SVG is broken", osvg_file)
-                is_file_ok = False
-        else:
-            is_file_ok = False
-
-        if is_file_ok:
-            # Do sanity check of svg height property.
-            height = soup.find('svg')['height']
-            if height.find("pt") > 0:
-                height = height[:-2]
-            height = float(height)
-            # float(soup.find('svg')['height'])
-            if abs(height - 297.638) > 5:
-                is_file_ok = False
-
-    if to_save is not None:
-        # raise Exception("asdfsdaf", osvg_file)
-        with open(osvg_file, 'w', encoding="UTF-8", errors="surrogateescape") as f:
-            f.write(to_save)
-        return
-
-    if not is_file_ok:
-        # raise Exception("Broken file", osvg_file)
-        # File is not ok. We have to fix it. But how?
-
-        gsoup = BeautifulSoup(good_file, 'xml', from_encoding="UTF-8")
-        bstag = BeautifulSoup(str(gsoup.svg.g).format(png_), 'lxml', from_encoding="UTF-8")
-        g_bg = str(bstag.g)
-        with open(osvg_file, 'r', encoding="UTF-8", errors="surrogateescape") as f:
-            s = f.read()
-            soup = BeautifulSoup(s, 'xml', from_encoding="UTF-8")
-            print("Finding all tags")
-            # c = 0
-            for j in soup.svg.find_all(recursive=False):
-                IL= "inkscape:label"
-                if IL in j.attrs and j[IL] == "bg_layer":
-                    # gsoup = BeautifulSoup(good_file, 'xml', from_encoding="UTF-8")
-                    j.replaceWith(bstag.g)
-                    # print( j['inkscape:label']  )
-                    break
-                    # print("FOUND")
-                # print(j)
-                # c += 1
-                # print(c, "-----")
-                # if c == 4:
-                #     break
-
-            soup.svg.attrs = gsoup.svg.attrs
-            s = str(soup)
-            # j = s.find("<defs")
-            # print("Found defs at j", j)
-            # s = good_file.format( png_) + "\n" + s[j:]
-        # import time
-        # time.sleep(0.1)
-        # print(s[:4000])
-        # soup2 = BeautifulSoup(s, 'xml', from_encoding="UTF-8")
-
-        with open(osvg_file, 'w', encoding="UTF-8", errors="surrogateescape") as f:
-            f.write(s)
-    a = 234
\ No newline at end of file
diff --git a/build/lib/slider/slider_cli.py b/build/lib/slider/slider_cli.py
deleted file mode 100644
index 683b44c1a56dd21e61e94621458d63a04264691b..0000000000000000000000000000000000000000
--- a/build/lib/slider/slider_cli.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import  clize
-import os
-import sys
-import shutil
-from slider.slide import set_svg_background_images
-import click
-
-def confirm_start_new_project(latexfile, force=False):
-    try:
-        if force or click.confirm(f"Do you want to create a new Slider LaTeX file named {latexfile}?", abort=True):
-            # print("Starting new project")
-            from slider.slider_init import slider_init
-            slider_init(latexfile)
-
-    except click.exceptions.Abort as e:
-        sys.exit()
-
-
-def slider_cli(latexfile=None, force=False, verbose=False):
-    """
-    Slider software for manipulating overlay-svg images.
-    To get started, first start a slider project by creating a new folder and running
-
-    > python -m slider index.tex
-
-    This will create a bunch of files including a folder named osvgs. This is where you keep the slides!
-
-    When you edit/change overlays, remember to run
-
-    > python -m slider index.tex
-    > python -m slider
-
-    to keep everything synchronized.
-    You can add new overlays by simply using the LaTeX \osvg{labelname}-tag on new slides (and running slider)
-    Edit the overlays by looking in the \osvg-folder, in this case osvg/labelname.svg.
-
-    Remember the overlays by default import the content of the slides (useful if you want to move existing equations around)
-    so remember to remove non-wanted contents.
-    When done, run slider again to keep everything in sync.
-
-    :param latexfile:
-    :param force:
-    :param verbose:
-    """
-
-    # print("Initializing da slides.")
-    wdir = os.getcwd()
-    print(wdir)
-    if latexfile == None:
-        print("Trying to manually detect main latex file.")
-        import glob
-        files = glob.glob("*.tex")
-        mfiles = []
-        for name in files:
-            with open(name, 'r') as f:
-                lines = [l.strip() for l in f.read().splitlines()]
-            s = "\n".join([l for l in lines if not l.startswith("%")] )
-            if "\\begin{document}" in s and "{beamer}" in s and "_NO_SVGS" not in name:
-                print("Main file found!")
-                mfiles.append(name)
-        if len(mfiles) != 1:
-            print("Many candidate files found")
-            print(mfiles)
-            sys.exit()
-        else:
-            latexfile = mfiles[0]
-        # latexfile = "index.tex"
-    if not latexfile.endswith(".tex"):
-        latexfile += ".tex"
-    latexfile = os.path.join(wdir, latexfile)
-    if os.path.exists(latexfile):
-        # print("File already exists:", latexfile)
-        # print("Doing the slide-stuff.")
-        set_svg_background_images(lecture_tex=latexfile)
-    else:
-        confirm_start_new_project(latexfile=latexfile, force=force)
-
-
-def clize_main_entry_point():
-    """
-    I collect this in one function to make a single entry point regardless of where
-    > slider
-    or
-    > python -m slider
-
-    is used.
-
-    :return:
-    """
-    clize.run(slider_cli)
-
-
-if __name__ == '__main__':
-    clize_main_entry_point()
diff --git a/build/lib/slider/slider_init.py b/build/lib/slider/slider_init.py
deleted file mode 100644
index a72e1217cb2497c3fcc5d0412dcefd9ab534c2d4..0000000000000000000000000000000000000000
--- a/build/lib/slider/slider_init.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#!python
-# No, do this instead: https://setuptools.readthedocs.io/en/latest/userguide/entry_point.html
-# The above makes the script executable.
-
-import clize
-import os
-import sys
-import shutil
-
-base_slide = """ 
-\\documentclass[aspectratio=43]{beamer}
-\\usepackage{etoolbox}
-\\newtoggle{overlabel_includesvgs}
-\\newtoggle{overlabel_includelabels}
-\\toggletrue{overlabel_includesvgs}
-\\toggletrue{overlabel_includelabels}
-\\input{beamer_slider_preamble.tex}
-
-\\title{Example slide show}
-\\author{Tue Herlau}
-\\begin{document}
-\\begin{frame}
-\\maketitle
-\\end{frame}
-
-\\begin{frame}\\osvg{myoverlay} % Use the \\osvg{labelname} - tag to create new overlays. Run slider and check the ./osvgs directory for the svg files!
-\\title{Slide with an overlay}
-This is some example text!
-\\end{frame}
-
-\\end{document}
-"""
-
-def slider_init(latexfile=None):
-    # return
-    # print("Initializing da slides.")
-    wdir = os.getcwd()
-    print(wdir)
-    if latexfile == None:
-        latexfile = "index.tex"
-    if not latexfile.endswith(".tex"):
-        latexfile += ".tex"
-    latexfile = os.path.join(wdir, latexfile)
-    if os.path.exists(latexfile):
-        print("File already exists", latexfile)
-        # sys.exit()
-    # Done with the introductory bullshit.
-
-    if not os.path.isdir(os.path.dirname(latexfile)):
-        os.makedirs(os.path.dirname(latexfile))
-
-    import jinja2
-    with open(latexfile, 'w') as f:
-        f.write(base_slide)
-
-    print("Initializing with", latexfile)
-
-    # jinja2.Environment().from_string(base_slide)
-    from slider.slide import set_svg_background_images
-    set_svg_background_images(latexfile, clean_temporary_files=True)
-
-if __name__ == "__main__":
-    # slider_init("../../test/index.tex")
-    # from slider.latexutils import latexmk
-    # import slider
-    clize.run(slider_init)
diff --git a/src/beamer_slider.egg-info/PKG-INFO b/src/beamer_slider.egg-info/PKG-INFO
index 7e791aa321522671c2239366317a65c63df4c5e8..604eec007ea580a5de48901e31c7efbba037b7ac 100644
--- a/src/beamer_slider.egg-info/PKG-INFO
+++ b/src/beamer_slider.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: beamer-slider
-Version: 0.1.25.6
+Version: 0.1.26.1
 Summary: Software to create inkscape overlays in Beamer
 Home-page: https://lab.compute.dtu.dk/tuhe/slider
 Author: Tue Herlau
diff --git a/src/beamer_slider.egg-info/SOURCES.txt b/src/beamer_slider.egg-info/SOURCES.txt
index 63e5254d979c01c5381d0dc87110a5abb8795d23..843c3507d5f3420694a10fc58f79600e73e0dece 100644
--- a/src/beamer_slider.egg-info/SOURCES.txt
+++ b/src/beamer_slider.egg-info/SOURCES.txt
@@ -43,4 +43,5 @@ src/slider/data/DTU_Beamer_files/dtucolours.tex
 src/slider/data/DTU_Beamer_files/tex_compute_uk.pdf
 src/slider/data/DTU_Beamer_files/tex_dtu_compute_a_uk.pdf
 src/slider/data/DTU_Beamer_files/tex_dtu_frise.pdf
-src/slider/data/DTU_Beamer_files/tex_dtu_logo.pdf
\ No newline at end of file
+src/slider/data/DTU_Beamer_files/tex_dtu_logo.pdf
+tests/test_slider.py
\ No newline at end of file
diff --git a/src/slider/convert.py b/src/slider/convert.py
index a3837ca860050ef0fe89c5b761d059ac2ccbc758..dbeae927398ddeee034c5524615a0dc3b46255cf 100644
--- a/src/slider/convert.py
+++ b/src/slider/convert.py
@@ -16,7 +16,7 @@ def svg2pdf(fin, fout=None, crop=True, text_to_path=False, export_area_page=True
     if text_to_path: # Good idea for inkscape which seems to bungle the fonts (space in font names?)
         cmd.append("-T")
     cmd.append(fin)
-    cmd.append(f"--export-filename={fout}")
+    cmd.append(f'--export-filename="{fout}"')
     # '-C', '--without-gui', f'--file={fin}', f'--export-pdf={fout}']
     # cmd = ['inkscape', '-C', '-T', '--without-gui', '--file=%s'%svg_fonts_layers[-1], '--export-pdf=%s' % pdf_nofonts_layers[-1]]
     execute_command(cmd)
diff --git a/src/slider/legacy_importer.py b/src/slider/legacy_importer.py
index 4ffe0deb3e99d670e96f281289415417e1ae6da7..bdee3fa42b55980270a7f22baa7f5aa2cbaebe82 100644
--- a/src/slider/legacy_importer.py
+++ b/src/slider/legacy_importer.py
@@ -25,7 +25,8 @@ def ensure_dir(dname):
         os.mkdir(dname)
 
 def join_pdfs(slide_deck_pdf, outfile):
-    assert False
+    # Used by the legacy slide importer.
+    # assert False
     dn = os.path.dirname(slide_deck_pdf[0])
     files = [os.path.relpath(os.path.dirname(pdf), start=dn) + "/" + os.path.basename(pdf) for pdf in slide_deck_pdf]
     outf = os.path.relpath(os.path.dirname(outfile), start=dn) + "/" + os.path.basename(outfile)
diff --git a/src/slider/version.py b/src/slider/version.py
index 0bb8fc34896645bb6d04f676c549b0568981e464..b9ffbe50f2a7f900c296e0c3b5b92477dcc40d83 100644
--- a/src/slider/version.py
+++ b/src/slider/version.py
@@ -1 +1 @@
-__version__ = "0.1.25.6"
\ No newline at end of file
+__version__ = "0.1.26.1"
\ No newline at end of file