Source code for pyexlatex.figure.models.inlinegraphic

from typing import Union, List, Optional, TYPE_CHECKING

if TYPE_CHECKING:
    from pyexlatex.presentation.beamer.overlay.overlay import Overlay

from pyexlatex.models.item import SimpleItem, MultiOptionSimpleItem
from pyexlatex.figure.models.graphic import Graphic
from pyexlatex.models.format.raw import Raw


[docs]class InlineGraphic(MultiOptionSimpleItem, Graphic): """ A version of Graphic that is meant to be used within text. It centers the text vertically when the graphic is taller than the text. """ name = 'vcenteredinclude' options: tuple # type: ignore
[docs] def __init__(self, filepath, width: Union[str, float] = 1.0, cache: bool = True, options: Optional[List[str]] = None, overlay: Optional['Overlay'] = None): self.init_data() self.add_package('graphicx') self.data.packages.append(self._command_definition) self._set_path(filepath) self.width = width self.binaries = None self.options_list = self._get_list_copy_from_list_or_none(options) self.options_list.append( f'width={self.width_str}' ) if cache: self._cache(filepath) options_str = ','.join(self.options_list) self.options = (options_str, self.source_paths[0]) self.overlay = overlay
@property def _command_definition(self) -> Raw: # TODO [#41]: set inline graphic command definition using models return Raw( r""" \newcommand{\vcenteredinclude}[2]{\begingroup \setbox0=\hbox{\includegraphics[#1]{#2}}% \parbox{\wd0}{\box0}\endgroup} """.strip() )