REM ***** BASIC ***** '************************************************************************ '* Copyright 2021 by Bastien Dumont (bastien.dumont@posteo.net) '* '* This file is part of the ApresZotero library. '* '* ApresZotero is free software: you can redistribute it and/or modify '* it under the terms of the GNU General Public License as published by '* the Free Software Foundation, either version 3 of the License, or '* (at your option) any later version. '* '* ApresZotero is distributed in the hope that it will be useful, '* but WITHOUT ANY WARRANTY; without even the implied warranty of '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the '* GNU General Public License for more details. '* '* You should have received a copy of the GNU General Public License '* along with ApresZotero. If not, see <https://www.gnu.org/licenses/>. '* '************************************************************************ Option Compatible Option Explicit Function Check (mJournal As String) As Integer Dim iReturnCode As Long iReturnCode = MsgBox("Avez-vous terminé de modifier le document et actualisé les citations Zotéro ?", 4, mJournal) If iReturnCode = 7 Then MsgBox("Veuillez terminer votre travail sur le document et actualiser les citations avant de lancer la macro.", 0, mJournal) End If Check = iReturnCode End Function Sub Abbreviate (oDocument As Object, mTitreLong() As Variant, mAbrev() As Variant, mEditeur As String, bExpandFirstCitation As Boolean) REM Cette subroutine devrait devenir obsolète si les pistes envisagées dans le fil et la page ci-dessous se concrétisent : REM https://forums.zotero.org/discussion/comment/325925#Comment_325925 REM https://www.zotero.org/support/kb/journal_abbreviations Dim oSearch As Object Dim sCited As String Dim oCursor As Object Dim n As Integer Dim oOccurrence As Object Dim bAlreadyAbbreviated As Boolean Dim iReturnCode As Integer Dim vCharPosture As Variant On Error Goto ErrorHandler 'Si l'utilisateur a tenté de lancer cette sous-routine, oDocument n'est pas défini. oSearch = oDocument.createSearchDescriptor() oSearch.SearchWords = TRUE oSearch.SearchRegularExpression = FALSE oSearch.SearchCaseSensitive = FALSE On Error GoTo 0 oCursor = oDocument.getCurrentController.getViewCursor() For n = lbound(mTitreLong) To ubound(mTitreLong) oSearch.SearchString = mTitreLong(n) oOccurrence = oDocument.findFirst(oSearch) bAlreadyAbbreviated = FALSE Do While Not IsNull(oOccurrence) oCursor.gotoRange(oOccurrence, False) iReturnCode = MsgBox("Remplacer le texte sélectionné par l'abréviation correspondante ?", 3, mEditeur) If iReturnCode = 2 Then 'Cancel MsgBox("Vous avez arrêté l'exécution de la macro, mais les éventuels titres de revues déjà remplacés n'ont pas été restaurés.", 0, mEditeur) Exit Sub ElseIf iReturnCode = 6 Then 'Yes vCharPosture = oCursor.CharPosture If bExpandFirstCitation AND bAlreadyAbbreviated = FALSE Then oCursor.collapseToEnd() oCursor.setString(" (" & mAbrev(n) & ")") oCursor.CharPosture = vCharPosture bAlreadyAbbreviated = TRUE Else oCursor.setString(mAbrev(n)) oCursor.CharPosture = vCharPosture End If ElseIf iReturnCode = 7 Then 'No End If oOccurrence = oDocument.findNext(oOccurrence.End, oSearch) Loop Next n Exit Sub ErrorHandler: If Err = 449 Then MsgBox("La macro Abbreviate n'est pas destinée à être lancée directement par l'utilisateur. "&_ "Veuillez lancer la macro correspondant au nom de la revue souhaité.", 0, "Erreur") Else MsgBox(Error$, 0, "Erreur") End If On Error Goto 0 End Sub Sub SetStringPartToExponent(oScope As Object, sWholeStringRegex As String, sSubstringInExponentRegex As String) Dim oViewProperties As Object Dim nCurrentZoomFactor As Integer Dim oWholeStringSearch As Object Dim oWholeStringResult As Object Dim oFound As Object Dim iResult As Integer Dim oFoundCursor As Object Dim iReturnCode As Integer oViewProperties = ThisComponent.getViewData().getByIndex(0) nCurrentZoomFactor = getCurrentZoomFactor() ThisComponent.CurrentController.ViewSettings.ZoomType = 3 ThisComponent.CurrentController.ViewSettings.ZoomValue = nBigZoomFactor oWholeStringSearch = ThisComponent.createSearchDescriptor oWholeStringSearch.SearchString = sWholeStringRegex oWholeStringSearch.SearchRegularExpression = TRUE oWholeStringResult = oScope.findAll(oWholeStringSearch) oFoundCursor = ThisComponent.getCurrentController.getViewCursor() For iResult = 0 To oWholeStringResult.count - 1 oFound = oWholeStringResult.getByIndex(iResult) oFoundCursor.gotoRange(oFound, False) PlaceCursorOnSubstring(oFoundCursor, sSubstringInExponentRegex) iReturnCode = MsgBox("Mettre le texte surligné en exposant ?", 3) If iReturnCode = 2 Then 'Cancel MsgBox("Vous avez arrêté l'exécution de la macro, mais les actions déjà réalisées n'ont pas été annulées.", 0) ThisComponent.CurrentController.ViewSettings.ZoomValue = nCurrentZoomFactor Exit Sub ElseIf iReturnCode = 6 Then 'Yes oFoundCursor.CharEscapement = nExponentCharSizePercentage oFoundCursor.CharEscapementHeight = nExponentCharHeightPercentage ElseIf iReturnCode = 7 Then 'No End If Next iResult ThisComponent.CurrentController.ViewSettings.ZoomValue = nCurrentZoomFactor End Sub Function getCurrentZoomFactor() As Integer Dim oDocument As Object Dim oViewProperties As Object Dim iProperty As Integer oViewProperties = ThisComponent.getViewData().getByIndex(0) For iProperty = 0 to UBound(oViewProperties) If oViewProperties(iProperty).Name = "ZoomFactor" Then getCurrentZoomFactor = oViewProperties(iProperty).Value End If Next iProperty End Function Sub PlaceCursorOnSubstring(oCursor As Object, sSubstringRegex As String) Dim oSubstringSearch As Object Dim oResult As Object oSubstringSearch = ThisComponent.createSearchDescriptor() oSubstringSearch.SearchString = sSubstringRegex oSubstringSearch.SearchRegularExpression = TRUE oResult = ThisComponent.findNext(oCursor.getStart(), oSubstringSearch) oCursor.gotoRange(oResult, FALSE) End Sub Function extractMatchingString(sSearchedString As String, aSearchResult As Object, iMatch As Integer, nCharsToIgnore As Integer) As String Dim iMatchStartPos As Integer Dim nMatchLen As Integer iMatchStartPos = aSearchResult.startOffset(iMatch) + 1 nMatchLen = aSearchResult.endOffset(iMatch) - aSearchResult.startOffset(iMatch) extractMatchingString = Mid(sSearchedString, iMatchStartPos+nCharsToIgnore, nMatchLen-nCharsToIgnore) End Function Sub AddItemToMap(vMap() As Variant, sID As String, sTitle As String) Dim iItem As Integer For iItem = LBound(vMap(), 1) To UBound(vMap(), 1) If vMap(iItem, 0) = sID Then vMap(iItem, 2) = vMap(iItem, 2)+1 Exit Sub End If Next iItem vMap(UBound(vMap(), 1), 0) = sID vMap(UBound(vMap(), 1), 1) = sTitle vMap(UBound(vMap(), 1), 2) = 1 ReDim Preserve vMap(UBound(vMap(), 1)+1, 3) As Variant End Sub Function sortMapByNbOccurrences(ByVal vMap() As Variant) Dim vSortedMap(UBound(vMap(), 1), 3) As Variant Dim iSortedMap As Integer Dim nMaxOccurrences As Integer Dim iNbOccurrences As Integer Dim iMap As Integer nMaxOccurrences = getMaxOccurrences(vMap) iSortedMap = 0 For iNbOccurrences = nMaxOccurrences To 1 Step -1 For iMap = LBound(vMap(), 1) To UBound(vMap(), 1) If vMap(iMap, 2) = iNbOccurrences Then vSortedMap(iSortedMap, 0) = vMap(iMap, 0) vSortedMap(iSortedMap, 1) = vMap(iMap, 1) vSortedMap(iSortedMap, 2) = iNbOccurrences iSortedMap = iSortedMap+1 End If Next iMap Next iNbOccurrences sortMapByNbOccurrences = vSortedMap End Function Function getMaxOccurrences(vMap As Variant) Dim nCurrentOccurrences As Integer Dim iMap As Integer For iMap = LBound(vMap(), 1) To UBound(vMap(), 1) If vMap(iMap, 2) > nCurrentOccurrences Then nCurrentOccurrences = vMap(iMap, 2) End If Next iMap getMaxOccurrences = nCurrentOccurrences End Function Sub PrintMap(vMap() As Variant) Dim oDocumentText As Object Dim iMap As Integer Dim sStringToInsert As String oDocumentText = ThisComponent.Text oDocumentText.insertString(oDocumentText.End, CHR$(10) & CHR$(10) & CHR$(10), False) For iMap = LBound(vMap(), 1) To UBound(vMap(), 1)-1 sStringToInsert = vMap(iMap, 2) & " {""" & vMap(iMap, 1) & CHR$(10) & CHR$(10) oDocumentText.insertString(oDocumentText.End, sStringToInsert, False) Next iMap End Sub Sub HandleItemsInBibliography'(sBibliographyHeaderStyle As String) Dim iReturnCode As Integer Dim oBibliographyCursor As Object Dim sAbbrevsAndExtendedList() As String Const sBibliographyHeaderStyle As String = "Titre Liste des abréviations" iReturnCode = MsgBox("Avez-vous créé une liste d'abréviations ?" &_ " Si oui, la première mention de chaque item dans la bibliographie sera abrégée.",_ 4, "Traitement des items de la bibliographie") If iReturnCode = 7 Then Exit Sub End If oBibliographyCursor= getBibliographyCursor(sBibliographyHeaderStyle) sAbbrevsAndExtendedList() = createAbbrevsAndExtendedReferencesList(oBibliographyCursor) SuppressFirstCitationReferenceForItemsInAbbrevList(sAbbrevsAndExtendedList) MsgBox("Le traitement est terminé. Il vous reste à abréger manuellement la première référence de chaque item cité dans la bibliographie.") End Sub Function createAbbrevsAndExtendedReferencesList(oBibliographyCursor As Object) Dim oFirstNoteText As Object Dim sAbbrevsAndExtendedList() As String Dim oTextCursorToStore As Object Dim oNextParagraph As Object Dim sAbbrev As String Dim sExtendedReference As String oBibliographyCursor.gotoNextParagraph(False) oBibliographyCursor.gotoPreviousParagraph(False) Do oBibliographyCursor.collapseToStart() Do While InStr(oBibliographyCursor.getString(), sSeparatorForListOfAbbreviations) = 0 oBibliographyCursor.goRight(1, True) Loop oBibliographyCursor.goLeft(1, True) sAbbrev = oBibliographyCursor.getString() AddToList(sAbbrev, sAbbrevsAndExtendedList) ReplaceSeparator(oBibliographyCursor) oBibliographyCursor.gotoEndOfParagraph(True) sExtendedReference = oBibliographyCursor.getString() AddToList(sExtendedReference, sAbbrevsAndExtendedList) oBibliographyCursor.gotoNextParagraph(False) oBibliographyCursor.gotoEndOfParagraph(True) Loop While oBibliographyCursor.ParaStyleName = sBibliographyStyleName _ AND InStr(oBibliographyCursor.getString(), sSeparatorForListOfAbbreviations) > 0 createAbbrevsAndExtendedReferencesList = sAbbrevsAndExtendedList End Function Sub ReplaceSeparator(oCursor As Object) oCursor.collapseToEnd() oCursor.goRight(1, True) oCursor.setString(sReplacementSeparatorForListOfAbbreviations) oCursor.CharPosture = "com.sun.star.awt.FontSlant.NONE" oCursor.collapseToEnd() End Sub Sub AddToList(sString As String, sList() As String) ReDim Preserve sList(UBound(sList)+1) sList(UBound(sList)) = sString End Sub Sub SuppressFirstCitationReferenceForItemsInAbbrevList(sAbbrevsAndExtendedList As String) Dim oDocument As Object Dim oCitRefSearch As Object Dim nReferences As Integer Dim iAbbrev As Integer Dim sAbbrevString As String Dim oCitRefResult As Object Dim oCitRefFoundCursor As Object Dim oCitRefFound As Object Dim iResult As Integer oDocument = ThisComponent oCitRefSearch = oDocument.createSearchDescriptor() For iAbbrev = LBound(sAbbrevsAndExtendedList) To UBound(sAbbrevsAndExtendedList)-1 Step 2 sAbbrevString = sAbbrevsAndExtendedList(iAbbrev) oCitRefSearch.SearchString = sAbbrevString & sFirstCitationPrefix & "[0-9]+" oCitRefSearch.SearchRegularExpression = TRUE oCitRefResult = oDocument.findAll(oCitRefSearch) oCitRefFoundCursor = ThisComponent.getCurrentController.getViewCursor() For iResult = 0 To oCitRefResult.count - 1 oCitRefFound = oCitRefResult.getByIndex(iResult) oCitRefFoundCursor.gotoRange(oCitRefFound, False) oCitRefFoundCursor.goRight(Len(sAbbrevString), True) oCitRefFoundCursor.setString("") Next iResult Next iAbbrev End Sub Sub AbbreviateFirstOccurrences(oAbbrevAndReferencesList As Object) Dim oDocument As Object Dim oFootnotes As Object Dim iExpandedReference As Integer Dim oExpandedRefSearch As Object Dim oFirstOccurrence As Object Dim oCopyPasteCursor As Object Dim oFrame As Object Dim oDispatcher As Object oDocument = ThisComponent oCopyPasteCursor = oDocument.currentController.getViewCursor() oFrame = oDocument.CurrentController.Frame oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper") oExpandedRefSearch = oDocument.createSearchDescriptor() For iExpandedReference = 1 To UBound(oAbbrevAndReferencesList) Step 2 oExpandedRefSearch.SearchString = oAbbrevAndReferencesList(iExpandedReference).getString() oExpandedRefSearch.SearchRegularExpression = FALSE oFirstOccurrence = oDocument.findFirst(oExpandedRefSearch) oFirstOccurrence.setString("") oCopyPasteCursor.gotoRange(oAbbrevAndReferencesList(iExpandedReference)-1, False) oDispatcher.executeDispatch(oFrame, ".uno:Copy", "", 0, Array()) oCopyPasteCursor.gotoRange(oFirstOccurrence, False) oCopyPasteCursor.CharCaseMap = 0 oCopyPasteCursor.CharPosture = "com.sun.star.awt.FontSlant.NONE" oCopyPasteCursor.ParaStyleName = "Style par défaut" oDispatcher.executeDispatch(oFrame, ".uno:Paste", "", 0, Array()) Next iExpandedReference End Sub Sub AbbrevAnnee_Philologique(bExpandFirstCitation as Boolean) Const mJournal As String = "Année Philologique" Dim mTitreLong() As String mTitreLong = Array("Antike und Abendland", "Antigüedad y cristianismo", "Atene e Roma", "Archäologischer Anzeiger / Deutsches Archäologisches Institut", "Acta ad archaeologiam et artium historiam pertinentia. Series altera in 8o;", "Annuaire / Amis de la Bibliothèque humaniste de Sélestat", "Anales de arqueología cordobesa", "Annuario / Accademia Etrusca di Cortona", "Anzeiger für die Altertumswissenschaft", "Atti della Accademia Ligure di Scienze e Lettere", "Atti della Accademia di Scienze Morali e Politiche della Società Nazionale di Scienze, Lettere ed Arti di Napoli", "Acta antiqua Academiae Scientiarum Hungaricae", "Atti della Accademia Pontaniana", "Atti della Accademia di Scienze, Lettere e Arti di Palermo. 2, Lettere", "Atti e memorie dell'Accademia Patavina di Scienze, Lettere ed Arti. 3, Memorie della Classe di Scienze Morali, Lettere ed Arti", "Atti della Accademia Peloritana dei Pericolanti, Classe di Lettere, Filosofia e Belle Arti", "Acta archaeologica", "Acta archaeologica Academiae Scientiarum Hungaricae", "Arheološki vestnik", "Annales archéologiques arabes syriennes", "Atti della Accademia Roveretana degli Agiati, Classe di Scienze umane, Classe di Lettere ed Arti", "Jahrbuch Archäologie Schweiz", "Annuaire d'Archéologie Suisse", "The Annual of the American Schools of Oriental Research", "Atti della Accademia delle Scienze di Torino. 2, Classe di Scienze Morali, Storiche e Filologiche", "Atti e memorie dell'Accademia Toscana La Colombaria", "Anzeiger der philosophisch-historischen Klasse / Österreichische Akademie der Wissenschaften Wien", "Analecta Bollandiana", "Archiv für Begriffsgeschichte", "Annales de Bretagne et des Pays de l'Ouest", "The Annual of the British School at Athens", "The Art Bulletin", "Abhandlungen der Braunschweigischen Wissenschaftlichen Gesellschaft", "L'Antiquité classique", "Acta classica Universitatis Scientiarum Debreceniensis", "Annuaire du Collège de France", "Acta classica", "Acme", "Acta Hyperborea", "Ἀρχαιολογικὸν Δελτίον. Μελέτες", "Adamantius", "Annali del Dipartimento di Filosofia, Università di Firenze", "Archivo español de arqueología", "Aegyptus", "Αρχείον οικονομικής ιστορίας", "Archives of economic history", "Ἀρχαιολογικὴ ἐφημερίς", "Archaeologiai értesítő", "Aestimatio", "Aevum", "Aevum antiquum", "Anuari de filologia. Secció D, Studia Graeca et Latina", "Anales de filología clásica", "Annali della Facoltà di Giurisprudenza di Genova", "Anuario filósofico", "Annali della Facoltà di Lettere e Filosofia, Università degli Studi di Bari", "Annali della Facoltà di Lettere e Filosofia dell'Università di Cagliari", "Annales de la Faculté des lettres et sciences humaines, Université Cheikh Anta Diop de Dakar", "Annali della Facoltà di Lettere e Filosofia, Università di Macerata", "Annali della Facoltà di Lettere e Filosofia dell'Università di Napoli", "Annali della Facoltà di Lettere e Filosofia di Perugia. 1, Studi classici", "Annali della Facoltà di Lettere e Filosofia di Perugia. 4, Studi filosofici", "Annali della Facoltà di Lettere e Filosofia di Perugia. 3, Studi linguistici e letterari", "Annali della Facoltà di Lettere e Filosofia di Perugia. 2, Studi storico-antropologici", "Annali della Facoltà di Lettere e Filosofia, Università di Siena", "Annali della Facoltà di Magistero dell'Università di Cagliari", "Africa", "Annali della Facoltà di Scienze della Formazione dell'Università di Cagliari", "Archivio glottologico italiano", "Annuario del Ginnasio Liceo A. Volta di Como", "Archiv für Geschichte der Philosophie", "Ancient History", "Anales de historia antigua y medieval", "Annales d'histoire et d'archéologie / Université Saint-Joseph, Faculté des lettres et des sciences humaines", "The Ancient history Bulletin", "Revue d'histoire ancienne", "Annuarium historiae conciliorum", "Anuario de historia del derecho español", "Archive for history of exact sciences", "Anuario de historia de la Iglesia", "Acta historica Academiae Scientiarum Hungaricae", "Archives d'histoire doctrinale et littéraire du Moyen Âge", "The American Historical Review", "Archives internationales d'histoire des sciences", "Annali dell'Istituto Italiano di Numismatica", "Annali dell'Istituto Italiano per gli Studi Storici", "Annali di archeologia e storia antica", "Annali dell'Istituto Universitario Orientale di Napoli, Dipartimento di Studi del Mondo classico e del Mediterraneo antico. Sezione filologico-letteraria", "Annali dell'Istituto Universitario Orientale di Napoli, Dipartimento di Studi del mondo classico e del Mediterraneo antico. Sezione linguistica. ", "Annales de l'Institut de philosophie de l'Université de Bruxelles", "Annuaire de l'Institut de Philologie et d'Histoire Orientales et Slaves / Université Libre de Bruxelles", "Atti / Istituto Veneto di Scienze, Lettere ed Arti, Classe di Scienze Morali, Lettere ed Arti", "The Archaeological Journal", "American Journal of Archaeology", "American Journal of Ancient history", "American Journal of Numismatics", "American Journal of Philology", "Antike Kunst", "Archäologisches Korrespondenzblatt", "Archäologie im Kanton Bern", "Archéologie dans le canton de Berne", "Archiv für Kulturgeschichte", "Akroterion", "Alba Regia", "Alfinge", "Annali del Liceo classico G. Garibaldi di Palermo", "Archivum Latinitatis Medii Aevi", "Das Altertum", "Analecta Malacitana", "Atti e memorie / Accademia Nazionale di Scienze, Lettere e Arti di Modena. Atti", "Atti e memorie / Accademia Nazionale di Scienze, Lettere e Arti di Modena. Memorie scientifiche, giuridiche, letterarie", "Atti e memorie della Accademia Petrarca di Lettere, Arti e Scienze", "Atti e memorie / Arcadia", "Atti e memorie della Accademia di Agricoltura, Scienze e Lettere di Verona", "Ambix", "Atti e memorie della Società Istriana di Archeologia e Storia Patria", "Archiv für Musikwissenschaft", "Aquileia nostra", "Anabases", "Anas", "Anatolica", "Ancient narrative", "Ancient philosophy", "Ancient society", "The Ancient world", "Anemos", "Annales. Histoire, sciences sociales", "Annales de Normandie", "Annali di storia dell'esegesi", "Anregung", "Der Anschnitt", "Antiquités africaines", "Antichthon", "Antiquity", "The Antiquaries journal", "Antonianum", "Antiquorum philosophia", "Antiquité tardive", "Archiv für Orientforschung", "Annali online di Ferrara. Lettere", "Acta orientalia Academiae Scientiarum Hungaricae", "Analecta papyrologica", "Acta patristica et Byzantina", "Apeiron", "Archiv für Papyrusforschung und verwandte Gebiete", "Archives de philosophie du droit", "Apocrypha", "Apollinaris", "Aquila legionis", "Aquitania", "Archaeological reports", "Aram periodical", "Arcadia", "Archaeologia", "Archaeologiae", "Archaeonautica", "Ἀρχαιογνωσία", "Archeologia classica", "Archeologia", "Architectura", "Archaeological news", "Archív orientální", "Archives de philosophie", "Archäologie der Schweiz", "Archéologie suisse", "Arctos", "Arethusa", "Appunti romani di filologia", "Archiv für Religionsgeschichte", "Argos", "Αριάδνη", "Analecta Romana Instituti Danici", "Arion", "Accordia research papers", "Anatolian studies", "Annuario della Scuola Archeologica di Atene e delle Missioni Italiane in Oriente", "Annales du Service des antiquités de l'Égypte", "Archivio storico per la Calabria e la Lucania", "Asclepio", "Anglo-Saxon England", "Atti del Sodalizio Glottologico Milanese", "Annali del Seminario Giuridico della Università di Palermo", "Anales del seminario de historia de la filosofía", "Atti e memorie della Società Magna Grecia", "Annali della Scuola Normale Superiore di Pisa, Classe di Lettere e Filosofia", "Archivio storico pugliese", "Annali di scienze religiose", "Archivio storico sardo", "Die Alte Stadt", "Ἀθηνᾶ", "Athenaeum", "ʿAtiqot. English series", "Der altsprachliche Unterricht", "Annales Universitatis Scientiarum Budapestinensis de Rolando Eötvös nominatae. Sectio classica", "Annales Universitatis Scientiarum Budapestinensis de Rolando Eötvös nominatae. Sectio iuridica", "Annales Universitatis Scientiarum Budapestinensis de Rolando Eötvös nominatae. Sectio philosophica et sociologica", "Annali dell'Università di Ferrara. Nuova serie. Sezione V, Scienze giuridiche", "Aufidus", "Annali dell'Università di Ferrara. Nuova serie. Sezione VI, Lettere", "Annali dell'Università di Ferrara. Sezione Storia", "Augustinian studies", "Augustiniana", "Augustinianum", "Augustinus", "AUMLA", "Annuaire de l'Université de Sofia St. Kliment Ohridski, Centre de recherches slavo-byzantines Ivan Dujčev", "Auster", "Annales valaisannes", "Atti e memorie / Accademia Nazionale Virgiliana di Scienze, Lettere ed Arti", "Antike Welt", "Allgemeine Zeitschrift für Philosophie", "Bibliothek und Wissenschaft", "Bollettino d'arte", "Bulletin d'archéologie et d'architecture libanaises", "Bulletin de la Classe des lettres et des sciences morales et politiques / Académie royale de Belgique", "Babesch", "Bulletin de l'Association Guillaume Budé", "Bulletin des antiquités luxembourgeoises", "Bulletin d'archéologie marocaine", "Bulletin of the American Schools of Oriental Research", "The Bulletin of the American Society of Papyrologists", "Beiträge zur allgemeinen und vergleichenden Archäologie", "Bollettino della Badia Greca di Grottaferrata", "Bullettino della Commissione Archeologica Comunale di Roma", "Bulletin de correspondance hellénique", "Bollettino del Centro Internazionale per lo Studio dei Papyri Ercolanesi (Cronache ercolanesi)", "Bulletin archéologique du Comité des travaux historiques et scientifiques. Afrique du Nord", "Bibliothèque de l'École des chartes", "Belfagor", "Bulletin d'études orientales", "Berceo", "Berytus", "Bulletin of the history of medicine", "Bulletin de l'Institut français d'archéologie orientale", "Bibliothèque d'humanisme et Renaissance", "Biblica", "Biblos", "Bulletin de l'Institut historique belge de Rome", "Bulletin of the Institute of Classical Studies", "Bullettino dell'Istituto di Diritto Romano", "Bitarte", "Biblische Zeitschrift", "Bonner Jahrbücher des Rheinischen Landesmuseums in Bonn und des Rheinischen Amtes für Bodendenkmalpflege im Landschaftsverband Rheinland und des Vereins von Altertumsfreunden im Rheinlande", "British journal for the history of philosophy", "The British journal for the history of science", "Bulletin de littérature ecclésiastique", "The Bodleian Library record", "Bulletin des Musées royaux d'art et d'histoire", "Bulletin van de Koninklijke Musea voor Kunst en Geschiedenis", "Bryn Mawr classical review", "The Metropolitan Museum of Art bulletin", "Bollettino / Monumenti, musei e gallerie pontificie", "Bulletin / Medelhavsmuseet", "Bulletin / Museum of Mediterranean and Near Eastern Antiquities", "Bulletin / Museums of Art and Archaeology, University of Michigan", "Boletín / Museo de Zaragoza", "Beiträge zur Namenforschung", "Bollettino di numismatica", "Bibliotheca orientalis", "Bollettino dei classici", "Bolskan", "Boreas", "Bericht der Römisch-Germanischen Kommission / Deutsches Archäolo-gisches Institut", "Britannia", "Bulletin of the John Rylands University Library of Manchester", "Bulletin de la Société nationale des antiquaires de France", "Bulletin de la Société des antiquaires de l'Ouest", "Bulletin trimestriel de la Société des antiquaires de Picardie", "Boletín del Seminario de Estudios de Arte y Arqueología", "Bollettino della Società Filosofica Italiana", "Bulletin de la Société de linguistique de Paris", "Bulletin de la Société française de philosophie", "Bollettino di storia delle scienze matematiche", "Bulletin de la Société toulousaine d'études classiques", "Bollettino di studi latini", "Bayerische Vorgeschichtsblätter", "Berichte zur Wissenschaftsgeschichte", "Byzantion", "Byzantinische Forschungen", "Byzantinoslavica", ", Byzantinische Zeitschrift ", "Baseler Zeitschrift für Geschichte und Altertumskunde", "Classica et christiana", "Classica et mediaevalia", "Cahiers alsaciens d'archéologie, d'art et d'histoire", "Caesaraugusta", "Caesarodunum", "Cahiers archéologiques", "Cambridge archaeological journal", "The Classical bulletin", "Civiltà classica e cristiana", "Cahiers du Centre d'études chypriotes. [S", "Cahiers du Centre Gustave-Glotz", "Collectanea Christiana Orientalia", "Chronique Élisabeth.", "Cahiers des études anciennes", "Centaurus", "Cronache ercolanesi", "Cuadernos de filología clásica. Estudios griegos e indoeuropeos", "Cuadernos de filología clásica. Estudios latinos", "Cahiers Ferdinand de Saussure", "Cahiers du GITA", "Cahiers d'histoire", "Cuadernos de historia del derecho", "Church History", "Chiron", "The Catholic Historical Review", "Chronos", "Computers and the Humanities", "Ciceroniana", "Cuadernos de investigación filológica", "Cahiers de l'Institut de linguistique de Louvain", "Cahiers de l'Institut du Moyen-Âge grec et latin", "Circe", "The Classical Journal", "Canadian Journal of Philosophy", "Classical Antiquity", "Classica – revista brasileira de estudos clássicos", "Classica – boletim de pedagogia e cultura", "Classics Ireland", "Classical Studies", "Acta Universitatis Wratislaviensis. Classica Wratislaviensia", "Comparative Literature Studies", "Clio medica", "Classical and Modern Literature", "The Classical Outlook", "Codices manuscripti", "Colby Quarterly", "Comparative Literature", "Conimbriga. Arqueologia.", "Connaissance hellénique", "Quaderns de prehistória i arqueologia de Castelló", "Cuadernos de prehistoria y arqueología", "Connaissance des Pères de l'Église", "Classical philology", "Cahiers de philosophie politique et juridique", "Canadian Philosophical Reviews", "Revue canadienne de comptes rendus en philosophie", "Classical quarterly", "Classical review", "Comptes rendus / Académie des inscriptions et belles-lettres", "Canadian Review of Comparative Literature", "Revue canadienne de littérature comparée", "Cahiers de recherches de l'Institut de papyrologie et d'égyptologie de Lille", "Cristianesimo nella storia", "Critica storica", "Les Cahiers de Tunisie", "Cudas", "Classical world", "Dissertations abstracts", "Dacia", "Deutsches Dante-Jahrbuch", "Δευκαλίων", "Deucalion", "Dialogues d'histoire ancienne", "Dialectica", "Dialogue", "Dike", "Diogène", "Dioniso", "Dionysius", "Diotima", "Δωδώνη. Ιστορία και αρχαιολογία", "Δωδώνη : επιστημονική επετηρίδα του Τμήματος Φιλολογίας της Φιλοσοφικής Σχολής του Πανεπιστημίου Ιωαννίνων", "Δωδώνη : επιστημονική επετηρίδα του Τμήματος Φιλοσοφίας της Φιλοσοφικής Σχολής του Πανεπιστημίου Ιωαννίνων", "Dumbarton Oaks Papers", "Downside Review", "Documenti e studi sulla tradizione filosofica medievale", "Dynamis", "East and West", "Epigraphica Anatolica", "Ethnographisch-archäologische Zeitschrift", "Études celtiques", "Estudios clásicos", "Ἐπιστημονικὴ ἐπετηρὶς τῆς φιλοσοφικῆς Σχολῆς τοῦ Πανεπιστημίου Ἀθηνῶν", "Επιστημονική επετηρίδα της Φιλοσοφικής Σχολής. Tεύχος Τμήματος φιλολογίας", "Επιστημονική επετηρίδα της Φιλοσοφικής Σχολής [του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης, Τμήμα φιλοσοφίας]", "Εγνατία", "Ἐπετηρὶς τοῦ Κέντρου Ἐρεύνης τῆς ῾Ιστορίας τοῦ Ἑλληνικοῦ Δικαίου", "The English historical review", "Estudios humanísticos. Filología", "Eikasmos", "Eirene", "Études de lettres", "Electronic antiquity", "Elenchos", "Ensaios de literatura e filologia", "Échos du monde classique", "Classical views", "Early medieval Europe", "Emerita", "Empúries", "Enchoria", "Eos", "Les Études philosophiques", "Epigraphica", "Epimeleia", "Études platoniciennes", "Epos", "Eranos", "Eranos-Jahrbuch", "Études savoisiennes", "Estudios de la Antigüedad", "Espacio, tiempo y forma. Serie 1, Prehistoria y arqueología", "Espacio, tiempo y forma. Serie 2", "Ephemerides theologicae Lovanienses", "Etruscan studies", "Εὐλιμένη", "Euphrosyne", "Eurasia antiqua", "Èuresis", "Eutopia", "Egitto e Vicino Oriente", "Exemplaria classica", "Excerpta philologica", "Exemplaria", "Fabula", "Filologia antica e moderna", "Faventia", "Fundberichte aus Baden-Württemberg", "Folia electronica classica", "Filosofia", "Forum Iulii", "Florilegium", "Florentia Iliberritana", "Frühmittelalterliche Studien", "Filología neotestamentaria", "Fontes", "Fortunatae", "Felix Ravenna", "Francia", "Fundort Wien", "Freiburger Zeitschrift für Philosophie und Theologie", "Greece and Rome", "Gaia", "Gallaecia", "Gallia", "Grazer Beiträge", "Giornale critico della filosofia italiana", "Genava", "Geographia antiqua", "Gerión", "Germania", "Gesnerus", "Göttinger Forum für Altertumswissenschaft", "Giornale ferrarese di retorica e filologia", "Göttingische gelehrte Anzeigen", "Giornale italiano di filologia", "The Geographical journal", "Gladius", "Graecolatina et orientalia", "Glotta", "Acta Universitatis Carolinae. Graecolatina Pragensia", "Giornale di metafisica", "The J. Paul Getty Museum journal", "Gnomon", "Schweizer Münzblätter", "Gazette numismatique suisse", "Greek, Roman and Byzantine Studies", "Gregorianum", "Geschichte in Wissenschaft und Unterricht", "Gymnasium", "History and Theory", "Helvetia archaeologica", "Habis", "Hagiographica", "Hispania antiqua", "Hefte des Archäologischen Seminars der Universität Bern", "Hamburger Beiträge zur Archäologie", "Hebrew Union College annual", "Histoire, épistémologie, langage", "Helikon", "Helios", "Hellas", "Ελληνικά", "Helmantica", "Hephaistos", "Hermathena", "Hermes", "Hesperia", "Hispania", "Historische Literatur", "Historia", "History", "Histos", "Historisches Jahrbuch", "Harvard Library bulletin", "Historia mathematica", "Ὅρμος", "´Ορος", "History of Philosophy Quarterly", "History and Philosophy of the Life Sciences", "History of Political Thought", "History of Religions", "History of Science", "Historische Sprachforschung", "Historical linguistics", "Histoire des sciences médicales", "Harvard studies in classical philology", "History of technology", "Harvard theological review", "Humanística", "Humanitas : rivista bimestrale di cultura", "Humanitas : revista do Instituto de Estudos Clássicos", "Humanistica Lovaniensia", "Hyperboreus", "Historische Zeitschrift", "Iranica antiqua", "Illinois classical studies", "Israel exploration journal", "Indogermanische Forschungen", "International journal of the classical tradition", "International journal of musicology", "The International journal of nautical archaeology", "International journal of philosophical studies", "Incontri linguistici", "Iliria", "'Ilu", "Italia medioevale e umanistica", "Incidenza dell'Antico", "Index", "Interpretation", "Intertexts", "Invigilata lucernis", "International philosophical quarterly", "Iran", "Iraq", "Isis", "International Studies in Philosophy", "Studi internazionali di filosofia", "Ítaca", "Italica", "Itineraria", "Iura", "Journal asiatique", "Journal of ancient civilizations", "Jahresberichte aus Augst und Kaiseraugst", "Journal of the American Oriental Society", "Journal of the American Research Center in Egypt", "Journal of the Royal Asiatic Society", "Journal of the British Archaeological Association", "Jahrbuch für Antike und Christentum", "Jahrbuch der Berliner Museen", "Journal of biblical literature", "Journal of classical studies", "Jahrbuch des Deutschen Archäologischen Instituts", "The Journal of Egyptian Archaeology", "Journal of Early Christian Studies", "The Journal of Ecclesiastical History", "Journal of the Economic and Social History of the Orient", "Journal of European Archaeology", "Journal of Field Archaeology", "Journal for the History of Astronomy", "Journal for the History of Arabic Science", "Jahrbuch der Heidelberger Akademie der Wissenschaften", "Journal of the History of Biology", "Journal of the History of Ideas", "Journal of the History of Medicine and Allied Sciences", "Journal of the History of Philosophy", "The Journal of Hellenic studies", "Journal of the history of sexuality", "The Journal of Indo-European studies", "The Journal of juristic papyrology", "Journal für Kunstgeschichte", "Journal of Mediterranean archaeology", "Journal of Near Eastern studies", "Jahrbuch für Numismatik und Geldgeschichte", "The Journal of Neoplatonic studies", "Jahreshefte des Österreichischen Archäologischen Institutes in Wien", "Jahrbuch der Österreichischen Byzantinistik", "The Journal of Philosophy", "Journal of Prehistoric Religion", "The Journal of Religion", "Journal of Roman archaeology", "Jahrbuch des Römisch-Germanischen Zentralmuseums Mainz", "Journal of Religious History", "Journal of Roman Military Equipment Studies", "The Journal of Roman Studies", "Journal des savants", "Journal of the Society of Architectural Historians", "Jahrbuch der Schweizerischen Gesellschaft für Ur- und Frühgeschichte", "Annuaire de la Société suisse de préhistoire et d'archéologie", "Journal for the study of Judaism in the Persian, Hellenistic and Roman period", "The Journal of Theological Studies", "Jaarbericht van het Vooraziatisch-Egyptisch Genootschap Ex Oriente Lux", "Journal of the Walters Art Gallery", "Jahrbuch für Wirtschaftsgeschichte", "Journal of the Warburg and Courtauld Institutes", "Kadmos", "Kalathos", "Kant-Studien", "Karthago", "Kentron", "Kernos", "Bericht über die Tagung für Ausgrabungswissenschaft und Bauforschung", "Kölner Jahrbuch", "Klearchos", "Kleos", "Kléos", "Klio", "Kodai", "Κοινωνία", "Κώκαλος", "Kratylos", "Ktema", "Kurtrierisches Jahrbuch", "Lingua e stile", "L'Homme", "La Pensée", "Labeo", "Lalies", "Langages", "Language", "Larouco", "Lateranum", "Latinitas", "Latomus", "Laverna", "Liverpool Classical Monthly", "Les études classiques", "Levant", "Lexis", "Listy filologické", "Folia philologica", "Libya antiqua", "Libyan studies", "Leeds International Classical Studies", "Lettre d'informations", "Limes", "La Linguistique", "Lingua", "Litterae caelestes", "Lingue e linguaggio", "Littérature, médecine et société", "Litterae Numismaticae Vindobonenses", "Logo", "Logos", "Laval théologique et philosophique", "Lucentum", "Lustrum", "Mediaevalia et Humanistica", "Medicina e storia", "Le Moyen Âge", "Memoirs of the American Academy in Rome", "Maecenas", "Medium aevum", "Maia", "Memorie dell'Accademia delle Scienze dell'Istituto di Bologna, Classe di Scienze Morali", "Mainake", "Manuscripta", "Memorie dell'Accademia delle Scienze di Torino. 2, Classe di Scienze morali, storiche e filologiche", "Mededelingen van de Koninklijke Academie voor Wetenschappen, Letteren en Schone Kunsten van België, Klasse der Letteren", "Mainzer Archäologische Zeitschrift", "Münstersche Beiträge zur antiken Handelsgeschichte", "Museum criticum", "Mélanges de la Casa de Velázquez", "Materiali e discussioni per l'analisi dei testi classici", "Mitteilungen des Deutschen Archäologischen Instituts, Athenische Abteilung", "Damaszener Mitteilungen / Deutsches Archäologisches Institut", "Istanbuler Mitteilungen / Deutsches Archäologisches Institut", "Madrider Mitteilungen / Deutsches Archäologisches Institut", "Mitteilungen des Deutschen Archäologischen Instituts, Römische Abteilung", "Bullettino dell'Istituto Archeologico Germanico, Sezione romana", "Meander", "Mediterranean archaeology", "Medical history", "Mediterraneus", "Mediterraneo antico", "Medicina nei secoli", "Mélanges de l'École française de Rome. Antiquité", "Mélanges de l'École française de Rome. Moyen Âge", "Medioevo greco", "Μήνη", "Minima epigraphica et papyrologica", "Mesopotamia", "Messana", "Metalogicon", "Méthexis", "Mètis", "Militärgeschichtliche Mitteilungen", "Militärgeschichtliche Zeitung", "Museum Helveticum", "Memorias de historia antigua", "Medizinhistorisches Journal", "Medicine and the Life Sciences in History", "Mediterranean historical review", "Mitteilungen zur Christlichen Archäologie", "Memorie dell'Istituto Lombardo", "Mind", "Minerva", "Minos", "Mitteilungen des Instituts für Österreichische Geschichtsforschung", "Mittellateinisches Jahrbuch", "Monuments et mémoires publiés par l'Académie des inscriptions et belles-lettres", "Metropolitan Museum journal", "Mnemosyne", "Mededelingen van het Nederlands Instituut te Rome", "Papers of the Netherlands Institute in Rome. Antiquity", "The Modern schoolman", "Mouseion", "Revue de la Société canadienne des études classiques", "Mediaeval studies", "Mélanges de science religieuse", "Münchener Studien zur Sprachwissenschaft", "Miscellanea di studi storici", "Museum Tusculanum", "Munibe", "Le Muséon", "Mélanges de l'Université Saint-Joseph", "Museum Patavinum", "Musiva et sectilia", "Myrtia", "Mythos", "Mainzer Zeitschrift", "Numismatica e antichità classiche", "Nuovi annali della Facoltà di Magistero dell'Università di Messina", "Numismatic chronicle", "Numismatic circular", "Nea Rhome", "New England Classical Journal", "Nestor", "Nicolaus", "Nikephoros", "Numismatic Literature", "Neulateinisches Jahrbuch", "Numismatisches Nachrichtenblatt", "Nova Tellus", "Nuova rivista storica", "Nouvelle revue théologique", "Atti della Accademia Nazionale dei Lincei. Notizie degli scavi di antichità", "Novum Testamentum", "New Testament Abstracts", "NTM", "International Journal of History and Ethics of Natural Sciences, Technology and Medicine", "New Testament studies", "Nubica et Aethiopica", "Numen", "Numisma", "Nuncius", "Numismatische Zeitschrift", "Oriens antiquus", "Opuscula Atheniensia", "Oriens christianus", "Orientalia Christiana periodica", "Oxford Journal of Archaeology", "Orientalia Lovaniensia Periodica", "Orientalistische Literaturzeitung", "Opus", "Ordia prima", "Oriens-Occidens", "Orientalia", "Orizzonti", "Opuscula Romana", "Orpheus", "Ostkirchliche Studien", "Oxford studies in ancient philosophy", "Ostraka", "Orbis terrarum", "Past and present", "Πρακτικὰ τῆς Ἀκαδημίας Ἀθηνῶν", "Πρακτικὰ τῆς ἐν Ἀθήναις Ἀρχαιολογικῆς Ἑταιρείας", "Proceedings of the American Catholic Philosophical Association", "Paideia", "Palestine Exploration quarterly", "Pallas", "Proceedings of the American Philosophical Society", "Papyrologica Lupiensia", "Παρνασσός", "Παρουσία", "Parthica", "Proceedings of the Aristotelian Society", "Proceedings of the Aristotelian Society. Supplementary Volume", "Patavium", "Proceedings of the British Academy", "Papers of the British School at Rome", "Proceedings of the Classical Association", "Proceedings of the Cambridge Philological Society", "Pegasus", "Perficit", "The Philosophical forum", "Philosophy and literature", "Philosophy and phenomenological research", "Philosophy and rhetoric", "Philosophical books", "Pharmacy in history", "Philologus", "Philosophie antique", "Φιλοσοφία", "Philosophiques", "Philosophy", "The Philosophical Quarterly", "Φιλόθεος", "Philotheos", "Przegląd historyczny", "Philosophisches Jahrbuch", "Philosophischer Literaturanzeiger", "Philosophia naturalis", "Phoenix", "Philological quarterly", "The Philosophical review", "Philosophische Rundschau", "Philosophy in Review", "Comptes rendus philosophiques", "Phronesis", "Physis", "Picus", "Philosophiegeschichte und logische Analyse", "Logical Analysis and History of Philosophy", "Potsdamer Lateintage", "Πλάτων", "Periodicum Online zur Erforschung der Kommunikationsstrukturen in der Spätantike", "Ploutarchos", "Poetica", "Polifemo", "Polis", "Parole de l'Orient", "La Parola del passato", "Perspektiven der Philosophie", "Il Pensiero politico", "Praesentia", "Primum legere", "Bulletin de l'Association Pro Aventico", "Jahresbericht / Gesellschaft Pro Vindonissa", "Prometheus", "Prudentia", "The Petronian Society Newsletter", "Puteoli", "Proceedings of the Virgil Society", "Pyrenae", "Quaderni di archeologia della Libia", "Quaderni catanesi di studi classici e medievali", "Quaderni catanesi di studi antichi e medievali", "Quaderni di cultura e di tradizione classica", "Quaderni dell'Istituto di Archeologia e Storia antica / Università degli Studi G. D'Annunzio, Chieti", "Quaderni dell'Istituto di Filosofia, Università degli Studi di Perugia, Facoltà di Magistero", "The Quarterly journal of speech", "Quaderni di storia", "Quaderni urbinati di cultura classica", "Revue archéologique", "Rendiconti della Accademia di Archeologia, Lettere e Belle Arti", "Rivista di archeologia cristiana", "Revue archéologique du Centre de la France", "Rivista archeologica dell'antica provincia e diocesi di Como", "Revue archéologique de l'Est", "Rendiconti dell'Accademia delle Scienze dell'Istituto di Bologna, Classe di Scienze Morali", "Atti della Accademia Nazionale dei Lincei, Classe di Scienze Morali, Storiche e Filologiche. Rendiconti", "Ramus", "Revue archéologique de Narbonnaise", "Revue archéologique de Picardie", "Revue belge d’archéologie et d’histoire de l’art", "Belgisch tijdschrift voor oudheidkunde en kunstgeschiedenis", "Revue bénédictine", "Revue biblique", "Revue belge de numismatique et de sigillographie", "Revue belge de philologie et d'histoire", "Belgisch tijdschrift voor filo geschiedenis", "Regulae Benedicti studia", "Rivista di cultura classica e medioevale", "Revue historique de droit français et étranger", "Rivista di archeologia", "Report of the Department of Antiquities of Cyprus", "Revue du Nord", "Revue du Nord-Archéologie de la Picardie et du Nord de la France", "Rivista di diritto romano", "Revue des études anciennes", "Ricerche di egittologia e di antichità copte", "Revue des études arméniennes", "Revue des études augustiniennes et patristiques", "Revue des études byzantines", "Revista de estudios clásicos", "Recherches augustiniennes et patristiques", "Recherches de science religieuse", "Recherches de théologie et philosophie médiévales", "Forschungen zur Theologie und Philosophie des Mittelalters", "Revue des études grecques", "Revue d'égyptologie", "Revue des études juives", "Revue des études latines", "Revista de estudios latinos", "Religion", "Religious studies", "Renaissance quarterly", "Revue des études sud-est européennes", "Revista española de lingüística", "Revista de filosofía", "Rivista di filosofia", "Revista de filosofía", "Revue française d'histoire des idées politiques", "Rivista di filologia e di istruzione classica", "Rivista di filosofia neo-scolastica", "Revue historique", "Tijdschrift voor rechtsgeschiedenis", "Revue d'histoire du droit", "Revue d'histoire ecclésiastique", "Rhetorica", "Rhetorik", "Rhetoric Review", "Rheinisches Museum für Philologie", "Revue d'histoire et de philosophie religieuses", "Revue de l'histoire des religions", "Revue d'histoire des sciences", "Revue d'histoire des textes", "Revue historique vaudoise", "Rivista dell'Istituto Nazionale di Archeologia e Storia dell'Arte", "Ricerche teologiche", "Revue internationale des droits de l'antiquité", "Rivista internazionale di filosofia del diritto", "Rendiconti / Istituto Lombardo, Accademia di Scienze e Lettere, Classe di Lettere, Scienze morali e storiche", "Rivista italiana di numismatica e scienze affini", "Rinascimento", "Revue internationale de philosophie", "Revue Informatique et statistique dans les sciences humaines", "Rivista biblica", "Rechtshistorisches Journal", "Reports of the Keio Institute of Cultural and Linguistic Studies", "Revista de letras", "Revista latinoamericana de filosofía", "The Review of metaphysics", "Revue de métaphysique et de morale", "Revue numismatique", "Römisches Österreich", "Roczniki humanistyczne. Filologia klasyczna", "Annales de lettres et sciences humaines", "Romanobarbarica", "Romanische Forschungen", "Revista portuguesa de arqueologia", "Atti della Pontificia Accademia Romana di Archeologia. Serie III. Rendiconti", "Revue de philologie, de littérature et d'histoire anciennes", "Revue de philosophie ancienne", "Revue philosophique de la France et de l'étranger", "Revue philosophique de Louvain", "Res publica litterarum", "Römische Quartalschrift für christliche Altertumskunde und für Kirchen-geschichte", "Revue de synthèse", "Rivista storica dell'Antichità", "Zeitschrift für schweizerische Archäologie und Kunstgeschichte", "Revue suisse d'art et d'archéologie", "Ricerche storico bibliche", "Rivista di studi bizantini e neoellenici", "Rivista di studi bizantini e slavi", "Rivista di storia della Chiesa in Italia", "Rivista di storia del cristianesimo", "Rivista di storia della filosofia", "Rivista storica italiana", "Rivista di storia e letteratura religiosa", "Rivista degli studi orientali", "Rivista di studi pompeiani", "Revue des sciences philosophiques et théologiques", "Rhetoric Society Quarterly. University Park (Pa.)", "Revue des sciences religieuses", "Rassegna storica salernitana", "Rivista di studi fenici", "Rivista di studi liguri", "Revue théologique de Louvain", "Revue de théologie et de philosophie", "Rudiae", "Revista venezolana de filosofía", "Scrittura e civiltà", "Segno e testo", "Saeculum", "Saguntum", "Saitabi", "Salesianum", "Sandalion", "Sapienza", "Schol(ia)", "Scholia", "Scripta classica Israelica", "Studi classici e orientali", "Scriptorium", "Scripta theologica", "Studia et documenta historiae et iuris", "Studi etruschi", "Sehepunkte", "Seia", "Sacris erudiri", "Semitica", "Seminari romani di cultura greca", "Studi di egittologia e di papirologia", "Scripta Fulgentina", "Studi genuensi", "Studia historica. Historia antigua", "Studies in history and philosophy of science", "Siculorum gymnasium", "Studi italiani di filologia classica", "Sileno", "Studi italiani di linguistica teorica e applicata", "Silva", "Simblos", "Saalburg-Jahrbuch", "The Southern journal of philosophy", "Σκέψις", "Studia linguistica", "Silvae di Latina Didaxis", "Studi micenei ed egeo-anatolici", "Schede medievali", "Studi e materiali di storia delle religioni", "Studi medievali e umanistici", "Schweizerische numismatische Rundschau", "Revue suisse de numismatique", "Symbolae Osloenses", "Studi orientali e linguistici", "Studia Oliveriana", "Speculum", "Sborník prací Filosofické fakulty Brnĕnské Univerzity. Řada klasická", "Studia minora Facultatis Philosophicae Universitatis Brunensis. Series classica", "Studies in philology", "Symbolae philologorum Posnanensium Graecae et Latinae", "Studia philologica Salmanticensia", "Studia philologica Valentina", "Die Sprache", "Sprachkunst", "Studies in Religion", "Sciences religieuses", "Studi e ricerche dell'Istituto di Civilità Classica, Cristiana, Medievale", "Studi sardi", "Studi e saggi linguistici", "Storia della storiografia", "Histoire de l'historiographie", "Studia Troica", "Stadion", "Studia theologica", "Storiografia", "Studii clasice", "Studies in language", "Studi magrebini", "Studi medievali", "Studia monastica", "Studium Ovetense", "Studia Patavina", "Studia philosophica", "The Studia Philonica annual", "Studia Picena", "Studi romani", "Studi romagnoli", "Studi salentini", "Studi storici", "Studi umanistici piceni", "Studi urbinati. Serie B, Scienze umane e sociali", "Sudhoffs Archiv", "Sungraphe", "Światowit", "Syllecta classica", "Symbolon", "ΣΥΝΤΑΚΤΙΚΑ", "Syntaktika", "Synthesis", "Syria", "Studia Zamorensia", "Schweizerische Zeitschrift für Geschichte", "Revue suisse d'histoire", "Technology and culture", "Travaux et mémoires du Centre de recherche d'histoire et civilisation byzan-tines", "Text & presentation", "Teología y vida", "Tabona", "Τάλαντα", "Talia dixit", "Transactions of the American Philological Association", "Transactions of the American Philosophical Society", "Travaux / Cercle linguistique d'Aix-en-Provence", "Teiresias", "Τεκμήρια", "Beiträge zur Geschichte der griechischen und römischen Welt", "Temenos", "Tempora", "Tempus", "Tijdschrift voor filosofie", "Tijdschrift voor geschiedenis", "Theologie und Philosophie", "Theoria", "Thetis", "Theologische Literaturzeitung", "The Thomist", "Theologische Quartalschrift", "Theologische Rundschau", "Theologische Revue", "Theological studies", "Theologische Zeitschrift", "Trinity journal", "TLS", "Trésors monétaires", "Topoi: an international review of philosophy", "ΤΟΠΟΙ. Orient-Occident", "Transactions of the Philological Society", "Traditio", "Travaux neuchâtelois de linguistique", "Trivium", "Tyche", "Trierer Zeitschrift für Geschichte und Kunst des Trierer Landes und seiner Nachbargebiete", "Ugarit-Forschungen", "Uranie", "Verkundigung und Forschung", "Vallesia", "Vigiliae Christianae", "Vestnik drevnej istorii", "Journal of Ancient History", "Veleia", "Verbum", "Vergilius", "Vetera Christianorum", "Viator", "Vichiana", "Vivarium", "Vivens Homo", "Vita Latina", "Voces", "Vox Latina", "Vox Patrum", "Vox Romanica", "Vetus Testamentum", "Wort und Dienst", "Wiener humanistische Blätter", "Würzburger Jahrbücher für die Altertumswissenschaft", "Die Welt des Orients", "Word", "Wiener Studien", "Xenia antiqua", "Yale classical studies", "The Yale journal of criticism", "The Yale University Library gazette", "Zeitschrift für antikes Christentum", "Journal of Ancient Christianity", "Živa Antika", "Antiquité vivante", "Zeitschrift für ägyptische Sprache und Altertumskunde", "Zeitschrift für die Alttestamentliche Wissenschaft", "Zeitschrift der Deutschen Morgenländischen Gesellschaft", "Zephyrus", "Zeitschrift für Archäologie", "Zeitschrift für Kirchengeschichte", "Zeitschrift für Katholische Theologie", "Zeitschrift für die Neutestamentliche Wissenschaft und die Kunde der älteren Kirche", "Zeitschrift des Deutschen Palästina-Vereins", "Zeitschrift für Papyrologie und Epigraphik", "Zeitschrift für philosophische Forschung", "Zeitschrift der Savigny-Stiftung für Rechtsgeschichte. Romanistische Abteilung", "Zeitschrift für Religions- und Geistesgeschichte", "Zeitschrift für romanische Philologie", "Zeitschrift für Semiotik") Dim mAbrev() As String mAbrev = Array("A&A", "A&Cr", "A&R", "AA", "AAAH", "AABS", "AAC", "AAEC", "AAHG", "AALig", "AAN", "AAntHung", "AAP", "AAPal", "AAPat", "AAPel", "AArch", "AArchHung", "AArchSlov", "AArchSyr", "AARov", "AAS", "AAS", "AASO", "AAT", "AATC", "AAWW", "AB", "ABG", "ABPO", "ABSA", "ABull", "ABWG", "AC", "ACD", "ACF", "AClass", "Acme", "ActaHyp", "AD", "Adamantius", "ADFF", "AEA", "Aegyptus", "AEH", "AEH", "AEph", "AErt", "Aestimatio", "Aevum", "Aevum(ant)", "AFB", "AFC", "AFGG", "AFilos", "AFLB", "AFLC", "AFLD", "AFLM", "AFLN", "AFLPer(class)", "AFLPer(filos)", "AFLPer(ling)", "AFLPer(stor)", "AFLS", "AFMC", "Africa", "AFSFC", "AGI", "AGLComo", "AGPh", "AH", "AHAM", "AHAUSJ", "AHB", "AHB", "AHC", "AHDE", "AHES", "AHIg", "AHistHung", "AHMA", "AHR", "AIHS", "AIIN", "AIIS", "AION(archeol)", "AION(filol)", "AION(ling)", "AIPh", "AIPhO", "AIV", "AJ", "AJA", "AJAH", "AJN", "AJPh", "AK", "AKB", "AKBern", "AKBern", "AKG", "Akroterion", "Alba Regia", "Alfinge", "ALGP", "ALMA", "Altertum", "AMal", "AMAM(A)", "AMAM(M)", "AMAP", "AMArc", "AMAV", "Ambix", "AMSI", "AMW", "AN", "Anabases", "Anas", "Anatolica", "AncNarr", "AncPhil", "AncSoc", "AncW", "Anemos", "Annales (HSS)", "AnnNorm", "AnnSE", "Anregung", "Anschnitt", "AntAfr", "Antichthon", "Antiquity", "AntJ", "Antonianum", "AntPhilos", "AntTard", "AOF", "AOFL", "AOrientHung", "APapyrol", "APB", "Apeiron", "APF", "APhD", "Apocrypha", "Apollinaris", "Aquila legionis", "Aquitania", "AR", "Aram", "Arcadia", "Archaeologia", "Archaeologiae", "Archaeonautica", "Archaiognosia", "ArchClass", "Archeologia", "Architectura", "ArchN", "ArchOrient", "ArchPhilos", "ArchS", "ArchS", "Arctos", "Arethusa", "ARF", "ARG", "Argos", "Ariadne", "ARID", "Arion", "ARP", "AS", "ASAA", "ASAE", "ASCL", "Asclepio", "ASE", "ASGM", "ASGP", "ASHF", "ASMG", "ASNP", "ASP", "ASR", "ASSard", "AStadt", "Athena", "Athenaeum", "Atiqot", "AU", "AUB(class)", "AUB(jur)", "AUB(phil)", "AUFG", "Aufidus", "AUFL", "AUFS", "AugStud", "Augustiniana", "Augustinianum", "Augustinus", "AUMLA", "AUS", "Auster", "AV", "AVM", "AW", "AZP", "B&W", "BA", "BAAL", "BAB", "BABesch", "BAGB", "BAL", "BAM", "BASO", "BASP", "BAVA", "BBGG", "BCAR", "BCH", "BCPE", "BCTH", "BECh", "Belfagor", "BEO", "Berceo", "Berytus", "BHM", "BIAO", "BiblH&R", "Biblica", "Biblos", "BIBR", "BICS", "BIDR", "Bitarte", "BiZ", "BJ", "BJHP", "BJHS", "BLE", "BLR", "BMAH", "BMAH", "BMCRev", "BMM", "BMMP", "BMNE", "BMNE", "BMusUM", "BMZ", "BN", "BNum", "BO", "BollClass", "Bolskan", "Boreas", "BRGK", "Britannia", "BRL", "BSAF", "BSAO", "BSAP", "BSEAA", "BSFI", "BSL", "BSPh", "BSSM", "BSTEC", "BStudLat", "BVBl", "BWG", "Byzantion", "ByzF", "ByzSlav", "ByzZ", "BZG", "C&C", "C&M", "CAAH", "Caesaraugusta", "Caesarodunum", "CArch", "CArchJ", "CB", "CCC", "CCEC", "CCG", "CCO", "CE", "CEA", "Centaurus", "CErc", "CFC(G)", "CFC(L)", "CFS", "CGITA", "CH", "CHD", "ChHist", "Chiron", "CHR", "Chronos", "CHum", "Ciceroniana", "CIF", "CILL", "CIMAGL", "Circe", "CJ", "CJPh", "ClAnt", "Classica (Brasil)", "Classica (Lisboa)", "Classics Ireland", "ClassStud", "ClassWrat", "CLS", "CM", "CML", "CO", "CodMan", "ColbyQ", "CompLit", "Conimbriga", "ConnHell", "CPAC", "CPAM", "CPE", "CPh", "CPhPJ", "CPhRev", "CPhRev", "CQ", "CR", "CRAI", "CRCL", "CRCL", "CRIPEL", "CrSt", "CS", "CT", "Cudas", "CW", "DA", "Dacia", "DDJ", "Deukalion", "Deukalion", "DHA", "Dialectica", "Dialogue", "Dike", "Diogène", "Dioniso (N. S.)", "Dionysius", "Diotima", "Dodone(hist)", "Dodone(philol)", "Dodone(philos)", "DOP", "DR", "DSTradF", "Dynamis", "E&W", "EA", "EAZ", "EC", "EClás", "EEAth", "EEThess(philol)", "EEThess(philos)", "Egnatia", "EHHD", "EHR", "EHum", "Eikasmos", "Eirene", "EL", "ElectronAnt", "Elenchos", "ELF", "EMC", "EMC", "EME", "Emerita", "Empúries", "Enchoria", "Eos", "EPh", "Epigraphica", "Epimeleia", "EPlaton", "Epos", "Eranos", "Eranos-Jb", "ESav", "EstAnt", "ETF(arqueol)", "ETF(hist)", "EThL", "EtrStud", "Eulimene", "Euphrosyne", "EurAnt", "Euresis", "Eutopia", "EVO", "ExClass", "ExcPhilol", "Exemplaria", "Fabula", "FAM", "Faventia", "FBW", "FEC", "Filosofia", "FIul", "Florilegium", "FlorIlib", "FMS", "FNT", "Fontes", "Fortunatae", "FR", "Francia", "FWien", "FZPhTh", "G&R", "Gaia", "Gallaecia", "Gallia", "GB", "GCFI", "Genava", "GeorgAnt", "Gerión", "Germania", "Gesnerus", "GFA", "GFRF", "GGA", "GIF", "GJ", "Gladius", "GLO", "Glotta", "GLP", "GM", "GMusJ", "Gnomon", "GNS", "GNS", "GRBS", "Gregorianum", "GWU", "Gymnasium", "H&T", "HA", "Habis", "Hagiographica", "HAnt", "HASB", "HBA", "HebrUCA", "HEL", "Helikon", "Helios", "Hellas", "Hellenica", "Helmantica", "Hephaistos", "Hermathena", "Hermes", "Hesperia", "Hispania", "HistLit", "Historia", "History", "Histos", "HJ", "HLB", "HM", "Hormos", "Horos", "HPhQ", "HPLS", "HPTh", "HR", "HS", "HSF", "HSF", "HSMed", "HSPh", "HTechn", "HThR", "Humanística", "Humanitas (Brescia)", "Humanitas (Coimbra)", "HumLov", "Hyperboreus", "HZ", "IA", "ICS", "IEJ", "IF", "IJCT", "IJM", "IJNA", "IJPS", "ILing", "Iliria", "Ilu", "IMU", "IncidAntico", "Index", "Interpretation", "Intertexts", "InvLuc", "IPQ", "Iran", "Iraq", "Isis", "ISPh", "ISPh", "Itaca", "Italica", "Itineraria", "Iura", "JA", "JAC", "JAK", "JAOS", "JARCE", "JAS", "JBAA", "JbAC", "JBerlM", "JBL", "JCS", "JDAI", "JEA", "JECS", "JEH", "JESHO", "JEurArch", "JFA", "JHA", "JHAS", "JHAW", "JHB", "JHI", "JHM", "JHPh", "JHS", "JHSex", "JIES", "JJP", "JKG", "JMA", "JNES", "JNG", "JNStud", "JÖAI", "JÖByz", "JPh", "JPR", "JR", "JRA", "JRGZ", "JRH", "JRMES", "JRS", "JS", "JSAH", "JSGU", "JSGU", "JSJ", "JThS", "JVEG", "JWAG", "JWG", "JWI", "Kadmos", "Kalathos", "KantStud", "Karthago", "Kentron", "Kernos", "KGB", "KJ", "Klearchos", "Kleos", "Kléos (Brasil)", "Klio", "Kodai", "Koinonia", "Kokalos", "Kratylos", "Ktema", "KurtrJb", "L&S", "L'Homme", "La Pensée", "Labeo", "Lalies", "Langages", "Language", "Larouco", "Lateranum", "Latinitas", "Latomus", "Laverna", "LCM", "LEC", "Levant", "Lexis", "LF", "LF", "LibAnt", "LibStud", "LICS", "LIMAM", "Limes", "Ling", "Lingua", "LittCael", "LL", "LMS", "LNV", "Logo", "Logos (Madrid)", "LThPh", "Lucentum", "Lustrum", "M&H", "M&S", "MA", "MAAR", "Maecenas", "MAev", "Maia", "MAIB", "Mainake", "Manuscripta", "MAT", "MAWBL", "MAZ", "MBAH", "MCr", "MCV", "MD", "MDAI(A)", "MDAI(D)", "MDAI(I)", "MDAI(M)", "MDAI(R)", "MDAI(R)", "Meander", "MedArch", "MedHist", "Mediterraneus", "MediterrAnt", "MedSec", "MEFRA", "MEFRM", "MEG", "Mene", "MEP", "Mesopotamia", "Messana", "Metalogicon", "Méthexis", "Mètis", "MGM", "MGZ", "MH", "MHA", "MHJ", "MHJ", "MHR", "MiChA", "MIL", "Mind", "Minerva", "Minos", "MIÖG", "MLatJb", "MMAI", "MMJ", "Mnemosyne", "MNIR", "MNIR", "ModSch", "Mouseion (Canada)", "Mouseion (Canada)", "MS", "MSR", "MSS", "MStudStor", "MT", "Munibe", "Muséon", "MUSJ", "MusPat", "MusSect", "Myrtia", "Mythos", "MZ", "NAC", "NAFM", "NC", "NCirc", "Nea Rhome", "NECJ", "Nestor", "Nicolaus", "Nikephoros", "NL", "NLJ", "NNB", "Nova Tellus", "NRS", "NRTh", "NSA", "NT", "NTA", "NTM", "NTM", "NTS", "Nubica", "Numen", "Numisma", "Nuncius", "NZ", "OA", "OAth", "OC", "OCP", "OJA", "OLP", "OLZ", "Opus", "Ordia prima", "Oriens-Occidens", "Orientalia", "Orizzonti", "ORom", "Orpheus", "OS", "OSAPh", "Ostraka", "OTerr", "P&P", "PAA", "PAAH", "PACPhA", "Paideia", "PalEQ", "Pallas", "PAPhS", "PapLup", "Parnassos", "Parousia", "Parthica", "PAS", "PAS(suppl)", "Patavium", "PBA", "PBSR", "PCA", "PCPhS", "Pegasus", "Perficit", "PF", "Ph&Lit", "Ph&PhenR", "Ph&Rh", "PhB", "PhH", "Philologus", "PhilosAnt", "Philosophia", "Philosophiques", "Philosophy", "PhilosQ", "Philotheos", "Philotheos", "PHist", "PhJ", "PhLA", "PhN", "Phoenix", "PhQ", "PhR", "PhRdschau", "PhRev", "PhRev", "Phronesis", "Physis", "Picus", "PlA", "PlA", "PLat", "Platon", "Plekos", "Ploutarchos", "Poetica", "Polifemo", "Polis", "POr", "PP", "PPh", "PPol", "Praesentia", "Primum legere", "Pro Aventico", "Pro Vindonissa", "Prometheus", "Prudentia", "PSN", "Puteoli", "PVS", "Pyrenae", "QAL", "QC", "QCSAM", "QCTC", "QIASA", "QIFP", "QJS", "QS", "QUCC", "RA", "RAAN", "RAC", "RACF", "RAComo", "RAE", "RAIB", "RAL", "Ramus", "RAN", "RAPic", "RBA", "RBA", "RBen", "RBi", "RBN", "RBPh", "RBPh", "RBS", "RCCM", "RD", "RdA", "RDAC", "RdN", "RdN(archéol)", "RDR", "REA", "REAC", "REArm", "REAug", "REByz", "REC", "RecAug", "RecSR", "RecTh", "RecTh", "REG", "REgypt", "REJ", "REL", "RELat", "Religion", "RelStud", "RenQ", "RESE", "REspLing", "RF (Argentina)", "RF (Bologna)", "RF (Madrid)", "RFHIP", "RFIC", "RFN", "RH", "RHD", "RHD", "RHE", "Rhetorica", "Rhetorik", "RhetR", "RhM", "RHPhR", "RHR", "RHS", "RHT", "RHV", "RIA", "RicTeol", "RIDA", "RIFD", "RIL", "RIN", "Rinascimento", "RIPh", "RISSH", "RivBibl", "RJ", "RKI", "RL", "RLAF", "RMeta", "RMM", "RN", "RÖ", "RoczHum", "RoczHum", "RomBarb", "RomForsch", "RPA", "RPAA", "RPh", "RPhA", "RPhilos", "RPhL", "RPL", "RQA", "RS", "RSA", "RSAA", "RSAA", "RSB", "RSBN", "RSBS", "RSCI", "RSCr", "RSF", "RSI", "RSLR", "RSO", "RSP", "RSPh", "RSQ", "RSR", "RSS", "RStudFen", "RStudLig", "RThL", "RThPh", "Rudiae", "RVF", "S&C", "S&T", "Saeculum", "Saguntum", "Saitabi", "Salesianum", "Sandalion", "Sapienza", "Schol(i)a", "Scholia", "SCI", "SCO", "Scriptorium", "ScrTheol", "SDHI", "SE", "Sehepunkte", "Seia", "SEJG", "Semitica", "SemRom", "SEP", "SFulg", "SG", "SHHA", "SHPS", "SicGymn", "SIFC", "Sileno", "SILTA", "Silva", "Simblos", "SJ", "SJPh", "Skepsis", "SL", "SLD", "SMEA", "SMed", "SMSR", "SMU", "SNR", "SNR", "SO", "SOL", "SOliv", "Speculum", "SPFB(klas)", "SPFB(klas)", "SPh", "SPhP", "SPhS", "SPhV", "Sprache", "Sprachkunst", "SR", "SR", "SRIC", "SS", "SSL", "SStor", "SStor", "ST", "Stadion", "STh", "Storiografia", "StudClas", "StudLang", "StudMagr", "StudMed", "StudMon", "StudOv", "StudPat", "StudPhil", "StudPhilon", "StudPic", "StudRom", "StudRomagn", "StudSal", "StudStor", "StudUmanistPiceni", "StudUrb(B)", "Sudhoffs Archiv", "Sungraphe", "Swiatowit", "SyllClass", "Symbolon", "Syntaktika", "Syntaktika", "Synthesis", "Syria", "SZ", "SZG", "SZG", "T&C", "T&MByz", "T&P", "T&V", "Tabona", "Talanta", "Talia dixit", "TAPhA", "TAPhS", "TCLA", "Teiresias", "Tekmeria", "Tekmeria", "Temenos", "Tempora", "Tempus", "TF", "TG", "Th&Ph", "Theoria", "Thetis", "ThLZ", "Thomist", "ThQ", "ThRdschau", "ThRev", "ThS", "ThZ", "TJ", "TLS", "TMon", "Topoi (Dordrecht)", "Topoi (Lyon)", "TPhS", "Traditio", "TRANEL", "Trivium", "Tyche", "TZ", "UF", "Uranie", "V&F", "Vallesia", "VChr", "VDI", "VDI", "Veleia", "Verbum", "Vergilius", "VetChr", "Viator", "Vichiana", "Vivarium", "Vivens Homo", "VL", "Voces", "VoxLat", "VoxP", "VR", "VT", "W&D", "WHB", "WJA", "WO", "Word", "WS", "XAnt", "YClS", "YJC", "YLG", "ZAC", "ZAC", "ZAnt", "ZAnt", "ZÄS", "ZATW", "ZDMG", "Zephyrus", "ZfA", "ZKG", "ZKTh", "ZNTW", "ZPalV", "ZPE", "ZPhF", "ZRG", "ZRGG", "ZRPh", "ZS") Dim oDocument As Object Dim iReturnCode As Integer If Check(mJournal) = 7 Then Exit Sub End If iReturnCode = MsgBox("Cette macro vous permet d'abréger les titres des revues citées en suivant les normes de l'Année Philologique." &_ vbNewLine & vbNewLine & "Attention, il est recommandé d'appliquer les normes de votre éditeur (éventuellement grâce à une macro dédiée) avant celles de l'Année Philologique." &_ vbNewLine & vbNewLine & "Voulez-vous continuer ?",_ 1, mJournal) If iReturnCode = 2 Then Exit Sub Endif oDocument = ThisComponent Abbreviate (oDocument, mTitreLong(), mAbrev(), mJournal, bExpandFirstCitation) End Sub Function getOccurrencesCount(oScope As Object) As Variant Const sZoteroItemIDRegex As String = """itemData"":\{""id"":[0-9]+" Const nZoteroItemIDCharsToIgnore As Integer = 17 Const sZoteroItemInfoRegex As String = "[^}]+\}" Const nZoteroItemInfoCharsToIgnore As Integer = 2 Dim oZoteroNotes As Object Dim sZoteroNoteContent As String Dim iZoteroNote As Integer Dim sItemIDRegex As String Dim vIDBiblioNboccMap(0, 2) As Variant Dim iMap As Integer Dim oItemIDSearch As Object Dim aIDSearchOptions As New com.sun.star.util.SearchOptions Dim oItemInfoSearch As Object Dim aInfoSearchOptions As New com.sun.star.util.SearchOptions Dim aIDSearchResult As Object Dim aTitleSearchResult As Object Dim iItemIDMatch As Integer Dim sItemID As String Dim sItemInfo As String Dim vSortedItemMap As Variant oItemIDSearch = CreateUnoService("com.sun.star.util.TextSearch") With aIDSearchOptions .algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP .searchString = sZoteroItemIDRegex End With oItemIDSearch.setOptions(aIDSearchOptions) oItemInfoSearch = CreateUnoService("com.sun.star.util.TextSearch") With aInfoSearchOptions .algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP .searchString = sZoteroItemInfoRegex End With oItemInfoSearch.setOptions(aInfoSearchOptions) oZoteroNotes = oScope.getReferenceMarks() For iZoteroNote = 0 To oZoteroNotes.getCount()-1 sZoteroNoteContent = oZoteroNotes.getByIndex(iZoteroNote).Name aIDSearchResult = oItemIDSearch.searchForward(sZoteroNoteContent, 0, Len(sZoteroNoteContent)-1) Do While aIDSearchResult.subRegExpressions > 0 iItemIDMatch = aIDSearchResult.subRegExpressions - 1 sItemID = extractMatchingString(sZoteroNoteContent, aIDSearchResult, iItemIDMatch, nZoteroItemIDCharsToIgnore) aTitleSearchResult = oItemInfoSearch.searchForward(sZoteroNoteContent, aIDSearchResult.endOffset(iItemIDMatch), Len(sZoteroNoteContent)-1) sItemInfo = extractMatchingString(sZoteroNoteContent, aTitleSearchResult, 0, nZoteroItemInfoCharsToIgnore) AddItemToMap(vIDBiblioNboccMap, sItemID, sItemInfo) aIDSearchResult = oItemIDSearch.searchForward(sZoteroNoteContent, aIDSearchResult.endOffset(iItemIDMatch)+1, Len(sZoteroNoteContent)-1) Loop Next iZoteroNote getOccurrencesCount = sortMapByNbOccurrences(vIDBiblioNboccMap) End Function Function getBibliographySection() As Object Dim oTextSections As Object Dim oTextSectionNames As Object Dim iTextSection As Integer Const sZoteroBibliographyID As String = "ZOTERO_BIBL" On Error Goto oTextSections = ThisComponent.getTextSections() oTextSectionNames = oTextSections.getElementNames() For iTextSection = 0 to UBound(oTextSectionNames) If InStr(1, oTextSectionNames(iTextSection), sZoteroBibliographyID, 1) = 1 Then getBibliographySection = oTextSections.getByIndex(iTextSection) End If Next iTextSection End Function Function getBibliographyCursor(sBibliographyHeaderStyle As String) As Object Dim oSearch As Object Dim oCursor As Object oSearch = ThisComponent.createSearchDescriptor() oSearch.SearchString = sBibliographyHeaderStyle oSearch.SearchWords = TRUE oSearch.SearchRegularExpression = FALSE oSearch.SearchStyles = TRUE On Error GoTo 0 oCursor = ThisComponent.Text.createTextCursorByRange(ThisComponent.findFirst(oSearch)) oCursor.collapseToEnd() oCursor.gotoNextParagraph(False) getBibliographyCursor = oCursor End Function Sub SetFontSlantToString(sString As String, vFontSlant As Variant) Dim oDocument As Object Dim oSearch As Object, oReplace As Object, oResult As Object Dim oFound As Object, oFoundCursor As Object Dim n As Integer oDocument = ThisComponent oSearch = oDocument.createSearchDescriptor oReplace = oDocument.createReplaceDescriptor oSearch.SearchString = sString oSearch.SearchRegularExpression = FALSE oSearch.SearchWords = TRUE oSearch.SearchCaseSensitive = TRUE oResult = oDocument.findAll(oSearch) If oResult.count > 0 Then For n = 0 To oResult.count - 1 oFound = oResult.getByIndex(n) oFoundCursor = oFound.Text.createTextCursorByRange(oFound) oFoundCursor.CharPosture = vFontSlant Next n End If End Sub Sub SetFolioToPluralForm(sFolioSingular As String, sFolioPlural As String) Dim sFolioFindRegex As String sFolioFindRegex = " " & sFolioSingular & "([0-9]+[rv]?)-" Dim sFolioReplaceRegex As String sFolioReplaceRegex = " " & sFolioPlural & "$1-" Dim oDocument As Object Dim oSearch As Object, oReplace As Object, oResult As Object oDocument = ThisComponent oReplace = oDocument.createReplaceDescriptor oReplace.SearchString = sFolioFindRegex oReplace.SearchRegularExpression = TRUE oReplace.SearchAll = TRUE oReplace.ReplaceString = sFolioReplaceRegex oDocument.replaceAll(oReplace) End Sub Sub RestoreNonBreakableSpaces ' Must be called before macros that involve formatting of the targeted strings. Dim sStringsWithBreakableSpaceFirstSpace() As String sStringsWithBreakableSpaceFirstSpace = Array(" ;", " :", " !", " ?") Dim sStringsWithBreakableSpaceSecondSpace() As String sStringsWithBreakableSpaceSecondSpace = Array(" n. ", " no ", " nos ", " p. ", " f. ", " ff. ", " l. ") Dim oDocument As Object Dim oReplace As Object, oResult As Object Dim iString As Integer Dim sStringToReplace As String oDocument = ThisComponent oReplace = oDocument.createReplaceDescriptor For iString = 0 To UBound(sStringsWithBreakableSpaceFirstSpace) sStringToReplace = sStringsWithBreakableSpaceFirstSpace(iString) oReplace.SearchString = sStringToReplace oReplace.SearchRegularExpression = FALSE oReplace.SearchAll = TRUE oReplace.ReplaceString = Replace(sStringToReplace, " ", " ") ' First space is breakable, second is non-breakable. oDocument.replaceAll(oReplace) Next iString For iString = 0 To UBound(sStringsWithBreakableSpaceSecondSpace) sStringToReplace = sStringsWithBreakableSpaceSecondSpace(iString) oReplace.SearchString = sStringToReplace oReplace.SearchRegularExpression = FALSE oReplace.SearchAll = TRUE oReplace.ReplaceString = " " & Replace(sStringToReplace, " ", " ", 2) ' First space is breakable, second is non-breakable. oDocument.replaceAll(oReplace) Next iString End Sub Sub ReplaceString(sToReplace As String, sReplacement As String, bIsRegex As Boolean) Dim oReplace As Object oReplace = ThisComponent.createSearchDescriptor() oReplace.SearchString = sToReplace oReplace.SearchRegularExpression = bIsRegex oReplace.ReplaceString = sReplacement ThisComponent.replaceAll(oReplace) End Sub