Preprocess cell.

        Parameters
        ----------
        cell : NotebookNode cell
            Notebook cell being processed
        resources : dictionary
            Additional resources used in the conversion process. Allows
            preprocessors to pass variables into the Jinja engine.
        cell_index : int
            Index of the cell being processed (see base.py)

def preprocess_cell(
        self, cell: "NotebookNode", resources: dict, index: int
    ) -> Tuple["NotebookNode", dict]:
        """Preprocess cell.

        Parameters
        ----------
        cell : NotebookNode cell
            Notebook cell being processed
        resources : dictionary
            Additional resources used in the conversion process. Allows
            preprocessors to pass variables into the Jinja engine.
        cell_index : int
            Index of the cell being processed (see base.py)

        """
        if cell.cell_type == "markdown":
            variables = cell["metadata"].get("variables", {})
            if len(variables) > 0:
                cell.source = self.replace_variables(cell.source, variables)
                if resources.get("delete_pymarkdown", False):
                    del cell.metadata["variables"]
        return cell, resources