def __setitem__(self, symbol, value):
        '''
        Set the value of a symbol.

        @param symbol: Symbol name.
        @type symbol: str
        @param value: Value of the symbol.
        @type value: str or Template

        @note: The parameter C{value} of a symbol can be a string or a
        template. If it is a string, it will be considered as the
        content of the template and it will be wrapped with Template
        class. On the contrary, if it is a template, it will be
        directly assigned to the symbol.

        @note: If users would like to assign to a symbol with the path
        to a template file, please use C{pm[}M{s}C{] = 
        Template(path = }M{p}C{)}, where C{pm} is a C{PageMacro} 
        instance, M{s} is a symbol name, and M{p} is a path to 
        template. Users can alternatively use the method C{load} for
        ease of use.

        @note: If users would like to assign directly to a symbol with
        the template content, please use C{pm[}M{s}C{] = }M{c}, where 
        C{pm} is a C{PageMacro} instance and M{c} is a content of
        template.
        '''

        if isinstance(value, Template):
            self.symtab[symbol] = value
        elif type(value) is str:
            self.symtab[symbol] = Template(content = value)

        Set the value of a symbol.

        @param symbol: Symbol name.
        @type symbol: str
        @param value: Value of the symbol.
        @type value: str or Template

        @note: The parameter C{value} of a symbol can be a string or a
        template. If it is a string, it will be considered as the
        content of the template and it will be wrapped with Template
        class. On the contrary, if it is a template, it will be
        directly assigned to the symbol.

        @note: If users would like to assign to a symbol with the path
        to a template file, please use C{pm[}M{s}C{] = 
        Template(path = }M{p}C{)}, where C{pm} is a C{PageMacro} 
        instance, M{s} is a symbol name, and M{p} is a path to 
        template. Users can alternatively use the method C{load} for
        ease of use.

        @note: If users would like to assign directly to a symbol with
        the template content, please use C{pm[}M{s}C{] = }M{c}, where 
        C{pm} is a C{PageMacro} instance and M{c} is a content of
        template.
        
recipes/Python/231512_Efficient_Comfortable_HTMLTemplate/recipe-231512.py