*return a list of projects contained within this taskpaper object filtered by a given tag*

        **Key Arguments:**
            - ``tag`` -- the tag to filter the projects by.

        **Return:**
            - ``projectList`` -- the list of filtered projects

        **Usage:**

            To filter the projects recursively found with a taskpaper document object and return only those projects tagged with ``flag``, using the following:

            .. code-block:: python

                filteredProjects = doc.tagged_projects("flag")
                for p in filteredProjects:
                    print p.title

            Note you can give the tag with or without the *@*, and you can also give a tag attribute, e.g. ``@due(today)``

def tagged_projects(
            self,
            tag):
        """*return a list of projects contained within this taskpaper object filtered by a given tag*

        **Key Arguments:**
            - ``tag`` -- the tag to filter the projects by.

        **Return:**
            - ``projectList`` -- the list of filtered projects

        **Usage:**

            To filter the projects recursively found with a taskpaper document object and return only those projects tagged with ``flag``, using the following:

            .. code-block:: python

                filteredProjects = doc.tagged_projects("flag")
                for p in filteredProjects:
                    print p.title

            Note you can give the tag with or without the *@*, and you can also give a tag attribute, e.g. ``@due(today)``
        """
        self.refresh
        projectList = []
        tag = tag.replace("@", "").lower()
        for p in self.projects:
            for aTag in p.tags:
                if "(" not in tag:
                    aTag = aTag.split("(")[0]
                if aTag.lower() == tag:
                    projectList.append(p)
                    break

            subProjects = p.tagged_projects(tag)
            projectList += subProjects

        return projectList