<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tei="http://www.tei-c.org/ns/1.0"
    exclude-result-prefixes="xs" version="1.0">
    <xsl:output omit-xml-declaration="yes" method="text" indent="no" encoding="UTF-8"/>
    <!-- param pour l'id de l'acte -->
    <xsl:param name="numero"/>
    <!-- STRUCTURATION GLOBALE -->
    <xsl:template match="/">\documentclass{memoir}
        \usepackage[frenchb]{babel}
        \usepackage[utf8]{inputenc}
        \usepackage{setspace}
        
        % header
        %\usepackage{fancyhdr}
        %\pagestyle{fancy}
        %\fancyhf{}
        %\chead{\textit{Jean-Damien Généro}}
        %\renewcommand{\headrulewidth}{0pt}
        
        % notes de fin de section
        \usepackage{endnotes}
        \renewcommand{\theendnote}{(\alph{endnote})} 
        \renewcommand*{\enoteheading}{}
        
        % URLs
        \usepackage[colorlinks=true,linkcolor=black,anchorcolor=black,citecolor=black,filecolor=black,menucolor=black,runcolor=black,urlcolor=blue]{hyperref}
        \usepackage{xurl}
        
        % tableaux
        %\usepackage{tabularx}
        %\usepackage[]{graphicx}
        %\usepackage[dvipsnames]{xcolor}
        
        % augmente les marges de la pages
        \usepackage[textwidth=6in]{geometry}
        
        % retirer les subsubsection du compteur
        %\counterwithout{subsubsection}{subsection}
        
        % titre de la TOC
        \renewcommand*\contentsname{\centering{Sommaire}}
        
        % centrer les titres de section
        \usepackage{titlesec}
        \titleformat{\section}[block]{\Large\bfseries\filcenter}{}{1em}{}
        \setcounter{secnumdepth}{0}
        
        % titre, auteur, date
        \title{Actes de Charles Ier}
        \author{Jean-Damien Généro}
        \date{Juillet 2022}
        
        \begin{document}
        <xsl:apply-templates select="//text"/>
        \end{document}</xsl:template>
    <xsl:template match="//text">
    <xsl:apply-templates/></xsl:template>
    
    <xsl:template match="//div[@xml:id]">
        \section{<xsl:value-of select="./@n"/>.}
        <xsl:apply-templates/>
        <xsl:if test=".//note[@type='na']">
            <xsl:text>\medskip
                
                \theendnotes
            
            \setcounter{endnote}{0}
            
            </xsl:text>
        </xsl:if>
        <xsl:text>\endgroup
        
        </xsl:text>
    </xsl:template>
    <!-- RÈGLES GLOBALES DE MISE EN FORME -->
    <xsl:template match="hi[@rend='sup']">
        <!-- exposant -->
        <xsl:text>\up{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <xsl:template match="hi[@rend='i']">
        <!-- italique -->
        <xsl:text>\textit{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <xsl:template match="hi[@rend='bold']">
        <!-- gras -->
        <xsl:text>\textbf{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <xsl:template match="hi[@rend='smallcaps']">
        <!-- petites majuscules -->
        <xsl:text>\textsc{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <xsl:template match="ref[@type='external']">
        <!-- liens -->
        <xsl:text>\href{</xsl:text><xsl:value-of select="@target"/><xsl:text>}{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <xsl:template match="head">
        <!-- texte établi, deperditum -->
            <xsl:text>
                \begin{center}
            \textsc{</xsl:text><xsl:apply-templates/>}<xsl:text>
            \end{center}
        </xsl:text>
    </xsl:template>
    <xsl:template match="biblStruct">
        <!-- référence bibliographique structurée -->
        <xsl:if test="parent::witness/@n='a'">
            <!-- si c'est l'édition a. -->
            <xsl:value-of select="parent::witness/@n"/>
            <xsl:text>. </xsl:text>
        </xsl:if>
        <xsl:if test="parent::witness/@n='b'">
            <!-- si c'est l'édition b. -->
            <xsl:value-of select="parent::witness/@n"/>
            <xsl:text>. </xsl:text>
        </xsl:if>
        <xsl:for-each select=".//author/persName">
            <!-- identité du ou des auteurs -->
            <xsl:if test="./addName">
                <xsl:apply-templates select="./addName"/>
                <xsl:text> </xsl:text>
            </xsl:if>
            <xsl:apply-templates select="./forename"/>
            <xsl:if test="./surname">
                <xsl:text> </xsl:text>
                <xsl:apply-templates select="./surname"/>
            </xsl:if>
            <xsl:text>, </xsl:text>
        </xsl:for-each>
        <xsl:choose>
            <!-- titre -->
            <xsl:when test=".//monogr/title[@level='a']">
                <!-- 1/ s'il s'agit d'un article -->
                <xsl:text>&#171; </xsl:text>
                <!-- titre de l'article entre guillemets français -->
                <xsl:apply-templates select=".//monogr/title[@level='a']"/>
                <xsl:text> &#187;, dans </xsl:text>
                <!-- titre de la revue en italique -->
                    <xsl:text>\textit{</xsl:text><xsl:apply-templates select=".//monogr/title[@level='j']"/><xsl:text>}</xsl:text>
                <xsl:if test=".//biblScope[@unit='part']">
                    <!-- si la revue est organisée en séries (@part) -->
                    <xsl:text>, </xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='part']/@n"/>
                </xsl:if>
                <xsl:text>, n°</xsl:text>
                <!-- numéro de la revue -->
                <xsl:choose>
                    <!-- il s'agit d'un numéro unique -->
                    <xsl:when test=".//biblScope[@unit='issue']/@n">
                        <xsl:value-of select=".//biblScope[@unit='issue']/@n"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <!-- le numéro n'est pas unique -->
                        <xsl:value-of select=".//biblScope[@unit='issue']/@from"/>
                        <xsl:text>-</xsl:text>
                        <xsl:value-of select=".//biblScope[@unit='issue']/@to"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
                <!-- 2/ il ne s'agit pas d'un article : c'est un titre de monographie -->
                <xsl:text>\textit{</xsl:text><xsl:apply-templates select=".//monogr/title[@level='m']"/><xsl:text>}</xsl:text>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:text>, </xsl:text>
        <xsl:if test=".//imprint/biblScope[@unit='volume']">
            <xsl:value-of select=".//imprint/biblScope[@unit='volume']/@n"/>
            <xsl:text>, </xsl:text>
        </xsl:if>
        <xsl:if test=".//respStmt/persName">
            <!-- éditeur -->
            <xsl:for-each select=".//respStmt/persName">
                <xsl:apply-templates select="./forename"/>
                <xsl:text> </xsl:text>
                <xsl:apply-templates select="./surname"/>
                <xsl:if test="position()!= last()">, </xsl:if>
            </xsl:for-each>
            <xsl:text> (</xsl:text>
            <xsl:apply-templates select=".//imprint/respStmt/resp"/>
            <xsl:text>), </xsl:text>
        </xsl:if>
        <xsl:if test=".//pubPlace">
            <!-- lieu de publication -->
            <xsl:apply-templates select=".//pubPlace"/>
            <xsl:text>, </xsl:text>
        </xsl:if>
        <xsl:if test=".//publisher">
            <!-- éditeur -->
            <xsl:apply-templates select=".//publisher"/>
            <xsl:text>, </xsl:text>
        </xsl:if>
        <!-- date -->
        <xsl:value-of select=".//date/@when"/>
        <xsl:text>, </xsl:text>
        <xsl:if test=".//biblScope[@unit='page']">
            <!-- pagination -->
            <xsl:choose>
                <xsl:when test=".//biblScope[@unit='page']/@n">
                    <!-- il y a une page -->
                    <xsl:text>p. </xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@n"/>
                </xsl:when>
                <xsl:otherwise>
                    <!-- il y a plusieurs pages -->
                    <xsl:text>pp. </xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@from"/>
                    <xsl:text>-</xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@to"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>
        <xsl:if test=".//biblScope[@unit='entry']">
            <!-- la localisation dans la page est précisée (numéro d'index, preuve, appendice et al.) -->
            <xsl:text>, n°</xsl:text>
            <xsl:value-of select=".//biblScope[@unit='entry']/@n"/>
            <xsl:if test="./text()">
                <xsl:text> </xsl:text>
                <xsl:apply-templates select=".//biblScope[@unit='entry']"/>
            </xsl:if>
        </xsl:if>
        <xsl:if test=".//ref">
            <!-- il y a un lien vers une numérisation ou autre -->
            <xsl:text> </xsl:text>
            <xsl:apply-templates select=".//ref"/>
        </xsl:if>
        <xsl:if test="parent::witness">
            <xsl:text>.</xsl:text>
        </xsl:if>
    </xsl:template>
    <xsl:template match="bibl">
        <!-- référence bibliographique non structurée -->
            <!-- titre -->
        <xsl:text>\textit{</xsl:text><xsl:value-of select="./title"/><xsl:text>}</xsl:text>
        <xsl:if test="./biblScope[@unit='volume']">
            <!-- numéro du volume s'il existe -->
            <xsl:text>, </xsl:text>
            <xsl:value-of select="./biblScope[@unit='volume']/@n"/>
        </xsl:if>
        <xsl:if test="./biblScope[@unit='page']">
            <!-- pagination si elle précisée -->
            <xsl:choose>
                <!-- une page -->
                <xsl:when test=".//biblScope[@unit='page']/@n">
                    <xsl:text>, p. </xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@n"/>
                </xsl:when>
                <xsl:otherwise>
                    <!-- plusieurs pages -->
                    <xsl:text>, pp. </xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@from"/>
                    <xsl:text>-</xsl:text>
                    <xsl:value-of select=".//biblScope[@unit='page']/@to"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>
        <xsl:if test="./biblScope[@unit='entry']">
            <xsl:text>, n°</xsl:text>
            <xsl:value-of select="./biblScope[@unit='entry']/@n"/>
        </xsl:if>
        <xsl:if test="parent::witness">
            <xsl:text>.</xsl:text>
        </xsl:if>
    </xsl:template>
    <!-- DATATION -->
    <xsl:template match="docDate">
        <xsl:text>\begingroup
            
            \begin{center}
        </xsl:text>
            <xsl:choose>
                <!-- dates de temps et de lieu -->
                <xsl:when test="not(contains(placeName,'NS'))">
                    <xsl:text>\textbf{</xsl:text>
                    <xsl:apply-templates select="date"/>
                    <xsl:text>. -- </xsl:text>
                    <xsl:apply-templates select="placeName"/>
                    <xsl:text>.}</xsl:text>
                </xsl:when>
                <!-- date de temps uniquement -->
                <xsl:otherwise>
                    <xsl:text>\textbf{</xsl:text>
                    <xsl:apply-templates select="date"/>
                    <xsl:text>.}</xsl:text>
                </xsl:otherwise>
            </xsl:choose>
        <xsl:text>
            \end{center}</xsl:text>
    </xsl:template>
    <xsl:template match="date">
        <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="docDate/placeName">
        <xsl:apply-templates/>
    </xsl:template>
    <!-- pas de template pour le premier argument, qui est utilisé pour la page de présentation du corpus -->
    <xsl:template match="argument[1]"/>
    <!-- REGESTE -->
    <xsl:template match="argument[2]">
            <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="argument[2]/p">
        <xsl:text>\textit{</xsl:text><xsl:apply-templates/><xsl:text>}
        
        \bigskip
        </xsl:text>
    </xsl:template>
    <!-- TABLEAU DE LA TRADITION -->
    <xsl:template match="listWit"><xsl:text>\begin{small}
    
    </xsl:text><xsl:apply-templates/>
        <xsl:text>\end{small}
            
            \bigskip
        
        </xsl:text>
        <!-- <xsl:apply-templates select="facsimile"/> -->
    </xsl:template>
    <xsl:template match="witness">
        <!-- Plusieurs cas : -->
        <xsl:choose>
            <!-- Quand il y a une analyse -->
            <xsl:when test="@n='analyse'">
                <xsl:text>
                    
                    \textsc{Analyse} : </xsl:text><xsl:apply-templates/>
            </xsl:when>
            <!-- Quand il y a une mention -->
            <xsl:when test="@n='mention'">
                <xsl:text>
                    
                    \textsc{Mention} : </xsl:text><xsl:apply-templates/>
            </xsl:when>
            <!-- Quand il y a édition de la mention -->
            <xsl:when test="@n='edmention'">
                <xsl:text>
                    
                    \textsc{Édition} : </xsl:text><xsl:apply-templates/>
            </xsl:when>
            <!-- Quand il y a un indiqué -->
            <xsl:when test="@n='indique'">
                <xsl:text>
                    
                    \textsc{Indiqué} : </xsl:text><xsl:apply-templates/>
            </xsl:when>
            <!-- Dans tous les cas -->
            <xsl:otherwise>
                <xsl:apply-templates/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <!-- APPELS DE NOTE DANS LE TEXTE -->
    <!-- notes critique : bas de page -->
    <xsl:template match="note[@type='n1']">
        <xsl:text>\footnote{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <!-- notes paléographiques -->
    <xsl:template match="note[@type='na']">
        <xsl:text>\endnote{</xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
    </xsl:template>
    <!-- TEXTE DE L'ACTE -->
    <xsl:template match="div[@type='acte']">
        <!-- corps de l'acte -->
            <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="div[@type='acte']/p">
            <xsl:apply-templates/>
    </xsl:template>
    <xsl:template match="div[@type='MHT']">
        <!-- mention hors teneur (mht) -->
            <xsl:choose>
                <!-- indication sur le positionnement de la mht -->
                <xsl:when test="@subtype='gauche'">
                    <xsl:text>\textit{(À gauche :)} </xsl:text><xsl:apply-templates/>
                </xsl:when>
                <xsl:when test="@subtype='droite'">
                    <xsl:text>\textit{(À droite :)} </xsl:text><xsl:apply-templates/>
                </xsl:when>
                <xsl:when test="@subtype='replidroit'">
                    <xsl:text>\textit{(Sur le repli, à droite :)} </xsl:text><xsl:apply-templates/>
                </xsl:when>
                <xsl:when test="@subtype='repligauche'">
                    <xsl:text>\textit{(Sur le repli, à gauche :)} </xsl:text><xsl:apply-templates/>
                </xsl:when>
            </xsl:choose>
    </xsl:template>
    <xsl:template match="div[@type='sign']">
        <!-- signature -->
            <xsl:for-each select="child::p">
                    <xsl:text>\medskip
                        
                        \textit{(Signé :)} </xsl:text><xsl:apply-templates/>
            </xsl:for-each>
    </xsl:template>
    
</xsl:stylesheet>