code: def tagged_projects(
              self,
              tag):
          
          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
docs: *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)``