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.

Zugang zu allen Titeln im Projekt im Komponentenfilter

Fragen zur Bedienung von Citavi 5

Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby jay-squared » 2015-09-16 17:44

Systeminformationen: [ -, -, -, -, -, - ]

Liebes Citavi-Team

Im Anschluss an meine geistigen Erguesse eine Frage: wie erhalte ich denn im Makro Zugang zu einer Liste, welche alle Titel des mit dem Dokument verknuepften Projekts enthaelt? Die Liste muesste ich ja durchgehen, um auf Parallelfundstellen zu ueberpruefen. Naiv wie ich bin, hatte ich gedacht

Code: Select all
Project project = citation.Reference.Project;


bzw. dann

Code: Select all
project.References


wuerde alle Titel des Projektes enthalten (wenn man die Idee einmal hat, finden sich auch weitere Anhaltspunkte fuer die Theorie).

Tatsaechlich enthaelt das aber nur alle Titel, welche ueber WordAddIn im Word-Dokument zitiert werden (getestet, indem ich eine Komponente programmiert habe, welche einfach project.References.Count druckt; der Wert aendert sich nur, wenn ein weiterer Titel erstmalig in das Word-Dokument eingefuehrt wird, und gibt nicht die Anzahl der Titel im verknuepften Projekt wieder), gerade so als ob das Verwenden eines Word-Dokuments dazu fuehrt, dass intern die Titel nicht mehr dem verknuepften Projekt entnommen werden, sondern einem virtuellen Projekt, welches in der Word-Datei angelegt wird, und nur die vom verknuepften Projekt reinzititierten Titel enthaelt.

Beste Gruesse
JJ
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby jay-squared » 2015-09-16 18:29

Es haette im ersten Satz natuerlich heissen muessen: "im Komponentenfilter", nicht: "im Makro".
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby Sebastian Pabel » 2015-09-17 08:41

Hallo, JJ,

die kurze, aber eher unbefriedigende Antwort: Ihr Weg ist richtig, mit dem Word Add-In geht es so nicht.

Etwas ausführlicher:
Da sich das Add-In aus dem Dokument und nicht aus dem Citavi-Projekt bedient, sind dort alle Titel eben alle Titel, die im Dokument sind. Das ist prinzipiell auch richtig so, weil das Dokument auch allein ohne das Citavi-Dokument funktioniert. Schließlich können Sie über Umwandeln > Nachweise in das aktuelle Projekt kopieren ein (bis auf die Zitate und Anhänge) vollständiges Citavi-Projekt aus dem Dokument erzeugen.

Mögliche Lösungen:
Was funktioniert, aber nicht sehr elegant ist, ist folgender Weg. Wandeln Sie die Word-Felder in {Platzhalter} um und formatieren Sie das Dokument. Da das Dokument nun von Citavi und nicht mehr vom Add-In bearbeitet wird, besteht Zugriff auf alle Titel im Projekt.

Alternativ und mit der Konsequenz, dass Sie selbst den Überblick behalten müssen, was wirklich zitiert wurde, können Sie auf einer versteckten Seite im Dokument alle Titel Ihres Projekts mit der Option Quellennachweis > Nicht im Literaturverzeichnis (= /nobib) aufführen. Dann sind sie auch im Dokument verfügbar.

Viele Grüße
Sebastian

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.

Wir sind gespannt auf Ihre Antwort zu unserer Frage des Monats: Wie nutzen Sie die Gruppen-Funktion in Citavi 5?
Sebastian Pabel
Site Admin
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby jay-squared » 2015-09-17 11:30

Hallo Sebastian,

ja, das hatte ich auch schon befuerchtet. Danke fuer die Ideen zur Umgehung des Problems. Ich hatte auch schon an Variante 3 gedacht: ich erstelle eine Vorlage mit der Bedingung "Option 2", welche leer ist, um so beim ersten Mal, wenn ich einen Nachweis auf eine Gerichtsentscheidung einfuege, alle Parallelfundstellen als unsichtbare Blindzitate, damit diese dem Dokument zur Verfuegung stehen, einfuegen zu koennen. Ist aber letztlich ihrer Variante mit der Extra-Seite sehr aehnlich. Ich glaube, programmatisch moeglich waere in beiden Varianten auch noch, die Parallfundstellentitel automatisch aus dem Literaturverzeichnis rauszukicken, entweder unelegant, in dem etwa im Notizfeld das Wort "parallel" steht, und diese Titel automatisch gefiltert werden, oder charmanter indem etwa alle Titel im Literaturverzeichnis, welche in bestimmten Feldern (Gericht, Datum, Kurzbeschreibung oder Aktenzeichen) identisch mit einem anderen hoeher sortierten Titel sind, ausgefiltert werden.

Nun wieder meine Grundsatzausfuehrung: dass das Feld "Parallelfundstelle" fuer den Dokumenttyp "Gerichtsentscheidung" eher eine Notloesung in Citavis Datenmodell ist, ist hoffentlich unkontrovers. Ich glaube, eine Erfassung von Parallelfundstellen als Extra-Titel ist die beste Variante. Sie erlaubt eigenstaendige Formatierung, Sortierung, und - und das ist der Vorteil gegenueber einer Variante, welche etwa das Feld "Parallelfundstelle" als Liste erweitert, mit x-beliebig vielen Listenlementen welche sich jeweils aus Jahr, Jahrgang, Nummer, Fundstelle, Seitenbereich zusammensetzen - die Erfassung als eigenstaendige Titel erlaubt, einfach in verschiedenen Publikationen verschiedene Fundstellen der selben Entscheidung als "Leitfundstelle" zu benutzen, und es erlaubt wenn vom Stil wie von mir skizziert unterstuetzt neben der Angabe der Parallelfundstelle auch die Angabe einer Parallelzitatseite. Vollstaendig funktionieren kann das aber nur, wenn Citavi eben die als Parallfundstellen erfassten Titel auch dem Word AddIn zur Verfuegung stellt.

Das koennte geschehen, indem entweder das Word AddIn doch Zugriff auf das eigentliche Projekt enthaelt, was aber vielleicht aus Nutzersicht nicht so gut waere, weil dann eben die Rueckkonvertierbarkeit Word-Dokument zu Projekt nicht mehr gewaehrleistet werden koennte. Oder aber, es wird ein Mechanismus integriert, der als Parallelfundstelle erkannte Titel automatisch dem Dokument hinzufuegt, ohne dass ein Blindzitat notwendig ist. Denkbar waere etwa eine Modifikation des Datenmodells leicht dahin gehend, dass dem Reiter "Zusammenhang" eine Zusammenhangsart "Parallelfundstelle" hinzugefuegt wird (das Problem betrifft ja nicht nur Gerichtsentscheidungen) und das Word AddIn dann automatisch die verknuepften Parallelfundstellen eines Titels beim ersten Nachweis eines Titels in das Dokument ueberfuehrt, auch wenn sie erstmal nur unsichtbar bleiben.

Richtig komfortabel wuerde es, wenn CItavi einen darauf hinweist, dass bei zwei Titeln, welche als Parallelfundstelle erfasst werden, bestimmte Felder identisch sein muessen (etwa Autor, Gericht, Datum, Titel, Kurzbeschreibung, Titel), um einen Gleichlauf zwischen zwei als Parallelfundstellen verknuepften Titel zu gewaehrleisten.

Soweit meine Gedanken zum Problem "Parallelfundstellen". Wahrscheinlich perspektivisch eher etwas fuer die lange Bank.

Beste Gruesse
JJ
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby Sebastian Pabel » 2015-09-17 12:29

Hallo, JJ,

ich habe Ihren Vorschlag für unsere Entwickler erfasst. Ihre Vermutung ist aber richtig: Das ist etwas für die lange Bank, denn die Eingriffe in das Datenbankschema sind groß. Trotzdem vielen Dank für Ihre Anregungen, auch wenn nicht nicht versprechen kann, dass wir sie (bald) umsetzen können.

Viele Grüße
Sebastian

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.

Wir sind gespannt auf Ihre Antwort zu unserer Frage des Monats: Wie nutzen Sie die Gruppen-Funktion in Citavi 5?
Sebastian Pabel
Site Admin
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby jay-squared » 2015-09-18 10:33

Hallo Sebastian,

ich bin ja aus Prinzip faul. Also dachte ich mir: wenn ich die Parallelfundstellen schon manuell dem Word-Dokument hinzufuegen muss, will ich nicht noch die Extra-Arbeit haben, eine Option auszuwaehlen, und auszuschalten, dass der Titel im Literaturverzeichnis erscheint. Also dachte ich, ich mache eine Vorlage, welche eben testet, ob ein Titel nur die Parallelfundstelle des vorherigen Titels in der gleichen Fussnote ist, die Vorlage bleibt dann aber leer. Dann fuege ich beim ersten Zitat einfach alle Parallelfundstellen ein, und habe sie so im Dokument. Das erspart mir schonmal die Sache mit der Option, oder die "unsichtbare Seite" am Schluss. Aber so faul wie ich bin, will ich ja auch das Nicht-Erscheinen im Literaturverzeichnis automatisieren. Filter am Schluss war mir jetzt zu kompliziert, also dachte ich, ich mache einfach meine Vorlage so, dass sie die nobib-Option mitsetzt. Also so was:

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;
                  
            FootnoteCitation footnoteCitation = citation as FootnoteCitation;
         PlaceholderCitation thisPlaceholderCitation = citation as PlaceholderCitation;
            if (footnoteCitation == null) return false;
         
            FootnoteCitation previousFootnoteCitation  = footnoteCitation.PreviousFootnoteCitation;
            if (previousFootnoteCitation == null) return false;
     
           if (footnoteCitation.FootnoteIndex != previousFootnoteCitation.FootnoteIndex) return false;         
         
            if (!citation.Reference.Organizations.SequenceEqual(previousFootnoteCitation.Reference.Organizations)) return false;
         
            if (footnoteCitation.Reference.Date != previousFootnoteCitation.Reference.Date) return false;
         
         if (footnoteCitation.Reference.Title != previousFootnoteCitation.Reference.Title) return false;
         
         thisPlaceholderCitation.NoBib = true;

         return true;
         
      }
   }
}


Das geht aber nicht, da die Eigenschaft NoBib nur "read only" ist. Gehe ich richtig in der Annahme, dass es somit vor dem Literaturverzeichnis keine Moeglichkeit gibt, einen Eintrag automatisch aus dem Literaturverzeichnis zu entfernen, also keinen Kontext, in dem NoBib nicht read only ist?

Beste Gruesse
JJ
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby Sebastian Pabel » 2015-09-18 11:46

Hallo, JJ,

soweit ich das überblicken kann, kann dieses Vorgehen tatsächlich nicht funktionieren, weil /nobib keine Eigenschaft der Zitationsstilausgabe ist, sondern des konkreten Nachweises, also des Feld- bzw. Platzhalterinhalts, der wiederum nicht durch den Zitationsstil bearbeitet werden kann.

Eine wirklich gute Lösung sehe ich leider für das Problem nicht. Eventuell könnte eine leere Standardvorlage für die Gerichtsentscheidung und eine zweite, die auf etwas prüft, ob es sich um die Hauptfundstelle handelt, funktionieren. Getestet habe ich das aber nicht und es besteht generell die Gefahr, dass bei zunehmender Komplexität der Zitationsstil sehr auf die Performanz schlägt und auch unerwartete und schwer zu lokalisierende Nebeneffekte auftreten.

Viele Grüße
Sebastian

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.

Wir sind gespannt auf Ihre Antwort zu unserer Frage des Monats: Wie nutzen Sie die Gruppen-Funktion in Citavi 5?
Sebastian Pabel
Site Admin
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby jay-squared » 2015-11-28 17:00

Lieber Herr Pabel,

das mit der Komplexität stimmt sicherlich, andererseits ist das ganze ja auch kein Selbstzweck, sondern es muss immer mindestens so komplex sein, dass die Aufgabe erfüllt wird. Da werfen juristische Zitationsstile und Parallelfundstellen leider ganz schöne Komplexitäten auf. Ich habe das Problem jetzt so gelöst, dass bei der Sortierung des Literaturverzeichnisses geprüft wird, ob die aktuelle BibliographyCitation in bestimmten Schlüsselfeldern mit der vorherigen übereinstimm. Wenn ja, wird sie halt nicht gedruckt, nobib wird in dem Kontext getriggert. Innerhalb meines eigenen Sortiermakros, welches zuerst alle Gerichtsentscheidungen nach Jurisdiktion sortiert, sieht das dann so aus:

Code: Select all
         else if ((xIsCourtDecision && yIsCourtDecision) || (xIsStatuteOrRegulation && yIsStatuteOrRegulation))
         {            
            var xJurisdictionRanking = GetJurisdictionRanking(xReference.CustomField4);
            var yJurisdictionRanking = GetJurisdictionRanking(yReference.CustomField4);
            
            if (xJurisdictionRanking == yJurisdictionRanking)
            {
               // Here we look at the case that a bibliography citation is the same decision as the preceding bibliography citation (parallel reporter)
               if (xIsCourtDecision &&
                  yIsCourtDecision &&
                  xReference.Organizations.SequenceEqual(yReference.Organizations) &&
                  xReference.Date == yReference.Date &&
                  xReference.Title == yReference.Title)
               {                  
                  var xPeriodicalRanking = GetPeriodicalRanking(x.Reference);
                  var yPeriodicalRanking = GetPeriodicalRanking(y.Reference);
                  
                  //If two periodicals are of equal ranking, we use the title of the periodical to break the tie
                  if (xPeriodicalRanking == yPeriodicalRanking)
                  {
                     string xPeriodicalString = string.Empty;
                     string yPeriodicalString = string.Empty;
                     
                     if (!string.IsNullOrEmpty(xReference.Periodical.StandardAbbreviation))
                     {
                        xPeriodicalString += xReference.Periodical.StandardAbbreviation;
                     }
                     else if (!string.IsNullOrEmpty(xReference.Periodical.FullName))
                     {
                        xPeriodicalString += xReference.Periodical.FullName;
                     }                           
                     if (!string.IsNullOrEmpty(yReference.Periodical.StandardAbbreviation))
                     {
                        yPeriodicalString += yReference.Periodical.StandardAbbreviation;
                     }
                     else if (!string.IsNullOrEmpty(yReference.Periodical.FullName))
                     {
                        yPeriodicalString += yReference.Periodical.FullName;
                     }
                     
                     if (xPeriodicalString.CompareTo(yPeriodicalString) < 0) yBibliographyCitation.NoBib = true;
                     if (xPeriodicalString.CompareTo(yPeriodicalString) > 0) xBibliographyCitation.NoBib = true;
                     
                     return xPeriodicalString.CompareTo(yPeriodicalString);
                  }
                  // If both periodicals are ranked differently, we kick out the lower ranked one
                  else
                  {
                     if (xPeriodicalRanking.CompareTo(yPeriodicalRanking) < 0) yBibliographyCitation.NoBib = true;
                     if (xPeriodicalRanking.CompareTo(yPeriodicalRanking) > 0) xBibliographyCitation.NoBib = true;
                     
                     return xPeriodicalRanking.CompareTo(yPeriodicalRanking);
                  }                                    
               }
               // If the citation is not a parallel reporter, we sort by title
               else
               {
                  return x.Reference.Title.CompareTo(y.Reference.Title);
               }
            }
            else
            {
               return xJurisdictionRanking.CompareTo(yJurisdictionRanking);
            }   
            
         }


ür den Kontext: Die Sortierung der Periodicals habe ich an anderer Stelle dargestellt, die Sortierung nach Jurisdiktion ist auch etwas komplexer, da etwa alle amerikanischen, oder alle kanadischen Entscheidungen zusammen sortiert werden sollen:

Code: Select all
          private string GetJurisdictionRanking(string jurisdiction)
          {
             if (string.IsNullOrEmpty(jurisdiction)) return "zzz";
             
             List<string> jurisdictionsCanada = new List<string>
                {
                "Can.", "N.L.", "N.B.", "N.S.", "Queb.", "Ont.", "Man.", "Sask.", "Alta.", "B.C.", "Nun.", "N.W.T.", "Yuk."         
             };
             List<string> jurisdictionsGermany = new List<string>
                {
                "D", "BB", "BE", "BW", "BY", "HB", "HE", "HH", "MV", "NI", "NW", "RP", "SH", "SA", "SL", "ST", "TH"         
             };
             List<string> jurisdictionsUK = new List<string>
                {
                "UK", "Engl. and W.", "North. I.", "Scot."     
             };                 
             List<string> jurisdictionsUSA = new List<string>
                {
                "USA",
               
                "1st Cir", "2nd Cir", "3d Cir", "4th Cir", "5th Cir", "6th Cir", "7th Cir", "8 Cir", "9 Cir", "10th Cir", "Fed. Cir",
               
                "N.D. Ala.", "M.D. Ala.", "S.D. Ala.", "D. Alaska", "D. Ariz.", "E.D. Ark.", "W.D. Ark.", "C.D. Cal.", "E.D. Cal.", "N.D. Cal.", "S.D. Cal.",
                "D. Col.", "D. Conn.", "D. Del.", "D.D.C.", "N.D. Fla.", "M.D. Fla.", "S.D. Fla.", "N.D. Ga.", "M.D. Ga.", "S.D. Ga.", "D. Guam", "D. Haw.",
                "D. Idaho", "N.D. Ill.", "C.D. Ill.", "S.D. Ill.", "N.D. Ind.", "S.D. Ind.", "N.D. Iowa", "S.D. Iowa", "D. Kan.", "E.D. Ky.", "W.D. Ky.",
                "E.D. La.", "M.D. La.", "W.D. La.", "D. Me.", "D. Md.", "D. Mass.", "E.D. Mich.", "W.D. Mich.", "D. Minn.", "N.D. Miss.", "S.D. Miss.",
                "E.D. Mo.", "W.D. Mo.", "D. Mont.", "D. Neb.", "D. Nev.", "D.N.H.", "D.N.J.", "D.N.M.", "E.D.N.Y", "N.D.N.Y", "S.D.N.Y.", "W.D.N.Y",
                "E.D.N.C.", "M.D.N.C.", "W.D.N.C.", "D.N.D.", "D.N. Mar. I.", "N.D. Ohio", "S.D. Ohio", "E.D. Okla.", "N.D. Okla.", "W.D. Okla.",
                "D. Ore.", "E.D. Pa.", "M.D. Pa.", "W.D. Pa.", "D.P.R.", "D.R.I.", "D.S.C.", "D.S.D.", "E.D. Tenn.", "M.D. Tenn.", "W.D. Tenn.", "E.D. Tex.",
                "N.D. Tex.", "S.D. Tex.", "W.D. Tex.", "D. Utah", "D. Vt.", "D.V.I.", "E.D. Va.", "W.D. Va.", "E.D. Wash.", "W.D. Wash.", "N.D. W. Va.",
                "S.D. W. Va.", "E.D. Wis.", "W.D. Wis.", "D. Wyo.",
               
                "Ala.", "Alaska", "Ariz.", "Ark.", "Cal.", "Col.", "Conn.", "Del.", "Fla.", "Ga.", "Guam", "Haw.", "Idaho", "Ill.", "Ind.", "Iowa",
                "Kan.", " Ky.", "La.", "Me.", "Md.", "Mass.", "Mich.", "Minn.", "Miss.", "Mo.", "Mont.", "Neb.", "Nev.", "N.H.", "N.J.", "N.M.", "N.Y",
                "N.C.", "N.D.", "Mar. I.", "Ohio", "Okla.", "Ore.", "Pa.", "Pa.", "Pa.", "P.R.", "R.I.", "S.C.", "S.D.", "Tenn.", "Tex.", "Utah",
                "Vt.", "V.I.", "Va.", "Wash.", "W. Va.", "Wis.", "Wyo."           
             };
             
             bool Germany = jurisdictionsGermany.Any(jurisdiction.Equals);
             bool USA = jurisdictionsUSA.Any(jurisdiction.Contains); // Nicht Equals, da in den USA mehrere Staaten selber wieder in verschiedene Unterjurisdiktionen aufgeteilt sind
             bool UK = jurisdictionsUK.Any(jurisdiction.Equals);
             bool Canada = jurisdictionsCanada.Any(jurisdiction.Equals);
             
             if (UK) return "0";
             else if (Canada) return "Canada";
             else if (Germany) return "Germany";
             else if (USA) return "USA";
             else return jurisdiction;     
          }
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

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

Der Vollstaendigkeit halber trage ich hier nach, dass es einen weiteren Anwendungsfall gibt, in dem die beschraenkte Verfuegbarkeit der Projektdaten im Word-AddIn Probleme macht. Da waere das Ganze wirklich viel einfacher, wenn es eine Zusammenhangsart "Parallelfundstelle" gaebe, und diese EntityLinks irgendwo auch im WordAddIn funktionieren, nicht nur mit Platzhaltern.
jay-squared
Citavi Expert
 

Re: Zugang zu allen Titeln im Projekt im Komponentenfilter

Postby Sebastian Pabel » 2016-03-01 08:42

Hallo, JJ,

ich habe das nun nochmal als Wunsch unter der Nummer 18807 erfasst, um dem nochmal etwas Nachdruck zu verleihen.

Viele Grüße
Sebastian

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.
Sebastian Pabel
Site Admin
 


Return to Citavi 5 Support (Deutsch)