Source code for pyexlatex.presentation.beamer.block

from typing import Optional
from pyexlatex.models.section.base import TextAreaBase
from pyexlatex.presentation.beamer.theme.setcolor import SetBeamerColor


[docs]class BlockBase(TextAreaBase): name = '<invalid, use a subclass, not BlockBase>'
[docs] def __init__(self, content, title: Optional[str] = None, text_color: Optional[str] = None, header_color: Optional[str] = None, **kwargs): self.content = content self.title = title title_str = title if title is not None else '' title_modifier_str = f'{{{title_str}}}' pre_env_contents = None post_env_contents = None if text_color is not None or header_color is not None: from pyexlatex.logic.builder import _build color_options = [] if text_color is not None: color_options.append(f'fg={text_color}') if header_color is not None: color_options.append(f'bg={header_color}') set_color = SetBeamerColor('block title', color_options) pre_env_contents = _build([ '{', set_color ]) post_env_contents = '}' super().__init__(self.name, self.content, env_modifiers=title_modifier_str, pre_env_contents=pre_env_contents, post_env_contents=post_env_contents, **kwargs)
[docs]class Block(BlockBase): """ Block with an optional header """ name = 'block'
[docs]class AlertBlock(BlockBase): """ Block with an optional header which is red """ name = 'alertblock'
[docs]class ExamplesBlock(BlockBase): """ Block which always has the header title "Examples" """ name = 'examples'
[docs] def __init__(self, content): super().__init__(content, None) # examples does not support a title