Vorlagenbedingung: Übergeordneter Titel im vorherigen Nachweis entspricht Übergeordnetem Titel

Simon E. hinzugefügt 3 Jahren her
beantwortet

Hallo nochmals liebe Community und liebes citavi-Team,


In unserem Stil soll immer dann ebd. verwendet werden, wenn hintereinander zwei Beiträge aus dem selben Sammelwerk zitiert werden sollen. Also wenn: Übergeordnerter Titel = Übergeordnerter Titel des Vorherigen Nachweises dann true


Bsp:


[1] Dreier, in: ders./Bauer (Hg.), GG2, Art. 10 Rn. 1 f.

[2] Hermes, ebd. Art. 13 Rn. 20 ff.

und:

[1] Dreier, in: ders./Bauer (Hg.), GG2, Art. 10 Rn. 1 f.

[2] Lorem ipsum alles nur nur kein Nachweis(...)

[3] Hermes, ebd. Art. 13 Rn. 20 ff.


Nach meinem Verständniss ist keine der vorgefertigten Vorlagebedingungen geeignet diese Abgrenzung zu treffen. Insb. hat "Gleicher Titeleintrag wie vorheriger" keinen Effekt, was klar ist, ist ja auch ein anderer Titel. Und "Übergeordneter Titel oder ein anderer Beitrag daraus wurde bereits in einer vorherigen Fußnote genannt" führt auch zu:


[1] Dreier, in: ders./Bauer (Hg.), GG2, Art. 10 Rn. 1 f.

[2] Maierhöfer, in: NVwZ 2015, S. 1655 (1656)

[3] Hermes, ebd. Art. 13 Rn. 20 ff.


Was ebenfals klar ist, weil ja die Prüfung "unmittelbar zuvor" fehlt.


Ich habe in einem Beitrag aus 2014 den unten angehängten Code gefunden der zwar nicht genau das tun sollte was ich möchte (Er stellt auf unmittelbar aufeinander folgende Fußnoten ab) aber auch das nicht tut. Evtl. lässt er sich trotzdem noch als Grundlage verwenden.

Ich bin für jede Hilfe dankbar. (nach dem Code geht es weiter)


    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)
          {
             //übergeordneter Titel wurde bereits in einer FN genannt (konfigurierbar)
             bool crossFootnote = true;               //false: es muss in derselben FN sein   true: es kann irgendwo weiter oben in einer FN sein
             bool immediatePredecessorOnly = true;      //false: es muss nicht unmittelbar zuvor sein
             

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

             // aktuelle Zitation ist in einer Fussnote und sie ist eine wiederholte Zitation
             FootnoteCitation currentFootnoteCitation = citation as FootnoteCitation;
             if (currentFootnoteCitation == null) return false;

             
             int currentCitationIndex = currentFootnoteCitation.Index;
             if (currentCitationIndex == 0) return false;
             
             int currentFootnoteIndex = currentFootnoteCitation.FootnoteIndex;
             
             for (int i = currentCitationIndex - 1; i >= 0; i--)
             {
                FootnoteCitation previousFootnoteCitation = citationManager.FootnoteCitations;
                if (previousFootnoteCitation == null) break;
                
                if (previousFootnoteCitation.Reference == null) break;
                
                PlaceholderEntry previousFootnoteCitationEntry = previousFootnoteCitation.Entry;
                if (previousFootnoteCitationEntry == null) break;
                
                int previousCitationIndex = previousFootnoteCitation.Index;
                int previousFootnoteIndex = previousFootnoteCitation.FootnoteIndex;
                
                if (immediatePredecessorOnly && currentCitationIndex - previousCitationIndex != 1) break;
                if (!crossFootnote && !previousFootnoteIndex.Equals(currentFootnoteIndex)) break;         //do NOT use == or != here               

                //übergeordneter Titel
                if (currentFootnoteCitation.Reference.ParentReference == previousFootnoteCitation.Reference) return true;
             }
             

             //still here?
             return false;
          }
       }
    }


Das wären die "Mindestanforderungen", optimaler Weise sollte jedoch nur dann ebd. eingesetzt werden, wenn der vorherige Nachweis bis zu zwei Fußnoten (ohne Nachweis) entfernt ist.

Also wenn: Übergeordnerter Titel = Übergeordnerter Titel des vorherigen Nachweises und vorheriger Nachweis <=2 Fußnoten zuvor dann true


Also:


[1] Dreier, in: ders./Bauer (Hg.), GG2, Art. 10 Rn. 1 f.

[2] Lorem ipsum alles nur nur kein Nachweis(...)

[3] dolor sit amet alles nur nur kein Nachweis(...)

[4] Hermes, ebd. Art. 13 Rn. 20 ff.

und:


[1] Dreier, in: ders./Bauer (Hg.), GG2, Art. 10 Rn. 1 f.

[2] Lorem ipsum alles nur nur kein Nachweis(...)

[3] dolor sit amet alles nur nur kein Nachweis(...)

[4] consectetuer adipiscing alles nur nur kein Nachweis(...)

[5] Hermes, in: Dreier/Bauer (Hg.), GG2, Art. 13 Rn. 20 ff.


Das ließe sich selbstverständlich über eine Option-Bedingung lösen aber ich dachte ich erwähne es mal falls das eleganter direkt innerhalb der Bedingung geht.


Viele Grüße und Danke im Voraus,

Simon

Antworten (4)

Foto
2

Sommer 2014. Hach ja. Ich habe mir erlaubt, das sinnvollerweise so zu ergänzen, dass darauf geprüft wird, ob der Elter des aktuellen Titels mit dem Elter des Vorgängers oder dem Vorgänger selber identisch ist.


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;
			
			Reference thisReference = citation.Reference;
			ReferenceType thisReferenceType = thisReference.ReferenceType;
			
			FootnoteCitation thisFootnoteCitation = citation as FootnoteCitation;
			if (thisFootnoteCitation == null) return false;
			
			FootnoteCitation previousFootnoteCitation = thisFootnoteCitation.PreviousFootnoteCitation;
			if (previousFootnoteCitation == null) return false;
			
			Reference previousReference = previousFootnoteCitation.Reference;
			if (previousReference == null) return false;
			
			ReferenceType previousReferenceType = previousReference.ReferenceType;			
			
			if (thisReferenceType != ReferenceType.Contribution && thisReferenceType != ReferenceType.BookEdited) return false;
			if (previousReferenceType != ReferenceType.Contribution && previousReferenceType != ReferenceType.BookEdited) return false;
			
			if (thisFootnoteCitation.FootnoteIndex > previousFootnoteCitation.FootnoteIndex + 2) return false;
			

			if (thisReference.ParentReference == previousReference.ParentReference) return true; // is current citation a contribution IN THE SAME BOOK as the previous citation?

			if (thisReference.ParentReference == previousReference) return true; // is the current citation a contribution IN the previous citation?

			
			return false;
		}
	}
}

Foto
1

Hallo Jay,

Vielen dank! Sofern Sie kein Gehalt von Swiss Academic Software erhalten sollte Ihnen eine Ehrentafel oder ähnliches im Büro gewidmet werden.

Die Vorlagenbedingung tut genau das worum ich gebeten hatte, großen Respekt. Leider war ich etwas unpräzise in der Beschreibung der Anforderungen. Nicht nur bei Sammelwerken sonder auch bei Gesetzeskommentaren soll die Vorlage zum Zug kommen. Ich war in der Lage den Code so abzuwandeln, dass jetzt nur Kommentare erfasst werden. Ein Alternativverhältnis konnte ich nicht herstellen. Stattdessen arbeite ich jetzt einfach mit zwei verschiedenen Vorlagebedingungen.

Für die Nachwelt:


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;
			
			Reference thisReference = citation.Reference;
			ReferenceType thisReferenceType = thisReference.ReferenceType;
			
			FootnoteCitation thisFootnoteCitation = citation as FootnoteCitation;
			if (thisFootnoteCitation == null) return false;
			
			FootnoteCitation previousFootnoteCitation = thisFootnoteCitation.PreviousFootnoteCitation;
			if (previousFootnoteCitation == null) return false;
			
			Reference previousReference = previousFootnoteCitation.Reference;
			if (previousReference == null) return false;
			
			ReferenceType previousReferenceType = previousReference.ReferenceType;			
			
			if (thisReferenceType != ReferenceType.ContributionInLegalCommentary && thisReferenceType != ReferenceType.LegalCommentary) return false;
			if (previousReferenceType != ReferenceType.ContributionInLegalCommentary && previousReferenceType != ReferenceType.LegalCommentary) return false;
			
			if (thisFootnoteCitation.FootnoteIndex > previousFootnoteCitation.FootnoteIndex + 2) return false;
			

			if (thisReference.ParentReference == previousReference.ParentReference) return true; // is current citation a contribution IN THE SAME BOOK as the previous citation?

			if (thisReference.ParentReference == previousReference) return true; // is the current citation a contribution IN the previous citation?

			
			return false;
		}
	}
}

Foto
1

Hallo Simon

Der Stein, den Jan Jakob bei uns im Brett hat, ist ein riesiger Diamant!

Freundliche Grüsse

Peter

Foto
1

😳..

Antwort schreiben
 
Dateianlage anfügen (KEINE vertraulichen Dokumente!)