def find(self, name=None, **attrs):
        r"""First descendant node matching criteria.

        Returns None if no descendant node found.

        :return: descendant node matching criteria
        :rtype: Union[None,TexExpr]

        >>> from TexSoup import TexSoup
        >>> soup = TexSoup(r'''
        ... \section{Ooo}
        ... \textit{eee}
        ... \textit{ooo}''')
        >>> soup.find('textit')
        \textit{eee}
        >>> soup.find('textbf')
        """
        try:
            return next(self.find_all(name, **attrs))
        except StopIteration:
            return None
r"""First descendant node matching criteria.

        Returns None if no descendant node found.

        :return: descendant node matching criteria
        :rtype: Union[None,TexExpr]

        >>> from TexSoup import TexSoup
        >>> soup = TexSoup(r'''
        ... \section{Ooo}
        ... \textit{eee}
        ... \textit{ooo}''')
        >>> soup.find('textit')
        \textit{eee}
        >>> soup.find('textbf')