Bestimmte Dokumententypen nicht mit im Literaturverzeichnis ausgeben

Philip S. hinzugefügt 5 Monaten her
beantwortet

Hallo,

es gibt schon ein ähnliches Thema zu dieser Frage, allerdings findet mein Kommentar dort bisher keine Beachtung: Titel eines bestimmten Dokumententyps nicht in das Literaturverzeichnis aufnehmen

Peter berichtet dort von zwei Möglichkeiten das Thema zu lösen: a) mit einem gruppierten Literaturverzeichnis und b) mit einem integrierten Skrip im Zitationsstil.

Die Option (a) geht zwar, muss aber in jedem neuen Projekt angepasst werden bzw. als Gruppierungsdefinition importiert werden. Eleganter fände ich es, wenn diese Anpassung direkt im Zitationsstil liegen würde.

Kann mir einer die Anpassung (Skript) für die direkte Lösung im Zitationsstil liefern?

Vielen Dank im Voraus!


Freundliche Grüße

Philip

Beste Antwort
Foto

Hallo Philipp

Löschen Sie den Programmcode in Ihrem Stil unter Datei > Eigenschaften des Zitationsstils > Literaturverzeichnis > Sortierung > Programmieren. (Screenshot) Fügen Sie stattdessen diesen Code ein: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)
		{
			//First we make sure we are comparing BibliographyCitations only
			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 || yReference == null) return 0;
		
			#region Ausschluss Dokumententypen vom Literaturverzeichnis
			
			//Set the NoBib flag to true for File ("Akte")
			if (xReference.ReferenceType == ReferenceType.File) xBibliographyCitation.NoBib = true;
			if (yReference.ReferenceType == ReferenceType.File) yBibliographyCitation.NoBib = true;
			
			//Set the NoBib flag to true for StatuteOrRegulation ("Gesetz / Verordnung")
			if (xReference.ReferenceType == ReferenceType.StatuteOrRegulation) xBibliographyCitation.NoBib = true;
			if (yReference.ReferenceType == ReferenceType.StatuteOrRegulation) yBibliographyCitation.NoBib = true;
			

			
			#endregion
			
		
			Template xTemplate = xBibliographyCitation.Template;
			Template yTemplate = yBibliographyCitation.Template;
			if (xTemplate == null || xTemplate.ComponentParts == null || !xTemplate.ComponentParts.Any()) return 0;
			if (yTemplate == null || yTemplate.ComponentParts == null || !yTemplate.ComponentParts.Any()) return 0;
			
			ComponentPart xFirstComponentPart = xTemplate.ComponentParts.FirstOrDefault();
			ComponentPart yFirstComponentPart = yTemplate.ComponentParts.FirstOrDefault();
			if (xFirstComponentPart == null || yFirstComponentPart == null) return 0;
			
			IEnumerable<ITextUnit> xOutput = xFirstComponentPart.GetTextUnits(xBibliographyCitation, xTemplate);
			IEnumerable<ITextUnit> yOutput = yFirstComponentPart.GetTextUnits(yBibliographyCitation, yTemplate);
			if (xOutput == null || !xOutput.Any()) xOutput = xBibliographyCitation.GetTextUnits();
			if (yOutput == null || !yOutput.Any()) yOutput = yBibliographyCitation.GetTextUnits();
			
			if (xOutput == null || !xOutput.Any()) return 0;
			if (yOutput == null || !yOutput.Any()) return 0;
			
			
			string xOutputString = xOutput.ToString();
			string yOutputString = yOutput.ToString();
				
			int firstResult = xOutputString.CompareTo(yOutputString);
			if (firstResult != 0) return firstResult;
			
			var yearTitleVolumeSortDescriptors = new List<PropertySortDescriptor<Reference>>();
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Title));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.YearResolved));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Volume));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Number));
			var yearTitleVolumeComparer = new CitationComparer(yearTitleVolumeSortDescriptors);
			
			return yearTitleVolumeComparer.Compare(xBibliographyCitation, yBibliographyCitation);
		}
	}
}

Kommentare (11)

Foto
1

Hallo Philip

Entschuldigen Sie, dass Ihr Kommentar ohne Reaktion blieb.

Möchten Sie diese Dokumententypen im Literaturverzeichnis unterdrücken?

  • Beitrag im Gesetzeskommentar
  • Sammelwerk
  • Gerichtsentscheidung

Freundliche Grüsse

Peter

Foto
1

Hallo Peter,

konkret für meinen Zitationsstil wären es folgende Dokumententypen:

  • Akte
  • Gesetz / Verordnung im Sammelwerk
  • Gesetz / Verordnung in Zeitschrift

Freundliche Grüße

Philip

Foto
1

Hallo Philipp

Löschen Sie den Programmcode in Ihrem Stil unter Datei > Eigenschaften des Zitationsstils > Literaturverzeichnis > Sortierung > Programmieren. (Screenshot) Fügen Sie stattdessen diesen Code ein: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)
		{
			//First we make sure we are comparing BibliographyCitations only
			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 || yReference == null) return 0;
		
			#region Ausschluss Dokumententypen vom Literaturverzeichnis
			
			//Set the NoBib flag to true for File ("Akte")
			if (xReference.ReferenceType == ReferenceType.File) xBibliographyCitation.NoBib = true;
			if (yReference.ReferenceType == ReferenceType.File) yBibliographyCitation.NoBib = true;
			
			//Set the NoBib flag to true for StatuteOrRegulation ("Gesetz / Verordnung")
			if (xReference.ReferenceType == ReferenceType.StatuteOrRegulation) xBibliographyCitation.NoBib = true;
			if (yReference.ReferenceType == ReferenceType.StatuteOrRegulation) yBibliographyCitation.NoBib = true;
			

			
			#endregion
			
		
			Template xTemplate = xBibliographyCitation.Template;
			Template yTemplate = yBibliographyCitation.Template;
			if (xTemplate == null || xTemplate.ComponentParts == null || !xTemplate.ComponentParts.Any()) return 0;
			if (yTemplate == null || yTemplate.ComponentParts == null || !yTemplate.ComponentParts.Any()) return 0;
			
			ComponentPart xFirstComponentPart = xTemplate.ComponentParts.FirstOrDefault();
			ComponentPart yFirstComponentPart = yTemplate.ComponentParts.FirstOrDefault();
			if (xFirstComponentPart == null || yFirstComponentPart == null) return 0;
			
			IEnumerable<ITextUnit> xOutput = xFirstComponentPart.GetTextUnits(xBibliographyCitation, xTemplate);
			IEnumerable<ITextUnit> yOutput = yFirstComponentPart.GetTextUnits(yBibliographyCitation, yTemplate);
			if (xOutput == null || !xOutput.Any()) xOutput = xBibliographyCitation.GetTextUnits();
			if (yOutput == null || !yOutput.Any()) yOutput = yBibliographyCitation.GetTextUnits();
			
			if (xOutput == null || !xOutput.Any()) return 0;
			if (yOutput == null || !yOutput.Any()) return 0;
			
			
			string xOutputString = xOutput.ToString();
			string yOutputString = yOutput.ToString();
				
			int firstResult = xOutputString.CompareTo(yOutputString);
			if (firstResult != 0) return firstResult;
			
			var yearTitleVolumeSortDescriptors = new List<PropertySortDescriptor<Reference>>();
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Title));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.YearResolved));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Volume));
			yearTitleVolumeSortDescriptors.Add(new PropertySortDescriptor<Reference>(ReferencePropertyDescriptor.Number));
			var yearTitleVolumeComparer = new CitationComparer(yearTitleVolumeSortDescriptors);
			
			return yearTitleVolumeComparer.Compare(xBibliographyCitation, yBibliographyCitation);
		}
	}
}

Foto
1

Hallo Peter,

vielen Dank für die schnelle Antwort, allerdings erscheinen die betreffenden Dokumententypen weiterhin im Literaturverzeichnis bzw. folgender Text: "[Der Titel "Beispieltitel" kann nicht dargestellt werden. Die Vorlage "Literaturverzeichnis - Akte - (Standardvorlage)" enthält keine Informationen.]"

Das klingt auch pausibel, weil die Vorlage für das Literaturverzeichnis der betreffenden Dokumententypen keine Komponenten enthält.

Freundliche Grüße

Philip

Foto
1

Hallo Philip

Senden Sie uns bitte Ihren Zitationsstil.

Freundliche Grüsse

Peter

Foto
1

Hallo Peter,

die Ticket ID lautet 69367-01-24.

Freundliche Grüße

Philip

Foto
1

Hallo Philip

Ich habe per Mail geantwortet.

Freundliche Grüsse

Peter

Foto
1

Hallo Peter,

vielen Dank für die Rückmeldung.

Ich habe es selbst jetzt auch noch einmal probiert und im Grunde funktioniert es jetzt auch wie gewünscht. Allerdings gibt es noch einen kleinen Haken: Es funktioniert erst ab zwei verschiedenen Dokumententypen. Wenn ich mehrmals nur aus einer Akte oder einem Gesetz zitiere erscheint ein entsprechender Eintrag im Literaturverzeichnis. Sobald nun beispielsweise eine Monographie dazu kommt, verschwindet der Eintrag.

In der Praxis wird man wohl immer mehr als nur ein Dokumententyp nutzen. Trotzdem will ich an dieser Stelle darauf hinweisen, dass der zur Verfügung gestellte Programmcode diesen Sonderfall nicht abdeckt.


Freundliche Grüße

Philip

Foto
1

Hallo Philip

Weil die Frage sicherlich auch die Mitleserinnen und Mitleser interessiert, hier meine Antwort, die Sie schon per Mail erhaltne haben:

Das von Ihnen beobachtete Verhalten ist "by design". Es muss mindestens ein Titel vorhanden sein, der im Literaturverzeichnis ausgegeben werden soll, damit die anderen Titel/Dokumententypen unterdrückt werden können.

Freundliche Grüsse

Peter

Foto
1

Hallo Peter,

genau deswegen habe auch ich meine Reaktion nochmal hier öffentlich gepostet, damit es alle nachvollziehen können.

Der Anwendungsfall war konstruiert und damit nicht praxisnah, da das Ausschließen von bestimmten Dokumententypen ja impliziert, dass ich auch andere Dokumententypen nutze, die unbedingt ausgegeben werden sollen. Somit löst der Programmcode meine Anfordungen im Grunde vollumfänglich.

Vielen Dank für alles. Großes Lob an den Support hier: Ihr leistet echt eine tolle Arbeit!


Freundliche Grüße

Philip

Foto
1

:-) :-) :-)

Foto