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)