initial commit

main
Jean-Damien Genero 4 years ago
parent a4d13a3f32
commit 5ca4ff7890

@ -0,0 +1,372 @@
<?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{article}
\usepackage[frenchb]{babel}
\usepackage[utf8]{inputenc}
\usepackage{setspace}
\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}
\usepackage{tabularx}
\usepackage[textwidth=6in]{geometry}
\usepackage[]{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{chngcntr}% http://ctan.org/pkg/chngcntr
\xdefinecolor{rhodamine}{named}{Rhodamine}
\counterwithout{subsubsection}{subsection}
\renewcommand\thesubsection{\Roman{subsection}.}
\renewcommand\thesubsubsection{§ \arabic{subsubsection}}
\renewcommand*\contentsname{\centering{Sommaire}}
% source How to vertically center two images next to each other?
% https://tex.stackexchange.com/questions/7219/how-to-vertically-center-two-images-next-to-each-other
\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 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>
Loading…
Cancel
Save