Page 1 of 1

grafische Darstellung der Literaturverweise

PostPosted: 2017-05-11 11:51
by dia
Hallo,

ich fände es super, wenn die Literaturverweise im Reiter Zusammenhang grafisch darstellbar wären oder zumindest so exportierbar o.ä.--> Ziel: Mindmap/Übersicht zu den Zusammenhängen/Genese der Paper.

Re: grafische Darstellung der Literaturverweise

PostPosted: 2017-05-11 13:01
by jay-squared
Ich weiß, daß das nur ein Trostpreis ist, aber folgendes Makro kann immerhin alle Querverweise und die Querverweise der Querverweise, etc. als Auswahl erzeugen, so dass man alle Werke, welche aufeinander verweisen in der Auswahl hat. Ist auch schon manchmal praktisch. (Übliche Warnung: Makro ändert nichts am Projekt, aber vor dem ersten Ausführen besser eine Sicherungskopie des Projektes machen, um sicherzugehen)

Code: Select all
using System;
using System.Linq;
using System.ComponentModel;
using System.Collections.Generic;
using System.Windows.Forms;

using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Citavi.Shell;
using SwissAcademic.Collections;

// Implementation of macro editor is preliminary and experimental.
// The Citavi object model is subject to change in future version.

public static class CitaviMacro
{
   public static void Main()
   {
      //ProjectReferenceCollection references = Program.ActiveProjectShell.Project.References;      
      List<Reference> references = Program.ActiveProjectShell.PrimaryMainForm.GetSelectedReferences();
      
      List<Reference> webOfKnowlege = new List<Reference>();
      
      //if we need a ref to the active project
      SwissAcademic.Citavi.Project activeProject = Program.ActiveProjectShell.Project;
      
      List<string> titleList = new List<string>();
         
      foreach (Reference reference in references)
      {
         webOfKnowlege.Add(reference);      
         titleList.Add(reference.ShortTitle);      
         int depthLevel = 0;
         webOfKnowlege = CastWeb(reference, webOfKnowlege, depthLevel);
      }
      
      if(webOfKnowlege.Count > 0)
      {
         string titleString = string.Join(", ", titleList);
         ReferenceFilter filter = new ReferenceFilter(webOfKnowlege, titleString, false);
         Program.ActiveProjectShell.PrimaryMainForm.ReferenceEditorFilterSet.Filters.ReplaceBy(new List<ReferenceFilter> { filter });
      }
   }
   static List<Reference> CastWeb(Reference reference, List<Reference> webOfKnowlege, int depthLevel)
    {
      List<Reference> linkedReferences = new List<Reference>();
      
      foreach (EntityLink entityLink in reference.EntityLinks)
      {
         if (entityLink.Source == reference && entityLink.Indication == EntityLink.ReferenceLinkIndication)
         {
            Reference target = (Reference)entityLink.Target;
            if (target.SequenceNumber != reference.SequenceNumber)
            {
               if (!webOfKnowlege.Any(item => item.SequenceNumber == target.SequenceNumber)) linkedReferences.Add(target);
               if (!webOfKnowlege.Any(item => item.SequenceNumber == target.SequenceNumber)) webOfKnowlege.Add(target);
            }
         }
         if (entityLink.Target == reference && entityLink.Indication == EntityLink.ReferenceLinkIndication)
         {
            Reference source = (Reference)entityLink.Source;
            if (source.SequenceNumber != reference.SequenceNumber)
            {
               if (!webOfKnowlege.Any(item => item.SequenceNumber == source.SequenceNumber)) linkedReferences.Add(source);
               if (!webOfKnowlege.Any(item => item.SequenceNumber == source.SequenceNumber)) webOfKnowlege.Add(source);
            }
         }
      }      
      foreach (Reference linkedReference in linkedReferences)
      {
         if (reference == linkedReference) break;
         CastWeb(linkedReference, webOfKnowlege, depthLevel+1);
      }
      //List<string> output = new List<string>();
      //foreach (Reference linkedReference in linkedReferences) output.Add(linkedReference.Title);         
      //MessageBox.Show(string.Join("\n", output));
      return webOfKnowlege;
   }
}

Re: grafische Darstellung der Literaturverweise

PostPosted: 2017-05-12 07:29
by Jana Votteler
Hallo dia,

vielen Dank für Ihren Verbesserungsvorschlag!

Wir wissen, dass die wechselseitigen Verweise viele Verbesserungspotential haben- u.a. die graphische Darstellung der Verweise.
Dieser Wunsch steht bereits auf unserer internen Wunschliste für unsere Entwickler.

Derzeit liegt allerdings der Fokus der Entwicklung auf Citavi Web, was den größten Teil unserer Ressourcen bindet. Daher ist nicht absehbar, ob bzw. wann wir Ihren Wunsch umsetzen können.

Möglicherweise hilft Ihnen zusätzlich zu JJs Makro auch dieses Makro unserer FAQs.

Viele Grüße
Jana

Wurde Ihre Frage vollständig beantwortet? Bitte klicken Sie auf das grüne Häkchen (= Antwort akzeptieren) oben rechts in meiner Antwort. Andere Forenbenutzer können sich dann leichter orientieren, wenn sie auf der Suche nach einer Lösung sind.