Source code for internetnl_domain_analyse.latex_output

import logging
from pathlib import Path

from pylatex import Document, Figure, NoEscape, Command, SubFigure
from pylatex.base_classes import Environment, CommandBase, Arguments
from pylatex.package import Package

_logger = logging.getLogger(__name__)


[docs] class ExampleEnvironment(Environment): """ A class representing a custom LaTeX environment. This class represents a custom LaTeX environment named ``exampleEnvironment``. """ _latex_name = "exampleEnvironment" packages = [Package("mdframed")]
[docs] class SubFloat(CommandBase): """ A class representing a custom LaTeX command. This class represents a custom LaTeX command named ``exampleCommand``. """ _latex_name = "subfloat"
[docs] def make_latex_overview( image_info=None, variables=None, image_directory=None, cache_directory=None, image_files=None, tex_horizontal_shift="-2cm", tex_prepend_path=None, bovenschrift=False, module_info=None, ): """ Maak latex output file met alle plaatjes Args: module_info: class Informatie van de modules cache_directory: obj:Path image_info: object: ImageInfo variables: dict met variabele eigenschappen image_directory: str image_files: obj:Path tex_prepend_path: str tex_horizontal_shift: verschuiving naar links bovenschrift: boolean Voeg caption bovenaan figuren """ if tex_prepend_path is None: full_image_directory = image_directory else: full_image_directory = tex_prepend_path / image_directory doc_per_module = dict() for original_name, image_prop in image_info.data.items(): _logger.debug(f"Adding {original_name}") caption = variables.loc[original_name, "label"] module = variables.loc[original_name, "module"] section_key = variables.loc[original_name, "section"] section_title = None if section_key: try: sections_for_module = module_info[module]["sections"] except KeyError as err: _logger.warning( f"{err}\n" f"You have added a section {section_key} to module {module}," f"but no sections can be found under 'module_info'. Please" f"specify" ) else: try: section_prop = sections_for_module[section_key] except KeyError as err2: _logger.warning( f"{err2}\nNo section key {section_key} was found. skipping" ) else: try: section_title = section_prop["title"] except TypeError: _logger.warning(f"Failed for {section_key}: {section_prop}") raise try: doc = doc_per_module[module] except KeyError: doc = Document(default_filepath=full_image_directory) doc_per_module[module] = doc if section_title is not None: doc.append(Command("section", section_title)) doc.append(Command("label", NoEscape("sec:" + section_key))) with doc.create(Figure(position="htb")) as plots: add_new_line = True if bovenschrift: # hiermee worden caption boven toegevoegd, maar ik wil hier vanaf gaan wijken. plots.add_caption(caption) ref = "_".join([image_info.scan_data_key, original_name]) ref_label = Command("label", NoEscape("fig:" + ref)) plots.append(ref_label) for sub_image_key, sub_image_prop in image_prop.items(): sub_image_label = sub_image_prop.get("sub_image_label", "Empty") image_name = sub_image_prop["file_name"] horizontal_shift = sub_image_prop.get( "tex_right_shift", tex_horizontal_shift ) with doc.create(SubFigure(width=NoEscape(r"\linewidth"))) as sub_plot: if tex_prepend_path is None: full_image_name = Path(image_name) else: if image_name is not None: full_image_name = tex_prepend_path / image_name else: full_image_name = Path("bla") _logger.debug(f"Adding {full_image_name}") ref = "_".join( [ image_info.scan_data_key, original_name, sub_image_label.lower().replace(" ", "_"), ] ) ref_sublabel = Command("label", NoEscape("fig:" + ref)) lab = Command("footnotesize", Arguments(sub_image_label)) include_graphics = Command( "includegraphics", NoEscape(full_image_name.with_suffix("").as_posix()), ) if horizontal_shift is not None: include_graphics = Command( "hspace", Arguments(NoEscape(horizontal_shift), include_graphics), ) # sub_plot = SubFloat( # options=[lab], # arguments=Arguments(hspace)) if not bovenschrift: sub_plot.append(include_graphics) sub_plot.add_caption(lab) sub_plot.append(ref_sublabel) if bovenschrift: sub_plot.append(include_graphics) if add_new_line: plots.append(Command("newline")) add_new_line = False if not bovenschrift: # voeg een onderschrift toe plots.add_caption(caption) ref_label = Command("label", NoEscape("fig:" + original_name)) plots.append(ref_label) for module, doc in doc_per_module.items(): file_name = cache_directory / Path( "_".join( [ image_info.scan_data_key, image_files.with_suffix("").as_posix(), module, ] ) ) _logger.info(f"Writing tex file list to {file_name}.tex") doc.generate_tex(filepath=file_name.as_posix()) file_name = file_name.with_suffix(".tex") new_lines = list() start = False with open(file_name.as_posix(), "r") as stream: for line in stream.readlines(): if "figure" in line or "section" in line: start = True if "end{document}" in line: start = False if start: new_lines.append(line) with open(file_name.as_posix(), "w") as stream: stream.writelines(new_lines)