Utilisateur:Vieux têtard/La Nature - Macros LO
Mon outil étant Calc de LibreOffice, j'ai construit quelques macros Calc pour préparer les tables dans mes classeurs
Fonctions pour la page de discussion Auteurs
modifierFunction TransAuteur(Nom As String, Prefixe As Variant, Connu As String, optional Prenom As Variant, optional Titre As Variant) As String
Function TransAuteur(Nom As String, Prefixe As Variant, Connu As String, optional Prenom As Variant, optional Titre As Variant) As String
'
' Si auteur connu, retourne le lien vers la page Auteur, sinon retourne un libellé dans le modèle {{Anonyme|xxx}}
' (utilisé dans page de discussion sur les auteurs de "La Nature" : Discussion:La Nature - Revue des sciences/Auteurs)
' (résultat à placer dans page de discussion sur les auteurs, pour copier dans le paramètre "auteur=" de l'ordre de transclusion)
'
' Nom : nom de famille obligatoire, non vide (ex : "Joly")
' Prefixe : résultat de la fonction Prefixe (=Prefixe("N. Joly";" " ==> "N."), obligatoire, vide possible
' Connu : si auteur connu "C", sinon "I" (inconnu) ou "N" (nouveau), obligatoire, non vide
' Prenom : prénom (optionel),(ex : "Nicolas"), optionnel, vide possible
' Titre : titre (optionel),(ex : "Dr"), optionnel, vide possible
'
'Résultat : =TransAuteur("Joly";"N.";"C";"Nicolas";"Dr") ==> "[[Auteur:Nicolas Joly|<nowiki>[[Auteur:Nicolas Joly|{{Dr}} Nicolas Joly]]</nowiki>]]"
'Résultat : =TransAuteur("Barillet";"F.";"I") ==> "{{Anonyme|F. Barillet}}"
'
Dim Libel As String, Nompage As String, Upage As String, Inco As Boolean, vide As Variant
Inco = Not(Connu = "C")
Libel = ""
If Titre <> vide Then
Libel = Libel & "{{" & Titre & "}}" & " "
End If
If Prenom <> vide Then
Libel = Libel & Prenom & " "
ElseIf Prefixe <> vide Then
Libel = Libel & Prefixe & " "
End If
Libel = Libel & Nom
If Inco Then
TransAuteur = NoWiki("{{Anonyme|" & Libel & "}}")
Else
Upage = "[[Auteur:"
If Prenom <> vide Then
Upage =Upage & Prenom & " "
End If
Upage = Upage & Nom & "|"
NomPage = Upage & NoWiki(Upage & Libel & "]]") & "]]"
TransAuteur = Nompage
End If
End Function
Function ListeAuteurs(Id As String) As String
Function ListeAuteurs(Id As String) As String
'
' Lien vers Table auteur (EP) où apparaît le premier article
' (utilisé dans page de discussion sur les auteurs de "La Nature" : Discussion:La Nature - Revue des sciences/Auteurs)
'
' Id : identifiant du volume de première apparition (ex : 1874S1)
'
' Résultat : =ListeAuteurs(1874S1) ==> "[[La Nature - Revue des sciences/1874S1/Liste des Auteurs|1874S1]]"
'
Dim Liste As String, L As Integer
L = Len(Id)
If L > 1 Then
Liste = "[[La Nature - Revue des sciences/" & Id & "/Liste des Auteurs|" & Id & "]]"
Else
Liste = ""
End If
ListeAuteurs = Liste
End Function
Fonction créant une entrée de la Table thématique
modifierFunction TbThem(Typ As String, ByVal TiThem As Variant, ByVal Auteur As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant, Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
Function TbThem(Typ As String, ByVal TiThem As Variant, ByVal Auteur As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant,_
Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
'
' créé une ligne index selon le type d'entrée
'
' Typ : type de l'entrée (Art, GArt, sart, GSaca, GBiblio, biblio, corr) obligatoire
' Auteur : libellé de l'auteur (formaté sc) obligatoire, vide possible ex : "{{sc|Marcel (Gabriel).}}"
' TiThem : libellé de l'entrée obligatoire, vide possible ex : ". — L’ailurope noir et blanc"
' TitSom : libellé dans sommaire obligatoire, non vide ex : "Les Mammifères du Thibet oriental"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(3/4)"
' Groupe : libellé du groupe contenant obligatoire, vide possible ex : "Chronique du 5 juin 1875"
' SuffBrev : Suffixe de l'entrée si homonymie dans l'article obligatoire, vide possible ex : "_3"
' Page : n° de page obligatoire, non vide ex : 170
' Dec : décalage entre n° page et n° djvu obligatoire, non vide ex : 4
' FinListe : fin d'une entrée obligatoire, non vide
'
Dim Libel As String, vide As Variant, Ppli As Integer, Pep As String
If Typ = "them" Then ' Début auteur et alinéa
TbThem = "{{T4|'''" & TiThem & "'''}}"
Exit Function
End If
If TiThem <> vide Then ' Début liste de pages d'un article
Select Case Typ
Case "Art","GArt","GBiblio" ' Article
If Serie <> vide Then ' Article d'une série, lien vers chapeau
Libel = "{{table|indentation=-1|largeurp=40|titre=[[" & UChap(TitSom, Suffart) & "|" & TiThem & "]]"
Else ' Article seul, pas de lien sur le titre
Libel = "{{table|indentation=-1|largeurp=40|titre=" & TiThem
End If
Case "GSaca","chron","saca","biblio","corr","sart" ' lien vers groupe (spécial Gsaca)
Libel = "{{table|indentation=-1|largeurp=40|titre=[[" & UChap(Groupe, Suffart) & "|''" & TiThem & "'']]"
Case Else
Libel = "Sale type"
End Select
If Auteur <> vide Then
Select Case Typ
Case "biblio"
Libel = Libel & " " & Auteur
Case Else
Libel = Libel & " (" & Auteur & ")"
End Select
End If
Libel = Libel & "|page="
Ppli = 2 ' pas de préfixe au premier lien de page
Pep = "" ' idem dans l'EP
Else
Ppli = 1 ' prefixe ", " aux suivants
Pep = ", " ' idem dans l'EP
End If
' Lien espace "Page"
Libel = Libel & NoIncl(Pagepli(Page,Dec,Ppli) ' juste une virgule et un blanc ou rien pour le premier
' Lien espace principal
Select Case Typ
Case "Art","GArt","GSaca","GBiblio" ' Article ayant un URL
Libel = Libel & InclOn(Pep & "[[" & UArt(TitSom,SuffArt,Serie) & "|" & Page & "]]") ' le lien vers EP
Case "chron","saca","biblio","corr","sart" ' Brève n'ayant qu'une ancre
Libel = Libel & InclOn(Pep & "[[" & UBrev(Groupe, SuffArt, Serie, TitSom, SufBrev) & "|" & Page & "]]") ' le lien vers EP
Case Else
End Select
If FinListe Then
Libel = Libel & "}}" ' on ferme l'entrée et le modèle table
End If
TbThem = Libel
End Function
Fonction créant une entrée de la Table Auteurs
modifierFunction TbAut(Typ As String, ByVal Auteur As Variant, ByVal TitAut As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant, Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
Function TbAut(Typ As String, ByVal Auteur As Variant, ByVal TitAut As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant,_
Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
'
' créé une ligne index selon le type d'entrée
'
' Typ : type de l'entrée (Art, GArt, sart, GSaca, GBiblio, biblio, corr) obligatoire
' Auteur : libellé de l'auteur (formaté sc) obligatoire, vide possible ex : "{{sc|Marcel (Gabriel).}}"
' TitTba : libellé de l'entrée obligatoire, vide possible ex : ". — L’ailurope noir et blanc"
' TitSom : libellé dans sommaire obligatoire, non vide ex : "Les Mammifères du Thibet oriental"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(3/4)"
' Groupe : libellé du groupe contenant obligatoire, vide possible ex : "Chronique du 5 juin 1875"
' SuffBrev : Suffixe de l'entrée si homonymie dans l'article obligatoire, vide possible ex : "_3"
' Page : n° de page obligatoire, non vide ex : 170
' Dec : décalage entre n° page et n° djvu obligatoire, non vide ex : 4
' FinListe : fin d'une entrée obligatoire, non vide
'
Dim Libel As String, vide As Variant, Ppli As Integer, Pep As String
If Typ = "Aut" Then ' Début auteur et alinéa
TbAut = "{{a|" & Auteur
Exit Function
End If
If TitAut <> vide Then ' Début liste de pages d'un article
Select Case Typ
Case "Art","GArt","GBiblio" ' Article
If Serie <> vide Then ' Article d'une série, lien vers chapeau
Libel = "[[" & UChap(TitSom, Suffart) & "|" & TitAut & "]]"
Else ' Article seul, pas de lien sur le titre
Libel = TitAut
End If
Case "GSaca","chron","saca","biblio","corr","sart" ' lien vers groupe (spécial Gsaca)
Libel = "[[" & UChap(Groupe, Suffart) & "|" & TitAut & "]]"
Case Else
Libel = "Sale type"
End Select
Ppli = 2 ' pas de préfixe au premier lien de page
Pep = "" ' idem dans l'EP
Else
Ppli = 1 ' prefixe ", " aux suivants
Pep = ", " ' idem dans l'EP
End If
' Lien espace "Page"
Libel = Libel & NoIncl(Pagepli(Page,Dec,Ppli) ' juste une virgule et un blanc
' Lien espace principal
Select Case Typ
Case "Art","GArt","GSaca","GBiblio" ' Article ayant un URL
Libel = Libel & InclOn(Pep & "[[" & UArt(TitSom,SuffArt,Serie) & "|" & Page & "]]") ' le lien vers EP
Case "biblio","corr","sart" ' Brève n'ayant qu'une ancre
Libel = Libel & InclOn(Pep & "[[" & UBrev(Groupe, SuffArt, Serie, TitSom, SufBrev) & "|" & Page & "]]") ' le lien vers EP
Case Else
End Select
If FinListe Then
Libel = Libel & ".}}" ' on ferme l'entrée et l'alinea
End If
TbAut = Libel
End Function
Fonction créant une entrée de l'Index Alphabétique
modifierFunction IdxAlpha(Typ As String, ByVal TitIdx As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant, Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
Function IdxAlpha(Typ As String, ByVal TitIdx As Variant, ByVal TitSom As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant,_
Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Page As Variant, ByVal Dec As Variant, FinListe As Boolean) As String
'
' créé une ligne index selon le type d'entrée
'
' Typ : type de l'entrée (Art, GArt, sart, GChron, chron, GSaca, saca, GBiblio, biblio, Gcorr, corr) obligatoire
' TitIdx : libellé de l'entrée obligatoire, vide possible ex : "Ailurope noir et blanc"
' TitSom : libellé dans sommaire obligatoire, non vide ex : "Les Mammifères du Thibet oriental"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(2/4)"
' Groupe : libellé du groupe contenant obligatoire, vide possible ex : "Chronique du 5 juin 1875"
' SuffBrev : Suffixe de l'entrée si homonymie dans l'article obligatoire, vide possible ex : "_3"
' Page : n° de page obligatoire, non vide ex : 12
' Dec : décalage entre n° page et n° djvu obligatoire, non vide ex : 4
' FinListe : fin d'une entrée obligatoire, non vide
Dim Libel As String, vide As Variant
IF TitIdx <> vide Then ' début d'une entrée, on ouvre un alinéa
Libel = "{{a|"
Select Case Typ
Case "Lettre" ' en-tête d'une section alphabétique
Libel = "{{centré|" & InclOn("[[#top|↑]]{{espaces|4}} ") & "{{MotAncre|"& TitIdx &"}}|lh=3em|fs=120%}}"
Case "Art","GArt" ' Article
If Serie <> vide Then ' Article d'une série, lien vers chapeau
Libel = Libel & "[[" & UChap(TitSom, Suffart) & "|" & TitIdx & "]]"
Else ' Article seul, pas de lien sur le titre
Libel = Libel & TitIdx
End If
Case "GSaca","chron","saca","biblio","corr","sart" ' lien vers groupe
Libel = Libel & "[[" & UChap(Groupe, Suffart) & "|" & TitIdx & "]]"
Case Else
Libel = "Sale type"
End Select
End If
If Page <> vide Then ' pas pour les entrées spéciales (Lettre, err,ref)
Libel = Libel & NoIncl(Pagepli(Page,Dec,1) ' juste une virgule et un blanc
End IF
Select Case Typ
Case "Art","GArt","GChron","GSaca","GBiblio","GCorr" ' Article ayant un URL
Libel = Libel & InclOn(", [[" & UArt(TitSom,SuffArt,Serie) & "|" & Page & "]]") ' le lien vers EP
Case "chron","saca","biblio","corr","sart" ' Brève n'ayant qu'une ancre
Libel = Libel & InclOn(", [[" & UBrev(Groupe, SuffArt, Serie, TitSom, SufBrev) & "|" & Page & "]]") ' le lien vers EP
Case Else
End Select
If FinListe Then
Libel = Libel & ".}}" ' on ferme l'entrée et l'alinea
End If
IdxAlpha = Libel
End Function
Fonctions créant une entrée du Sommaire
modifierFunction Sommaire(Typ As String, Titre As String, ByVal TitreFmt As Variant, ByVal Stitre As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant, Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Domaine As Variant, ByVal Auteur As Variant, Page As Integer, Dec As Integer) As String
Function Sommaire(Typ As String, Titre As String, ByVal TitreFmt As Variant, ByVal Stitre As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant,_
Byval Groupe As Variant, ByVal SufBrev As Variant, ByVal Domaine As Variant, ByVal Auteur As Variant, Page As Integer, Dec As Integer) As String
'
' créé une ligne sommaire selon le type d'entrée
'
' Typ : type de l'entrée (Art, GArt, sart, GChron, chron, GSaca, saca, GBiblio, biblio, Gcorr, corr, num) obligatoire
' Titre : libellé de l'entrée obligatoire, non vide ex : "Le Voyage à grande hauteur du ballon le Zénith"
' TitFmt : libellé de l'entrée avec formats obligatoire, vide possible ex : "Le Voyage à grande hauteur du ballon ''le Zénith''"
' STitre : libellé complémentaire obligatoire, vide possible ex : "Mort de Crocé-Spinelli et de Sivel"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(2/3)"
' Groupe : libellé du groupe contenant obligatoire, vide possible ex : "Chronique du 5 juin 1875"
' SuffBrev : Suffixe de l'entrée si homonymie dans l'article obligatoire, vide possible ex : "_3"
' Domaine : Thème de l'entrée obligatoire, vide possible ex : "Physique du globe"
' Auteur : Signataire de l'entrée obligatoire, vide possible ex : "{{sc|Joseph Bourlot}}" ou
' "[[Auteur:Stanislas Meunier|{{sc|Stanislas Meunier}}]]" ou
' "Anonyme"
' Page : n° de page obligatoire, non vide ex : 12
' Dec : décalage entre n° page et n° djvu obligatoire, non vide ex : 4
Dim Libel As String, vide As Variant
Select Case Typ
Case "num" 'Numéro de la Revue
Libel = NRevue(Titre, Page, Dec)
Case "Art","GArt","GChron","GSaca","GBiblio","GCorr" ' Article ayant un URL
Libel = "* [[" & UArt(Titre,SuffArt,Serie) & "|" & TArt(Titre,TitreFmt,Stitre,SuffArt,Serie) & "]]" ' le lien vers EP
Case "chron","saca","biblio","corr","sart" ' Brève n'ayant qu'une ancre
Libel = "** [[" & UBrev(Groupe, SuffArt, Serie, Titre, SufBrev) & "|" & TBrev( Titre, TitreFmt, Stitre) & "]]" ' le lien vers EP
Case Else
Libel = "Erreur de type d'entrée"
End Select
If Domaine <> vide Then
Libel = Libel & " (" & Domaine & ")" ' le domaine
End If
If Auteur <> vide Then
If Auteur <> "Anonyme" Then
Libel = Libel & " par " & Auteur ' l'auteur
End If
End If
If Typ <> "num" Then ' pour les numéros de la revue, la page est déjà incluse dans le modèle tT4
Libel = Libel & InclOn(PagePli(Page,Dec))
End If
Sommaire = Libel
End Function
'
Function NRevue(Revue As String, Page As Integer, Dec As Integer) As String
Function NRevue(Revue As String, Page As Integer, Dec As Integer) As String
'
' créé la ligne Sommaire pour le N° de la revue
' appelle PagePli et InclOn
'Revue : texte du numéro (ex : "Numéro 79 du 5 décembre 1874")
'Page : n° de page (ex : 1)
'Dec : décalage entre n° page et n° djvu
'Exemple: =Numero("Numéro 79 du 5 décembre 1874",1,4) ==>
' "{{t4|'''Numéro 79 du 5 décembre 1874''' <includeonly>, p. {{pli|1|4}}</includeonly>}}"
Dim Libel As String
Libel = "{{t4|'''" & Revue & "'''" & InclOn(PagePli(Page,Dec)) & "}}"
NRevue = Libel
End Function
Fonctions préparant les Libellés de liens articles et brèves vers l'espace principal
modifierFunction TChap( Titre As String, ByVal TitFmt As Variant, ByVal SuffArt As Variant) As String
Function TChap( Titre As String, ByVal TitFmt As Variant, ByVal SuffArt As Variant) As String
'
' Libellé de la page "Chapeau" d'une série d'articles (on prend les données sur un article de la série)
' utilisé pour les tables par auteurs et thématiques et pour l'index alphabétique
'
' Titre : libellé de l'entrée obligatoire, non vide ex : "Le Voyage à grande hauteur du ballon le Zénith"
' TitFmt : libellé de l'entrée avec formats obligatoire, vide possible ex : "Le Voyage à grande hauteur du ballon ''le Zénith''"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
'
' Résultat : "Le Voyage à grande hauteur du ballon ''le Zénith'' - (La Nature - 1875)" (totalement artificiel)
Dim Libel As String, vide As Variant
If TitFmt <> vide Then
Libel = TitFmt
Else
Libel = Titre
End If
If SuffArt <> vide Then
Libel = Libel & " - " & Suffart
End If
TChap = Libel
End Function
Function TArt( Titre As String, ByVal TitFmt As Variant, ByVal Stitre As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant) As String
Function TArt( Titre As String, ByVal TitFmt As Variant, ByVal Stitre As Variant, ByVal SuffArt As Variant, ByVal Serie As Variant) As String
'
' Libellé du lien vers une entrée de type Art, GArt, GChron, GSaca, GCorr (Articles et groupe de brèves)
' utilisé dans les quatre tables, le type GChron n'apparait que dans le sommaire
'
' Titre : libellé de l'entrée obligatoire, non vide ex : "Le Voyage à grande hauteur du ballon le Zénith"
' TitFmt : libellé de l'entrée avec formats obligatoire, vide possible ex : "Le Voyage à grande hauteur du ballon ''le Zénith''"
' STitre : libellé complémentaire obligatoire, vide possible ex : "Mort de Crocé-Spinelli et de Sivel"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(2/3)"
'
' Résultat : "Le Voyage à grande hauteur du ballon ''le Zénith''. Mort de Crocé-Spinelli et de Sivel - (La Nature - 1875) (2/3)" (totalement artificiel)
'
Dim Libel As String, vide As Variant
If TitFmt <> vide Then
Libel = TitFmt
Else
Libel = Titre
End If
If Stitre <> vide Then
Libel = Libel & TStit(Stitre)
End If
If SuffArt <> vide Then
Libel = Libel & " - " & Suffart
End If
If Serie <> vide Then
Libel = Libel & " " & Serie
End If
TArt = Libel
End Function
Function TBrev( Titre As String, ByVal TitFmt As Variant, ByVal Stitre As Variant) As String
Function TBrev( Titre As String, ByVal TitFmt As Variant, ByVal Stitre As Variant) As String
'
' Libellé du lien vers une entrée de type sart, chron, saca, corr (brèves et sous-articles)
' Le titre est mis en italique, sauf si TitFmt est non vide, alors on prend ce titre tel-quel, le sous-titre est inséré tel-quel
' utilisé dans le sommaire, la table thématique et l'index alphabétique (pas de brèves dans la table des auteurs)
'
' Titre : libellé de l'entrée obligatoire, non vide ex : "Sur la catastrophe du Zénith"
' STitre : libellé complémentaire obligatoire, vide possible ex : "par {{sc|L. Godefroy}}"
' TitFmt : libellé de l'entrée avec formats obligatoire, vide possible ex : "''Sur la catastrophe du'' Zénith"
'
' Résultat : "''Sur la catastrophe du'' Zénith par {{sc|L. Godefroy}}"
'
Dim Libel As String, vide As Variant
If TitFmt <> vide Then
Libel = TitFmt
Else
Libel = Titre
End If
If Stitre <> vide Then
Libel = Libel & TStit(Stitre)
End If
TBrev = Libel
End Function
Function TStit( Stitre As Variant) As String
Function TStit( Stitre As Variant) As String
'
' Place un séparateur avant le sous titre selon sa première lettre
' utilisé dans TArt et TBrev
'
' STitre : libellé complémentaire obligatoire, non vide ex : "— Le Jacquard électrique de sir Ch. Wheatstone"
'
' Résultat : ". — Le Jacquard électrique de sir Ch. Wheatstone"
'
Dim st1 As String, sep As String
st1 = Mid(Stitre,1,1)
Select Case st1 ' comment commence le sous titre ?
Case "," ' une virgule alors rien
sep =""
Case "—" ' un tiret alors ". "
sep = ". "
Case "(", "{" 'parenthèse ou accolade alors un blanc
sep = " "
' (testé la majuscule en dernier car Ucase ne change que les lettres)
Case Ucase(st1) ' Majuscule alors ". "
sep = ". "
Case Else ' une minuscule ou autre chose alors un blanc
sep = " "
End Select
TStit = sep & Stitre
End Function
Fonctions préparant les URL des articles et brèves dans l'espace principal
modifierFunction UChap( Titre As String, ByVal SuffArt As Variant) As String
Function UChap( Titre As String, ByVal SuffArt As Variant) As String
'
' URL d'une page pour un chapeau de série d'articles
' utilisé pour les tables par auteurs et thématiques et pour l'index alphabétique
'
' Titre : libellé de l'entrée (sans formats) obligatoire, non vide ex : "Les Mammifères du Thibet oriental"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
'
' Résultat : "Les Mammifères du Thibet oriental - (La Nature - 1875)"
'
Dim Libel As String, vide As Variant
Libel = Titre
If SuffArt <> vide Then
Libel = Libel & " - " & Suffart
End If
UChap = Libel
End Function
Function UArt( Titre As String, ByVal SuffArt As Variant, ByVal Serie As Variant) As String
Function UArt( Titre As String, ByVal SuffArt As Variant, ByVal Serie As Variant) As String
'
' URL d'une page pour une entrée Art, GArt, GChron, GSaca, GCorr (Articles et groupe de brèves)
' utilisé dans les quatre tables, le type GChron n'apparait que dans le sommaire
'
' appelle NChap, lui ajoute le numéro de sous-page si la série est non vide
'
' Titre : libellé de l'entrée (sans formats) obligatoire, non vide ex : "Les Mammifères du Thibet oriental"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si l'article fait partie d'une série obligatoire, vide possible ex : "(2/3)"
'
' Résultat : "Les Mammifères du Thibet oriental - (La Nature - 1875)/2"
'
Dim Libel As String, vide As Variant
Libel = UChap(Titre,SuffArt)
If Serie <> vide Then
Libel = Libel & "/" & Mid(Serie,2,1)
End If
UArt = Libel
End Function
Function UBrev( Groupe As String, ByVal SuffArt As Variant, ByVal Serie As Variant, Titre As String, ByVal SufBrev As Variant) As String
Function UBrev( Groupe As String, ByVal SuffArt As Variant, ByVal Serie As Variant, Titre As String, ByVal SufBrev As Variant) As String
'
' URL d'une ancre pour une entrée sart, chron, saca, corr (brèves et sous-articles)
' utilisé dans le sommaire, la table thématique et l'index alphabétique (pas de brèves dans la table des auteurs)
'
' appelle NArt, lui ajoute l'ancre de la brève avec son éventuel suffixe
' Groupe : libellé du groupe contenant (sans formats) obligatoire, non vide ex : "Chronique du 5 juin 1875"
' SuffArt : Suffixe si homonymie dans l'EP obligatoire, vide possible ex : "(La Nature - 1875)"
' Serie : si le groupe fait partie d'une série obligatoire, vide possible ex : "(2/3)"
' Titre : libellé de l'entrée (sans formats) obligatoire, non vide ex : "L’Aiguille de Cléopâtre à Londres"
' SuffBrev : Suffixe de l'entrée si homonymie dans l'article obligatoire, vide possible ex : "_3"
'
' Résultat : "Chronique du 5 juin 1875 - (La Nature - 1875)/2#L’Aiguille de Cléopâtre à Londres_3" (totalement artificiel)
'
Dim Libel As String, vide As Variant
Libel = UArt(Groupe, Suffart, Serie) & "#" & Titre
If SufBrev <> vide Then
Libel = Libel & SufBrev
End If
UBrev = Libel
End Function
Fonctions préparant les URL des auteurs dans l'espace principal
modifierFunction LienTbAut(Nom As String, NomTbl As String, Connu As String, Prenom As Variant) As String
Function LienTbAut(Nom As String, NomTbl As String, Connu As String, Prenom As Variant) As String
'
' Si auteur connu, retourne le lien vers la page Auteur, sinon retourne un libellé formaté par {{sc|xxx}}
' résultat à placer dans la Table des Auteurs
'
'Nom : nom de famille (ex : "Joly")
'NomTbl : libellé du nom figurant dans la table (ex ; "Joly ({{Dr}} N.).")
'Connu : si auteur connu "C", sinon "I" (inconnu) ou "N" (nouveau)
'Prenom : prénom (ex : "Nicolas")
'
' Résultat : =LienTbAut("Joly";"Joly ({{Dr}} N.).";"C";"Nicolas") ==> "[[Auteur:Nicolas Joly|{{sc|Joly ({{Dr}} N.).}}]]"
' Résultat : =LienTbAut("Benoît";"Benoit (Jules).";"I";"Jules") ==> "{{sc|Benoit (Jules).}}"
'
Dim Libel As String, Nompage As String, Nomsc As String, Inco As Boolean, vide As Variant
Nomsc = "{{sc|" & NomTbl & "}}"
Inco = Not(Connu = "C")
If Inco Then
Libel = Nomsc
Else
Libel = "[[Auteur:"
If Prenom <> vide Then
Libel = Libel & Prenom & " "
End If
Libel = Libel & Nom & "|" & Nomsc & "]]"
End If
LienTbAut = Libel
End Function
Function Nfamille(Texte As String, Optional Sep As String) As String
Function Nfamille(Texte As String, Optional Sep As String) As String
'
' extrait du texte origine (sans le titre) la dernière partie comme nom de famille
'
' Texte : texte d'origine (ex : "Dr N. Joly")
' Sep : séparateur (blanc par défaut)
'
' Résultat : =Nfamille("Dr N. Joly";" ") ==> "Joly"
'
Dim Mat(1 to 10) As String, I As Integer, Nom1 As String
If IsMissing(Sep) Then Sep = " " 'par défaut
Mat() = Split(Trim(Texte), Sep, 10) 'découpons le salami en 10 tranches maximum
I = UBound(Mat) 'on commence par la dernière tranche
Nfamille = "" 'initialisation résultat
Do
If Not(Len(Mat(I))=0) Then
Nfamille = Mat(I) 'on a trouvé
Exit Do
End If
I = I-1 'on remonte d'un cran
Loop Until I=-1
End Function
Function Prefixe(Texte As String, Optional Sep As String) As String
Function Prefixe(Texte As String, Optional Sep As String) As String
'
' extrait du texte origine (sans le titre) la première partie comme préfixe au nom de famille (appelle Nfamille)
'
' Texte : texte d'origine (ex : "N. Joly")
' Sep : séparateur (blanc par défaut)
'
' Résultat : =Prefixe("N. Joly";" ") ==> "N."
'
Dim Pre As Variant, L As Integer
Texte = Trim(Texte) 'on enlève les blancs en trop
If IsMissing(Sep) Then Sep = " " 'par défaut
L = Len(Texte) - Len(Nfamille(Texte,Sep) '
If L > 0 Then
Pre = Left(Texte,L-1)
End If
Prefixe=Pre
End Function
Function PrenomNom(Nom As String, Prenom As Variant) As String
Function PrenomNom(Nom As String, Prenom As Variant) As String
'
' retourne le prénom et le nom de famille séparés par un blanc pour l'URL de la page Auteur
'
' Nom : nom de famille (ex : "Joly")
' Prenom : prénom (ex : "Nicolas")
'
' Résultat : =PrenomNom("Joly";"Nicolas") ==> "Nicolas Joly"
'
Dim Libel As String, vide as Variant
If Prenom <> vide Then
Libel = Prenom & " "
End If
Libel = Libel & Nom
PrenomNom = Libel
End Function
Function FTitPrenNom(Titre As Variant, Prenom As Variant, Nom As String) As String
Function FTitPrenNom(Titre As Variant, Prenom As Variant, Nom As String) As String
'
' retourne le titre formaté, le prénom et le nom de famille séparés par un blanc
' appelle PrenomNom
' pour le libellé du lien Auteur dans le Sommaire
'
' Titre : Le titre (en général "Dr", sinon "—")
' Prenom : prénom (ex : "Nicolas")
' Nom : nom de famille (ex : "Joly")
'
' Résultat : =FTitPrenNom("Dr";"Nicolas";"Joly") ==> "{{Dr}} Nicolas Joly"
'
Dim Libel As String, vide As Variant
If Titre <> vide Then
Libel =Titre & " "
End If
Libel = Libel & PrenomNom(Nom,Prenom)
FTitPrenNom = Libel
End Function
Fonctions utilitaires
modifierFunction InclOn( Texte As String) As String
Function InclOn( Texte As String) As String
'
' place des <includeonly> autour de "Texte", seulement si non vide
'
' Texte : texte à placer en <includeonly>
'
' Exemple : =IncOnly(PagePli(10,4)) ==> "<includeonly>,p. {{pli|10|4}}</includeonly>"
'
Dim Libel As String
If Len(Texte) > 0 Then
Libel = "<includeonly>" & Texte & "</includeonly>"
End If
InclOn = Libel
End Function
Function NoIncl( Texte As String) As String
Function NoIncl( Texte As String) As String
'
' place des <noinclude> autour de "Texte", seulement si non vide
'
' Texte : texte à placer en <noinclude>
'
' Exemple : =NoIncl(PagePli(10,4)) ==> "<noinclude>,p. {{pli|10|4}}</noinclude>"
'
Dim Libel As String
If Len(Texte) > 0 Then
Libel = "<noinclude>" & Texte & "</noinclude>"
End If
NoIncl = Libel
End Function
Function NoWiki( Texte As String) As String
Function NoWiki( Texte As String) As String
'
' place des <nowiki> autour de "Texte" (contenant du code wiki), seulement si non vide
'
' Texte : texte à placer en <nowiki> pour ne pas l'interpréter
'
' Exemple : =NoWiki(PagePli(10,4)) ==> "<nowiki>,p. {{pli|10|4}}</nowiki>"
'
Dim Libel As String
If Len(Texte) > 0 Then
Libel = "<nowiki>" & Texte & "</nowiki>"
End If
NoWiki = Libel
End Function
Function PagePli( Page As Integer, Dec As Integer, optional NoPref As Variant) As String
Function PagePli( Page As Integer, Dec As Integer, optional NoPref As Variant) As String
'
' créé le modèle {{pli}} pour la page, avec le décalage indiqué et le préfixe ", p."
'
' Page : n° de page (ex : 12)
' Dec : décalage entre n° page et n° djvu (ex: 4)
' NoPref : optionnel, si 1 : ne pas mettre "p. " en préfixe de pli, si 2 : ne pas mettre non plus la virgule et le blanc devant
'
' Exemple : =PagePli(10,4) ==> ",p. {{pli|10|4}}"
'
Dim Libel As String, vide As Variant
If IsMissing(Nopref) Then
Libel = ", p. "
ElseIf Nopref = 1 Then
Libel = ", "
ElseIf Nopref = 2 Then
End If
Libel = Libel & "{{pli|" & Page & "|" & Dec & "}}"
PagePli = Libel
End Function
Function Viaf(Id As String) As String
Function Viaf(Id As String) As String
'
'lien VIAF à partir de l'identifiant VIAF
'
'Id : identifiant VIAF (s'il est précédé de "?-", ces deux caractères sont placés avant le lien)
'
If Len(Id) > 1 Then
If Left(Id,2) = "?-" Then
Viaf = "?-{{VIAF|" & Mid(Id,3) & "}}"
Else
Viaf = "{{VIAF|" & Id & "}}"
End If
Else
Viaf = ""
End If
End Function
Function Wd(Id As String) As String
Function Wd(Id As String) As String
'
' Lien vers Wikidata à partir de l'identifiant wikidata (s'il est précédé de "?-", ces deux caractères sont placés avant le lien)
'
' Id : identifiant Wikidata
If Len(Id) > 1 Then
If Left(Id,2) = "?-" Then
Wd = "?-[[d:" & Mid(Id,3) & "|" & Mid(Id,3) & "]]"
Else
Wd = "[[d:" & Id & "|" & Id & "]]"
End If
Else
Wd = ""
End If
End Function
Fonction
modifierFunction
''''''''''''''''''