This forum is read-only - Please use our new Citavi Forum instead.
Dieses Forum dient nur zur Recherche - Bitte nutzen Sie das neue Citavi Forum für Ihre Fragen.

Erneute Veröffentlichungen im Literaturverzeichnis ergänzen

Fragen zur Bedienung von Citavi 5

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby jay-squared » 2016-02-20 15:48

Aber sie nutzen schon das Word-AddIn zur Erstellung des Literaturverzeichnisses, oder? (Also machen nicht das hier) Ich habe mich naemlich schon ein bisschen gefragt, wie sie vorher die Gruppierung hingekriegt haben... ansonsten kann ich auch nicht mehr viel helfen, ohne ein paar Beispiele zu sehen. Ich hab diesbezueglich eine Nachricht an Sie geschickt.
jay-squared
Citavi Expert
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby sandra_wirth » 2016-02-20 16:16

Vielleicht liegt da der Fehler, denn genau das habe ich nicht gemacht. Sprich ich habe das Literaturverzeichnis in Citavi erstellen lassen (nicht über Word).
sandra_wirth
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby sandra_wirth » 2016-02-20 16:29

... allderings dürfte das ja der einzig gängige Weg sein, da ich nicht alle Titel (zumal ja doppelt erschienen) aus dem Projekt im Text zitiere, aber alle am Ende im Literaturverzeichnis haben möchte (das dann eben auf diese Art sortiert ist).
sandra_wirth
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby jay-squared » 2016-02-20 16:46

Liebe Frau Wirth,

wieder ein bisschen mehr-Aufwand, ich gestehe es ein, aber: Sie koennen bei den Optionen des Nachweises im Word-AddIn auswaehlen, dass der Titel nur im Literaturverzeichnis, nicht aber im Text erscheinen soll. So koennen Sie erreichen, dass alle Parallelfundstellen im Literaturverzeichnis erscheinen, selbst wenn Sie nicht alle zitieren. Das laesst sich halt leider nicht automatisieren, da das Word-AddIn nicht auf alle Titel im Projekt Zugriff hat, sondern nur die, die der User dem Dokument hinzufuegt. Ist nicht gerade einfach, aber das habe ich bereits an anderer Stelle angemerkt.

Herzliche Gruesse
JJ
jay-squared
Citavi Expert
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby sandra_wirth » 2016-02-20 16:51

Also ist es grundsätzlich nicht möglich im Citavi selbst eine gruppierte Literaturliste ausgeben zu lassen, die den Sotzieranforderungen entspricht??
Denn diese Liste mit copy+paste im Word-Dokument einzufügen ginge im Zweifelfall schneller...
sandra_wirth
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby jay-squared » 2016-02-20 16:59

Liebe Frau Wirth,

offenbar nein, denn "Innerhalb der Gruppen sind die Einträge alphabetisch sortiert."

Um das manuelle Hinzufuegen der Titel zum Projekt kommen Sie wohl nich umher. Und nur der Vollstaendigkeit halber weise ich jetzt schonmal darauf hin, dass es noch das Folgeproblem "Zwischenüberschriften im Literaturverzeichnis" geben wird, da sie vermutlich vor jeder Gruppe eine Ueberschrift haben wollen.

Wenn ich noch mal zusammenfassen darf, eher fuer das Citavi-Team: das Ganze waere viel einfacher automatisierbar, wenn es a) eine Zusammenhangsart "Parallelfundstelle" fuer Titel gaebe, b) das Word-AddIn auf alle Daten des Projektes Zugriff haette, und c) die mysterioesen EntityLinks auch im Word-AddIn funktionieren wuerden, dann koennte man sich das ganze Gedoens mit dem Notizfeld und dem Freitext naemlich sparen.
jay-squared
Citavi Expert
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby sandra_wirth » 2016-02-20 17:26

Ach ja herrlich...
Ehrlich gesagt hatte ich citavi gekauft, um mir die Arbeit gerade bei komplexeren Literaturverzeichnissen zu erleichtern. Die vielen Mühen die vor allem Sie Herr JJ hatten und die ich mit Herumbasteln vergeudet habe, waren die 119€ wirklich nicht wert! Das solch eine (wie ich finde gar nicht so abwegige) Sache de facto gar nicht umsetzbar ist, schockiert mich tatsächlich...
Mit einer simplen Textdatei im Word wäre es weniger aufwendig und vor allem kostenlos gewesen - aber schlauer ist man bekanntlich immer erst hinterher.
sandra_wirth
 

Zusammenfassung des Problems

Postby Bebbi » 2016-02-20 23:56

Hallo,

Sie wollen also eine Literaturliste, wie man sie in Citavi erstellen kann, in der alle Titel in dem Citavi-Projekt sind anstelle des LiteraturVZ (=alle via Word-Add-in eingefügte Literaturangaben) als Quellenverzeichnis in Ihrer Arbeit haben, ja? Und da sollen Zweitveröffentlichungen der Erstveröffentlichung zugeordnet sein?

Grüße

Bebbi
Bebbi
Citavi Expert
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby jay-squared » 2016-02-21 10:05

Hmm,

ich fühle mich da auch gezwungen, ein bißchen was zu Citavis Ehrenrettung zu sagen, bevor Bebbi mit der ganz einfachen Lösung kommt, die ich übersehen habe.

Ich finde die Aufgabenstellung jetzt nicht ganz trivial, aber es geht immerhin. Ich glaube, keine andere kommerzielle Zitiersoftware wäre so kustomisierbar, dass sich selbst so komplexe Wünsche vom Nutzer selber umsetzen lassen.

So, nach der Vorrede, meine drei-vier Schritte, wie ich das ganze umsetzen würde.

1. In allen Neuveröffentlichungen im Freitext 3 Neuveröffentlichung schreiben und in allen Veröffentlichungen, welche zusammengehören (also Erstveröffentlichung und dazugehörige Neuveröffentlichungen) eine eindeutige ID in das Notizfeld schreiben. In Ihrem Beispielprojekt, das Sie mir dankenswerterweise geschickt hatten, fehlte es am Letzteren, aber Citavi kann ja nicht erraten, welche Neuveröffentlichung zu welcher Erstveröffentlichung gehört.

2. Eine Sortierlogik programmieren, welche zuerst nach Gruppe, dann nach Autor, dann nach Jahr, dann nach Titel sortiert, und dabei für Neuveröffentlichungen auf Autor, Jahr und Titel der Erstveröffentlichung zugreift, gleichzeitig aber sicherstellt, dass die Erstveröffentlichung zuerst kommt, und die sich daran anschließenden Neuveröffentlichungen untereinander nach ihrem jeweiligen Jahr und Titel sortiert werden.


Code: Select all
using System;
using System.Linq;
using System.Collections;
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 xBibliographyCitation = x as BibliographyCitation;
         var yBibliographyCitation = y as BibliographyCitation;

         if (xBibliographyCitation == null || yBibliographyCitation == null) return 0;
         var xReference = xBibliographyCitation.Reference;
         var yReference = yBibliographyCitation.Reference;
         if (xReference == null || yBibliographyCitation.Reference == null) return 0;

         // Let's gather the data for the sort criteria for x

         string xCriterionOne = String.Empty; // Group
         string xCriterionTwo = String.Empty; // Author
         string xCriterionThree = String.Empty; // Year, depending on first publication
         string xCriterionFour = String.Empty; // Title, depending on first publication
         int xCriterionFive = new Int16(); // Making sure the first publication comes first, even where an alphanumerically higher re-publication came in the same year
         string xCriterionSix = String.Empty; // Year, independent
         string xCriterionSeven = String.Empty; // Title, independent
         
         // First let's assign values to those criteria that do not - necessarily - depend on x's relationship to a main title
         
         xCriterionFive = 0;
         xCriterionSix = xReference.YearResolved;
         xCriterionSeven = xReference.Title;

         //  We then see if xReference is the child of a main reference
               
         if (!string.IsNullOrEmpty(xReference.Notes) && xReference.CustomField3.Equals("Neuveröffentlichung"))
         {
            foreach(Reference reference in xReference.Project.References)
            {
               if(reference.Notes.Contains(xReference.Notes) && (!reference.CustomField3.Equals("Neuveröffentlichung")))
                  {
                     xReference = reference;
                     xCriterionFive = 1;
                  }
            }
         }            

         // Now we define the primary sort criteria for x that depend on x's relationship to a main title

         xCriterionOne = xReference.Groups.ToString();

         // If there is no author, we use title instead
         if (xReference.AuthorsOrEditorsOrOrganizations.Count != 0)
         {
            xCriterionTwo = xReference.AuthorsOrEditorsOrOrganizations.ToString();
         }
         else
         {
            xCriterionTwo = xReference.Title;
         }         
         xCriterionThree = xReference.YearResolved;
         xCriterionFour = xReference.Title;

         // Now we do the same for y

         string yCriterionOne = String.Empty;
         string yCriterionTwo = String.Empty;
         string yCriterionThree = String.Empty;
         string yCriterionFour = String.Empty;
         int yCriterionFive = new Int16();
         string yCriterionSix = String.Empty; // Year
         string yCriterionSeven = String.Empty; // Title
         
         yCriterionFive = 0;
         yCriterionSix = yReference.YearResolved;
         yCriterionSeven = yReference.Title;

         if (!string.IsNullOrEmpty(yReference.Notes) && yReference.CustomField3.Equals("Neuveröffentlichung"))
         {
            foreach(Reference reference in yReference.Project.References)
            {
               if(reference.Notes.Contains(yReference.Notes) && (!reference.CustomField3.Equals("Neuveröffentlichung")))
                  {
                     yReference = reference;
                     yCriterionFive = 1;
                  }
            }
         }   

         yCriterionOne = yReference.Groups.ToString();

         if (yReference.AuthorsOrEditorsOrOrganizations.Count != 0)
         {
            yCriterionTwo = yReference.AuthorsOrEditorsOrOrganizations.ToString();
         }
         else
         {
            yCriterionTwo = yReference.Title;
         }
         yCriterionThree = yReference.YearResolved;   
         yCriterionFour = yReference.Title;         

         // And now we simply compare each criteria, starting with criterion one, provided its values differ
         // between x and y, going on to criterion two, provided its values differ between x and y, and so on.

         if (xCriterionOne != yCriterionOne)
         {
            return xCriterionOne.CompareTo(yCriterionOne);
         }
         else if (xCriterionTwo != yCriterionTwo)
         {
            return xCriterionTwo.CompareTo(yCriterionTwo);
         }
         else if (xCriterionThree != yCriterionThree)
         {
            return xCriterionThree.CompareTo(yCriterionThree);
         }
         else if (xCriterionFour != yCriterionFour)
         {
            return xCriterionFour.CompareTo(yCriterionFour);
         }
         else if (xCriterionFive != yCriterionFive)
         {
            return xCriterionFive.CompareTo(yCriterionFive);
         }
         else if (xCriterionSix != yCriterionSix)
         {
            return xCriterionSix.CompareTo(yCriterionSix);
         }
         else if (xCriterionSeven != yCriterionSeven)
         {
            return xCriterionSeven.CompareTo(yCriterionSeven);
         }
         else
         {
            return 0;
         }      
      }
   }
}


3. Für alle Dokumententypen eine Vorlage der Bedinung "ist Neuveröffentlichung" erstellen, die die Neuvorlage nach Wunsch hervorhebt. Code für die Vorlage:

Code: Select all
using System;
using System.Linq;
using System.Collections.Generic;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Collections;

namespace SwissAcademic.Citavi.Citations
{
   public class CustomTemplateCondition
      :
      ITemplateConditionMacro
   {
      public bool IsTemplateForReference(ConditionalTemplate template, Citation citation)
      {
         if (citation == null) return false;
         if (citation.Reference == null) return false;
         
         if (citation.Reference.CustomField3.Equals("Neuveröffentlichung"))
         {
            return true;
         }
         return false;
      }
   }
}


4, Komponente erstellen und in alle LV-Vorlagen einfügen, welche die Zwischenüberschriften für die Gruppen erstellt. Die Komponente enthält nur ein Textelement, bei dem egal ist, wie der Text lautet. Der komplette Inhalt wird nämlich per Komponentenfilter erzeugt. Die Komponente erstellt dann eine Zwischenüberschrift, wenn es der erste Titel im LV ist, oder wenn die Gruppe vom Vorgänger verschieden ist.

Code: Select all
   using System;
   using System.Linq;
   using System.Collections.Generic;
   using SwissAcademic.Citavi;
   using SwissAcademic.Citavi.Metadata;
   using SwissAcademic.Collections;
   using SwissAcademic.Drawing;

   namespace SwissAcademic.Citavi.Citations
   {
     public class ComponentPartFilter
       :
       IComponentPartFilter
     {
       public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
       {

         handled = true;
         
         if (citation == null) return null;
         if (citation as BibliographyCitation == null) return null;
         if (citation.Reference == null) return null;         

         Reference xReference = citation.Reference;
         string aString = "";
         var fontStyle = SwissAcademic.Drawing.FontStyle.Neutral;
         
         bool needsNoCategoryHeading = false;
         
         if(citation.PreviousCitation != null && !string.IsNullOrEmpty(citation.Reference.Notes) && string.Equals(citation.Reference.Notes, citation.PreviousCitation.Reference.Notes))
         {
            needsNoCategoryHeading = true;
         }
         
         bool continueLoop = true;
         var currentCitation = citation;
         while(continueLoop)
         {         
    
            if (currentCitation.PreviousCitation == null) break;
            
            var previousCitation = currentCitation.PreviousCitation;
             
            if (string.IsNullOrEmpty(previousCitation.Reference.Notes) || (previousCitation.PreviousCitation != null && !string.Equals(previousCitation.Reference.Notes, previousCitation.PreviousCitation.Reference.Notes)))
            {
              if(previousCitation.Reference.Groups.ToString() == xReference.Groups.ToString()) needsNoCategoryHeading = true;
              break;
            }         
            if (currentCitation.PreviousCitation == null) break;         
            currentCitation = previousCitation;
         }
         
         if (citation.PreviousCitation == null)
         {
            aString = xReference.Groups.ToString() + "\r";
            fontStyle = SwissAcademic.Drawing.FontStyle.Bold;
         }
         else if (xReference.Groups.ToString() != citation.PreviousCitation.Reference.Groups.ToString() && !needsNoCategoryHeading)
            {
            aString = xReference.Groups.ToString() + "\r";
            fontStyle = SwissAcademic.Drawing.FontStyle.Bold;
         }
               
         var output = new TextUnitCollection();
         var text = new LiteralTextUnit(aString);
         text.FontStyle = fontStyle;
         output.Add(text);      
         return output;   
       }
     }
   }


5. Einfach alle Neuveröffentlichungen als Blindzitate im Text irgendwo einfügen, vielleicht einfach in der letzten Zeile. Das ist zwar unelegant, und könnte meiner Ansicht nach einfacher sein, aber so komplex ist das ja auch nicht, wenn ich einfach in Citavi alle NVs in einer Gruppe "NV" gespeichert habe, klicke ich da vielleicht ein paar Mal, aber dann ist fertig. So kann das dann aussehen. (Man beachte, dass der Cursor genau an der Stelle des Blindzitats ist, anhand dessen ich die NV dem WordAddIn bekannt gemacht habe).

Capture.PNG


Im Vergleich zur Textarbeit habe ich mir die komplette manuelle Sortierung erspart, und weiß, daß ich stringent zitiert habe. Darüber hinaus hat Citavi ja noch ein paar andere Features, die vielleicht auch den ein oder anderen Euro wert gewesen sein mögen.
jay-squared
Citavi Expert
 

Re: Erneute Veröffentlichungen im Literaturverzeichnis ergän

Postby sandra_wirth » 2016-02-22 11:18

Hallo!
Also nehmen wir mal an, ich möchte aus dem ca. 600 Titel umfassenden Projekt "einfach nur" ein Literaturverzeichnis erstellen/ausdrucken, das die Neuveröffentlichungen unter die Originale ordnet: Ich habe richtig verstanden, dass das NICHT möglich ist!? Bzw. man müsste alle 600 Titel einzeln anklicken und als "Blindzitate" in ein Word-Dokument einfügen (und obendrei noch die Gruppentitel manuell dazu basteln)?

Eine ID hatte ich übrigens vergeben - nur nicht im Notizfeld, sondern wie geschrieben im Freitextfeld 4. Bevor es hieran scheitert: sollte es besser eine Zahl sein (in meinem Fall sind es Wortgruppen)?
sandra_wirth
 

PreviousNext

Return to Citavi 5 Support (Deutsch)