Source code for plufthesis.doc_class_type

from typing import Optional

import pyexlatex as pl
from pyexlatex.models.control.documentclass.classtypes.documentclasstype import (
    DocumentClassType,
)

from plufthesis.config import ASSETS_PATH

UF_THESIS_DISSERTATION_CLS_FILE = ASSETS_PATH / "ufdissertation.cls"
UF_THESIS_DISSERTATION_CLS_TEXT = UF_THESIS_DISSERTATION_CLS_FILE.read_text()


[docs]def get_class_type(natbib_options: Optional[str] = "numbers") -> DocumentClassType: orig_natbib = pl.RequirePackage("natbib", modifier_str="numbers") new_natbib = pl.RequirePackage("natbib", modifier_str=natbib_options) new_cls_text = UF_THESIS_DISSERTATION_CLS_TEXT.replace( str(orig_natbib), str(new_natbib) ) class_type = DocumentClassType("uf-thesis-dissertation", new_cls_text) return class_type
# TODO [$602039315315e00008a1abd9]: replace this once pyexlatex has a more convenient way of adding custom class types
[docs]def register_doc_type(natbib_options: Optional[str] = "numbers"): from pyexlatex.models.control.documentclass.classtypes.custom import ( CUSTOM_CLASS_TYPES, ) class_type = get_class_type(natbib_options) CUSTOM_CLASS_TYPES[class_type.name] = class_type