  
  The only new concept here is the ``self.nodelist.render(context)`` in
  ``UpperNode.render()``.
  
  For more examples of complex rendering, see the source code for ``{% if %}``,
  ``{% for %}``, ``{% ifequal %}`` and ``{% ifchanged %}``. They live in
  ``django/template/defaulttags.py``.
 
</s> remove Template tags can work in tandem. For instance, the standard ``{% comment %}``
tag hides everything until ``{% endcomment %}``. To create a template tag such
as this, use ``parser.parse()`` in your compilation function.
 </s> add Template tags can work in tandem. For instance, the standard
:ttag:`{% comment %}<comment>` tag hides everything until ``{% endcomment %}``.
To create a template tag such as this, use ``parser.parse()`` in your
compilation function. </s> remove Here's how the standard ``{% comment %}`` tag is implemented::
 </s> add Here's how the standard :ttag:`{% comment %}<comment>` tag is implemented:

.. code-block:: python </s> remove order for the ``{% load %}`` tag to work. This is a security feature: It allows
you to host Python code for many template libraries on a single host machine
without enabling access to all of them for every Django installation.
 </s> add order for the :ttag:`{% load %}<load>` tag to work. This is a security feature:
It allows you to host Python code for many template libraries on a single host
machine without enabling access to all of them for every Django installation. </s> remove tag is used inside a ``{% autoescape off %}`` block.
 </s> add tag is used inside a :ttag:`{% autoescape off %}<autoescape>` block. </s> remove available to your templates using the ``{% load %}`` tag.
 </s> add available to your templates using the :ttag:`{% load %}<load>` tag.
For more examples of complex rendering, see the source code for
:ttag:`{% if %}<if>`, :ttag:`{% for %}<for>`, :ttag:`{% ifequal %}<ifequal>`
or :ttag:`{% ifchanged %}<ifchanged>`. They live in
  
  The only new concept here is the ``self.nodelist.render(context)`` in
  ``UpperNode.render()``.
  
For more examples of complex rendering, see the source code for
:ttag:`{% if %}<if>`, :ttag:`{% for %}<for>`, :ttag:`{% ifequal %}<ifequal>`
or :ttag:`{% ifchanged %}<ifchanged>`. They live in
For more examples of complex rendering, see the source code for
:ttag:`{% if %}<if>`, :ttag:`{% for %}<for>`, :ttag:`{% ifequal %}<ifequal>`
or :ttag:`{% ifchanged %}<ifchanged>`. They live in
  ``django/template/defaulttags.py``.
keep keep keep keep replace replace keep
 Brushed up the custom template tag 'howto' guide by moving the assignment_tag doc to a more appropriate place (i.e. under the "Setting a variable in the context" section), adding cross references, fixing a few minor inaccuracies and doing a little PEP8 cleanup.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16909 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
docs/howto/custom-template-tags.txt