Je souhaite créer une table des matières et des notes de fin dans un modèle Jinja2. Comment peut-on accomplir ces tâches?Créer des macros Jinja2 qui placent le contenu dans des emplacements distincts
Par exemple, je veux avoir un modèle comme suit:
{% block toc %}
{# ... the ToC goes here ... #}
{% endblock %}
{% include "some other file with content.jnj" %}
{% block endnotes %}
{# ... the endnotes go here ... #}
{% endblock %}
Lorsque le some other file with content.jnj
a un contenu comme celui-ci:
{% section "One" %}
Title information for Section One (may be quite long); goes in Table of Contents
...
Content of section One
{% section "Two" %}
Title information of Section Two (also may be quite long)
<a href="#" id="en1">EndNote 1</a>
<script type="text/javsacript">...(may be reasonably long)
</script> {# ... Everything up to here is included in the EndNote #}
Là où je dis "peut être tout à fait moyen/long" I Cela signifie qu'il ne peut raisonnablement être mis entre guillemets en tant qu'argument d'une macro ou d'une fonction globale.
Je me demande s'il y a un motif pour cela qui peut accommoder ceci, dans le cadre de Jinja2.
Ma première pensée est de créer une extension, de sorte que l'on peut avoir un bloc pour les sections et notes finales, comme -SO:
{% section "One" %}
Title information goes here.
{% endsection %}
{% endnote "one" %}
<a href="#">...</a>
<script> ... </script>
{% endendnote %}
Ensuite, ont des fonctions globales (qui passe dans l'environnement Jinja2) :
{{ table_of_contents() }}
{% include ... %}
{{ endnotes() }}
Cependant, alors que cela fonctionnera pour les notes de fin, je suppose qu'il a besoin d'un second passage par quelque chose pour la table des matières.
Merci d'avoir lu. Je serais très obligé pour vos pensées et vos commentaires.
Brian