Quellen automatisch ordnen

Dominik B. hinzugefügt 24 Tagen her
unbeantwortet

Liebes Forum, ich verwende Citavi 6, Zitierstil "Zitierfibel 2. Edition"; Ist es möglich dass ich die Quellen automatisch so anordne: Gerichtsentscheidungen vor allen anderen Quellen und die diese (die Gerichtsentscheidungen) dabei sortiert nach Erscheinungsdatum von neu nach alt?

Liebe Grüße

Kommentare (12)

Foto
1

Um das klarzustellen: es geht im zweiten Teil der Frage darum, dass das primäre Sortierkriterium für Titel der Art "Gerichtsentscheidung" ein anderes sein soll (nämlich Datum) als das für andere Titel (nicht Gerichtsentscheidungen), nicht wahr? Was wäre denn dann das Sortierkriterium für die übrigen Titel (Zeitschriftenbeiträge, etc.?) Und ist Datum wirklich das primäre Kriterium (also nicht etwa BGH vor OLG vor LG vor AG?)?

Foto
1

Danke für die Antwort. Also für Gerichtsentscheidungen, die vor allen anderen Quellen kommen sollen, hast Du recht: Das primäre Kriterium soll sein BGH vor OLG vor AG. Und das sekundäre Kriterium soll das Entscheidungsdatum sein (neu vor alt). Für alle anderen Quellen brauche ich keine Kriterien, die kann ich irgendwie anordnen.

Foto
2

Ah ja. Es gibt eine einfache und eine komplizierte Methode, das zu erreichen. Wenn die Sortierung der anderen Quellen egal ist, würde ich für die einfache Methode optieren.

Dazu würde ich zunächst einmal einstellen, dass das Literaturverzeichnis nach Datum sortiert werden soll. Das geht in den Eigenschaften des Zitationsstils.

/e3ef78ea36e2de5f1106ea66b7c717f4

Dann muss man nur noch erreichen, dass die Gerichtsentscheidungen separat von den anderen Quellen gelistet werden, und innerhalb der Gerichtsentscheidungen BGH vor OLG/KG vor LG vor AG steht.

Dazu müsste man zunächst einmal gespeicherte Suchen erstellen. Eine Suche, welche nach Autor=Bundesgerichtshof sucht, eine Suche, welche nach Autor=Oberlandesgericht oder Autor=Kammergericht sucht, etc. pp.

Dann erstellt man eine Gruppierung, welche auf der ersten Ebene zwei Gruppen enthält: Quellen der Art Gerichtsentscheidung, und andere Quellen. Die erste Gruppe wiederum enthält Untergruppen, nämlich die erste Gruppe auf Grundlage der gespeicherten Suche für den BGH, die zweite Gruppe die gespeicherte Suche für die Oberlandesgerichte, und so weiter und so fort.

Foto
1

Super ok, vielen Dank. Das probiere ich mal aus!

Foto
1

Oh Gott ich bin dumm. Ich dachte an die Sortierung innerhalb eines Mehrfach-Nachweises, nicht im Lit-VZ. Sorry, das habe ich überhaupt nicht klar gesagt. :-(

Foto
1

Naja, ich habe ja das gleiche gemacht, nur umgekehrt. Ich habe nur an das LV gedacht. Für die Mehrfachnachweise muss man einen Sortiercode nehmen, das lässt sich ebenfalls in den Eigenschaften des Zitationsstils einstellen. Ich hab da mal was vorbereitet.

   using System;
   using System.Linq;
   using System.Collections.Generic;
   using System.ComponentModel;
   using SwissAcademic.Citavi;
   using SwissAcademic.Citavi.Citations;
   using SwissAcademic.Citavi.Metadata;
   using SwissAcademic.Collections;

   namespace SwissAcademic.Citavi.Comparers
   {
    public class CustomCitationComparer
         :
         ICustomCitationComparerMacro
    {
      public int Compare(Citation x, Citation y)
      {
         var defaultCitationComparer = CitationComparer.AuthorYearTitleAscending;

         int xCriterionOne;
         int xCriterionTwo;

         int yCriterionOne;
         int yCriterionTwo;

         GetCriteria(x, out xCriterionOne, out xCriterionTwo);
         GetCriteria(y, out yCriterionOne, out yCriterionTwo);

         if (xCriterionOne != yCriterionOne)
         {
            return xCriterionOne.CompareTo(yCriterionOne);
         }
         else if (xCriterionTwo != yCriterionTwo)
         {
            return xCriterionTwo.CompareTo(yCriterionTwo);
         }
         else
         {
            return defaultCitationComparer.Compare(x, y);
         }
      }
      private bool GetCriteria(Citation citation, out int criterionOne, out int criterionTwo)
      {
         criterionOne = GetCriterionOne(citation);
         criterionTwo = GetCriterionTwo(citation);
         return true;
      }
      private int GetCriterionOne(Citation citation)
      {
         PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;

         if (placeholderCitation == null) return 0;

		 int hasPrefix = placeholderCitation.Entry.QuotationType == QuotationType.DirectQuotation ? 1 : 2;

         return hasPrefix;
      }
      private int GetCriterionTwo(Citation citation)
      {
         if (HasIbid(citation))
         {
            return -1;
         }
         else
         {
            return 0;
         }
      }
      private bool HasIbid(Citation citation)
      {
         bool IgnoreQuotationPageRange = true;

         FootnoteCitation currentFootnoteCitation = citation as FootnoteCitation;
         if (currentFootnoteCitation == null) return false;

         CitationManager citationManager = citation.CitationManager;
         if (citationManager == null) return false;

         Reference currentReference = citation.Reference;
         if (currentReference == null) return false;

         int currentFootnoteIndex = currentFootnoteCitation.FootnoteIndex;
         if (currentFootnoteIndex == null) return false;

         FootnoteCitation previousFootnoteCitation = currentFootnoteCitation;
         Reference previousReference = previousFootnoteCitation.Reference;
         int previousFootnoteIndex = previousFootnoteCitation.FootnoteIndex;

         while (previousFootnoteCitation != null && previousReference != null && previousFootnoteIndex != null && previousFootnoteIndex == currentFootnoteIndex)
         {
            previousFootnoteCitation = previousFootnoteCitation.PreviousFootnoteCitation;
            previousReference = previousFootnoteCitation.Reference;
            previousFootnoteIndex = previousFootnoteCitation.FootnoteIndex;
         }

         if (previousFootnoteCitation == null || previousReference == null || previousFootnoteIndex == null) return false;

         if (previousReference != currentReference) return false;

         FootnoteCitation secondPreviousFootnoteCitation = previousFootnoteCitation.PreviousFootnoteCitation;
         int secondPreviousFootnoteIndex = secondPreviousFootnoteCitation != null ? secondPreviousFootnoteCitation.FootnoteIndex : 0;

         bool predecessorStandsAlone = previousFootnoteIndex != currentFootnoteIndex && (secondPreviousFootnoteIndex == 0 || secondPreviousFootnoteIndex != previousFootnoteIndex);
         if (!predecessorStandsAlone) return false;

         bool isPageRangeIdentical = IgnoreQuotationPageRange || IsPageRangeIdentical(currentFootnoteCitation.PageRange, previousFootnoteCitation.PageRange);
         if (!isPageRangeIdentical) return false;

         return true;
      }
      private bool IsPageRangeIdentical(PageRange pageRangeX, PageRange pageRangeY)
      {
         if (pageRangeX == null)
         {
            if (pageRangeY == null)
            {
             return true;
            }
            else
            {
             return false;
            }
         }
         else
         {
            if (pageRangeY == null)
            {
             return false;
            }
            else
            {
             return pageRangeX == pageRangeY;
            }
         }
      }
    }
   }

Der Sortiercode sortiert in fünf Stufen.

Stufe 1) Leer.

Stufe 2)Flls es sich um eine Gerichtsentscheidung handelt nach Jurisdiktion, anderenfalls nach Autor, oder, wenn in Freitextfeld 1 "usetitle" steht, dann nach Kurztitel.

Stufe 3) Falls Gerichtsentscheidung und deutsche, französische oder niederländische Entscheidung, dann nach Position des Gerichts in der Gerichtshierarchie, anderenfalls nach Titel.

Stufe 4) Datum

Stufe 5) Ranking der Fundstelle (damit etwa BGHZ vor NJW sortiert wird, falls für einen Beitrag mehrere Fundstellen angegeben werden)

Wenn man nur deutsche Entscheidungen hat, ist das mit der Jurisdiktion im Prinzip egal, aber man kann das wie hier erfassen:

/00a6e292946addf4122d663955d46a60

Als Eintrag werden "D" (für Bundesgerichte), "Br. Z." (für Gerichte der Britischen Zone), und "BB", "BE", "BW", "BY", "HB", "HE", "HH", "MV", "NI", "NW", "RP", "SH", "SN", "SL", "ST", oder "TH" (die gängigen BL-Abkürzungen halt), erkannt

Foto
1

Ok, wow, vielen vielen Dank für die Mühe! Probiere ich gleich aus!

Foto
1

Um ehrlich zu sein war das drei Viertel Recycling meines eigenen Sortierskripts für das Literaturverzeichnis, aber wenn es nicht das gewünschte macht, kann man noch feintunen.

Foto
1

Also ich hab das bei "programmieren" hochgeladen, das stimmt schon, oder? Weil es macht bisher überhaupt nichts ;-). Wenn es nicht geht, mache ich es einfach per Hand, das ist auch nicht so schlimm.

Foto
1

Bei den Mehrfachnachweisen, und da dann drauf achten, dass es die richtige Art von Mehrfachnachweis ist, entweder Fußnote oder In-Text (es gibt die Auswahl der Sortierung zweimal untereinander, je nach Mehrfachnachweisart).

Foto
1

Danke, ok, jetzt hat eine Sortierung stattgefunden, aber irgendwie durcheinander :-). Ich wolle die Rspr. ja von neu nach alt sortieren. Wie gesagt, es ist aber nicht so schlimm, kann das genauso von Hand machen.

Foto
1

Hmm, da sind ein paar Sachen schief gelaufen. Erstens habe ich das falsche Sortierskript gepostet. Das war das Hauptproblem.

Hier der Link zum richtigen: https://github.com/Jay-Squared/CitaviPlaceholderScripts/blob/master/SortMultipleQuotationsByAuthorTitleOrCase.cs

Zweitens enthält der Mehrfachnachweis Gerichtsentscheidungen und andere Fundstellen. Der Code hat aber wie beschrieben kein Sortierkriterium, um dazwischen zu entscheiden. Man müsste sich da für eine Logik entscheiden, in der entweder alle Gerichtsentscheidungen zuerst kommen, oder zuletzt, oder stupide alphabetisch zwischen den Gerichtsentscheidungen Aufsätze stehen, oder aber man trennt diese Mehrfachnachweise.

Drittens: die Sortierung nach Datum ist revers alphabetisch, es wird also vorausgesetzt, dass das Datum im Format JJJJ-MM-TT vorliegt.

Wenn das zuviel Aufwand ist, kann ich die manuelle Sortierung nachvollziehen (hab ich auch so gemacht, und ich bin jemand, der seit drei Tagen daran sitzt, mir die Rückverweise im Literaturverzeichnis auf die Seiten der Publikation mit den Zitaten automatisch auszugeben). Als Proof of Concept gibt es meine Sortierlogik auf Github jedenfalls.

Dit Links ist übrigens immer unsortiert. Entscheidend ist, wie unser ehemaliger Altkanzler zu sagen pflegte, was hinten rauskommt, seien es nun blühende Landschaften oder sortierte Mehrfachnachweise.

/089c1b255a030d0d7979c024be3929c9