Source code for mojo.latex.pyPackages
"""
pyPackages - settings for latex packages
========================================
"""
# settings for a latex package
class PyPackageList:
"""List of packages
"""
def __init__(self):
# keep order of entries
self._ordered = []
self.packages = dict()
def addPackage(self, name, options=""):
"""Add a package to the list
**parameters**:
* **name** - name of package
**optional parameters**:
* **options** - its options
"""
if name in self.packages.keys() and (self.packages[name] or options):
print(f"WARNING: package '{name}' is already in list.", end=' ')
print("\tOptions will be overwritten")
print(f"\t old option:{self.packages[name]}")
print(f"\t new option: {options}")
else:
self._ordered.append(name)
self.packages[name] = options
def getPackages(self):
"""Return the list of all packages
"""
return list(self.packages.keys())
def count(self):
"""Return number of packages
"""
return len(self.packages)
def formatter(self, ordered=True):
"""Create formatted string for all command line options
**optional parameters**:
* **ordered** - show in order of entry
"""
textOption = []
if ordered:
packageList = self._ordered
else:
packageList = list(self.packages.keys())
for packagename in packageList:
if self.packages[packagename]:
optionList = "[%s]" % (self.packages[packagename])
else:
optionList = ""
textOption.append("\\usepackage%s{%s}" % (optionList, packagename))
return "\n".join(textOption)
def __str__(self):
return self.formatter()
# package settings for latex project
[docs]class PyPackages:
"""package settings for latex project
:param default: default settings for particular projects like 'pavayo': ['equation', 'pavayo', 'validation']
:type default: str
:param verbose: output level
:type verbose: int
:param packagelist: list of packages
:type packagelist: PyPackageList of strings
"""
def __init__(self, default="", verbose=0):
"""Initialize instance of class
input parameters:
default - default settings for particular projects like 'pavayo': ['equation', 'pavayo', 'validation', 'presentation']
class.parameters:
packagelist - PyPackageList
verbose - output level
"""
self.verbose = verbose
self.packagelist = PyPackageList()
if default.lower() == "equation":
self.packagelist.addPackage("amssymb")
self.packagelist.addPackage("amsmath")
self.packagelist.addPackage("mathptmx")
elif default.lower() in ["pavayo", "validation"]:
self.packagelist.addPackage("longtable")
self.packagelist.addPackage("booktabs")
self.packagelist.addPackage("graphicx", options="pdftex")
self.packagelist.addPackage("epstopdf")
self.packagelist.addPackage("fancyhdr")
self.packagelist.addPackage("amsmath")
self.packagelist.addPackage("morefloats", options="maxfloats=400")
self.packagelist.addPackage("fancyvrb")
self.packagelist.addPackage("hyperref", options="colorlinks=true, linkcolor=blue, pdfstartview={FitH}")
self.packagelist.addPackage("color")
self.packagelist.addPackage("xcolor", options="usenames, dvipsnames")
self.packagelist.addPackage("array")
self.packagelist.addPackage("url")
self.packagelist.addPackage("subfigure")
self.packagelist.addPackage("wrapfig")
if default.lower() == "pavayo":
self.packagelist.addPackage("ucs")
self.packagelist.addPackage("inputenc", options="utf8x")
self.packagelist.addPackage("chngcntr")
else:
self.packagelist.addPackage("inputenc", options="utf8")
elif default.lower() == "presentation":
self.packagelist.addPackage("inputenc", options="latin9")
self.packagelist.addPackage("overpic")
if self.verbose > 1:
print("%d packages in list" % (self.packagelist.count()))
print(self.packagelist)
# add package to list
[docs] def addPackage(self, name, options=""):
"""add package to list
**parameters**:
* **name** - name of package
* **options** - its options
"""
self.packagelist.addPackage(name, options=options)
if self.verbose:
print("added package: %s --- %s" % (name, options))
# string instance of class
def __str__(self):
"""string instance of class
"""
return str(self.packagelist)