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.

Ders. / Dies. / Dass.

Fragen zur Bedienung von Citavi 5

Re: Ders. / Dies. / Dass.

Postby theresa.witt » 2017-05-30 11:33

Danke sehr!

Wenn demnächst ein Code zur Verfügung stünde, der auch auf deutsch bei mehreren Herausgebern/innen denjenigen/diejenige automatisch ersetzt, der/die ders./dies. ist wie der/die Autor/in des Beitrags in dem jeweiligen Sammelwerk, würde ich das sehr feiern.

Alles Gute,
Theresa
Last edited by theresa.witt on 2017-05-30 11:39, edited 1 time in total.
theresa.witt
 

Re: Ders. / Dies. / Dass.

Postby Peter Meurer » 2017-05-30 11:37

Guten Tag

Diesen Code finden Sie hier.

Freundliche Grüsse
Peter

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.
Peter Meurer
Citavi Customer Service
 

Re: Ders. / Dies. / Dass.

Postby theresa.witt » 2017-05-30 11:44

Lieber Peter,

herzlichen Dank! Das schaue ich mir gern an. Auf den ersten Blick ist das glaub ich aber bislang nur möglich, wenn das Sammelwerk einen Hrsg. hat. Ich suche nach einer Möglichkeit, die auch für mehrere Hrsg. funktioniert, von denen nur einer ders./dies. ist, wie der Autor. Bislang gebe ich das dann immer händisch ein (Schliesky, in: ders. et al. (Hrsg.), Titel, Jahr, S.).

Beste Grüße,
Theresa
theresa.witt
 

Re: Ders. / Dies. / Dass.

Postby jay-squared » 2017-05-30 11:52

Naja, zum Thema feiern kann ich nur sagen "Zieh die Hausschuhe aus und rein in die Dancing-Schuh'". Ich mach das jedenfalls so, um bei mehreren Herausgebern, von denen genau der erste identisch mit dem Herausgeber, oder bei dem alle Autoren identisch sind mit allen Herausgebern:

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

namespace SwissAcademic.Citavi.Citations
{
   public class ComponentPartFilter
      :
      IComponentPartFilter
   {
      public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
      {
         
         handled = true;
         
         // User Options
         
         bool NoPeriods = true;
         bool UseIdem = true;
         bool ReplaceFirstOfSeveralPersonsWithIdem = true;
         bool ReplaceInText = false;
         bool DeactivateFilterAcrossFootnotesIfSeparatedByMoreThanOneIndexNo = true;         
                  
         LiteralTextUnit idemLiteral = new LiteralTextUnit("id.", FontStyle.Italic);         
         LiteralTextUnit spaceLiteral = new LiteralTextUnit(" ", FontStyle.Neutral);         
         LiteralTextUnit andOthersLiteral = new LiteralTextUnit(" et al", FontStyle.Italic);         
         LiteralTextUnit betweenFirstAndSecondWithTwoLiteral = new LiteralTextUnit(" & ", FontStyle.Neutral);         
         LiteralTextUnit betweenFirstAndSecondWithThreeLiteral =  new LiteralTextUnit(", ", FontStyle.Neutral);         
         LiteralTextUnit betweenSecondAndThirdLiteral = new LiteralTextUnit(" & ", FontStyle.Neutral);
         
         LiteralTextUnit editorsPrefixLiteral = new LiteralTextUnit(", ", FontStyle.Neutral);
         LiteralTextUnit editorsSingularLiteral = new LiteralTextUnit("ed", FontStyle.Neutral);
         LiteralTextUnit editorsPluralLiteral = new LiteralTextUnit("eds", FontStyle.Neutral);
         LiteralTextUnit editorsSuffixLiteral = new LiteralTextUnit("", FontStyle.Neutral);
         
         // Fixed Variables
         
         if (citation == null) return null;
         
         Reference thisReference = citation.Reference;
         if (thisReference == null) return null;
         
         Reference parentReference = thisReference.ParentReference;
         if (parentReference == null) return null;
         
         Citation previousCitation = null;      
         if (citation.PreviousCitation!= null) previousCitation = citation.PreviousCitation;
         
         FootnoteCitation footnoteCitation = citation as FootnoteCitation;
         InTextCitation inTextCitation = citation as InTextCitation;
         
         PlaceholderCitation thisPlaceholderCitation  = citation as PlaceholderCitation;
         
         // Dynamic Variables
         
         bool IsIdem = false;
         bool SeparatedByMoreThanOneIndexNo = false;
         bool IsEditors = true;
         
         int personCount = 0;   
         
         TextUnitCollection output = new TextUnitCollection();
         
         //The Magic   
         
         // Getting the main persons for this reference

         IList<Person> parentReferencePersonList = parentReference.Editors as IList<Person>;                  
         if (parentReferencePersonList == null || !parentReferencePersonList.Any()) return null;
         personCount = parentReferencePersonList.Count;
         
         IList<Person> thisReferencePersonList = thisReference.Authors as IList<Person>;               
         
         // Check if idem
         
         if (UseIdem &&
            thisReferencePersonList.Count == parentReferencePersonList.Count &&
            !thisReferencePersonList.Except(parentReferencePersonList).Any())
         {
            IsIdem = true;   
         }         
         
         // Print the author or idem
         
         if (IsIdem)
         {
            output.Add(idemLiteral);
         }
         else
         {
            int i = 1;
            foreach (Person person in parentReferencePersonList)
            {
               if (person == null)
               {
               }
               else if (i == 1 && UseIdem &&
                  ReplaceFirstOfSeveralPersonsWithIdem &&
                  i == 1 &&
                  thisReferencePersonList.Count == 1 &&
                  person == thisReferencePersonList.FirstOrDefault())
               {
                  output.Add(idemLiteral);
               }
               else if (i == 1)
               {   
                  output.Add(new LiteralTextUnit(person.FirstName));
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount == 2)
               {
                  output.Add(betweenFirstAndSecondWithTwoLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));      
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount == 3)
               {
                  output.Add(betweenFirstAndSecondWithThreeLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));   
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount > 3)
               {
                  output.Add(andOthersLiteral);
                  break;
               }
               else if (i == 3)
               {
                  output.Add(betweenSecondAndThirdLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));         
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }               
               i = i +1;
            }
         }
         
         output.Add(editorsPrefixLiteral);
         if (personCount == 1)
         {
            output.Add(editorsSingularLiteral);
         }
         else
         {
            output.Add(editorsPluralLiteral);
         }
            
         output.Add(editorsSuffixLiteral);

         // Finalizing the output
            
         if (NoPeriods)
         {
            foreach (ITextUnit textUnit in output)
            {
               var pattern1 = @"(?<=\p{Lu})\. ?(?=\p{Lu}\.)";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern1, "");

               var pattern2 = @"\.";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern2, "");
            }
         }
         
         return output;
         
      }
   }
}


Das wird natürlich etwas komplizierter, wenn man jetzt noch nach nach Geschlecht und Singular und Plural unterscheiden muss.
jay-squared
Citavi Expert
 

Re: Ders. / Dies. / Dass.

Postby theresa.witt » 2017-05-30 12:36

Das sieht sehr gut aus, meine liebste Zeile in der Syntax ist "//The Magic" :)

Ich werde mal versuchen, ob ich den Code mit Unterscheidung nach dem Geschlecht/Sing./Plural umgebaut bekomme, befürchte aber, dass das am Ende meine Fähigkeiten doch übersteigt.

Danke für´s Teilen!
Alles Gute,

Theresa
theresa.witt
 

Re: Ders. / Dies. / Dass.

Postby jay-squared » 2017-05-30 12:44

Naja, eine bessere Beschreibung wäre wahrscheinlich "Beginn der eigentlichen logischen Tests", aber das klingt ja langweilig ;) wenn es nicht so sehr eilt, kann ich mir auch mal nächste Woche oder die Woche darauf angucken, wie ich selber noch einen Singular-Plural-Test einbauen würde, aber vorher komme ich da nicht zu
jay-squared
Citavi Expert
 

Re: Ders. / Dies. / Dass.

Postby theresa.witt » 2017-05-30 12:53

Ja, langweilig wollen wir nicht, ich finde, dass nur durch ein paar Zeilen Code am Ende die richtige Zitation herauskommt, ist doch Magie. Passt also.

Zu deinem Angebot: Nein eilt nicht, ich möchte die Komponente in meiner Dissertation verwenden und mit der werde ich noch etwas beschäftigt sein. Ich kann ja einfach mal das, was ich dann in deinem Code geändert habe - wenn ich damit durch bin und nicht mehr weiter komme - hier posten. Wenn du dann Lust hast, mir bei Gelegenheit unter die Arme zu greifen und dran mit zu basteln, würde ich mich natürlich sehr freuen. Am schwierigsten finde ich, dem Programm zu erklären, dass er unterschiedliche TextUnits verwenden soll, je nachdem, welches Geschlecht Autor/Hrsg. haben.
theresa.witt
 

Re: Ders. / Dies. / Dass.

Postby jay-squared » 2017-05-30 13:32

So etwa in der Art:
Code: Select all
using System.Linq;
using System.Collections.Generic;
using SwissAcademic.Citavi;
using SwissAcademic.Citavi.Metadata;
using SwissAcademic.Collections;
using SwissAcademic.Drawing;
using System.Text.RegularExpressions;

namespace SwissAcademic.Citavi.Citations
{
   public class ComponentPartFilter
      :
      IComponentPartFilter
   {
      public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
      {
         
         handled = true;
         
         // User Options
         
         bool NoPeriods = false;
         bool UseIdem = true;
         bool ReplaceFirstOfSeveralPersonsWithIdem = true;
         bool ReplaceInText = false;
         bool DeactivateFilterAcrossFootnotesIfSeparatedByMoreThanOneIndexNo = true;         
                  
      
         LiteralTextUnit idemSingularMaleLiteral = new LiteralTextUnit("ders.", FontStyle.Italic);
         LiteralTextUnit idemSingularFemaleLiteral = new LiteralTextUnit("dies.", FontStyle.Italic);
         LiteralTextUnit idemSingularNeutralLiteral = new LiteralTextUnit("das.", FontStyle.Italic);
         LiteralTextUnit idemPluralLiteral = new LiteralTextUnit("dies.", FontStyle.Italic);
         
         LiteralTextUnit spaceLiteral = new LiteralTextUnit(" ", FontStyle.Neutral);         
         LiteralTextUnit andOthersLiteral = new LiteralTextUnit(" et al", FontStyle.Italic);         
         LiteralTextUnit betweenFirstAndSecondWithTwoLiteral = new LiteralTextUnit(" & ", FontStyle.Neutral);         
         LiteralTextUnit betweenFirstAndSecondWithThreeLiteral =  new LiteralTextUnit(", ", FontStyle.Neutral);         
         LiteralTextUnit betweenSecondAndThirdLiteral = new LiteralTextUnit(" & ", FontStyle.Neutral);
         
         LiteralTextUnit editorsPrefixLiteral = new LiteralTextUnit(", ", FontStyle.Neutral);
         LiteralTextUnit editorsSingularLiteral = new LiteralTextUnit("ed", FontStyle.Neutral);
         LiteralTextUnit editorsPluralLiteral = new LiteralTextUnit("eds", FontStyle.Neutral);
         LiteralTextUnit editorsSuffixLiteral = new LiteralTextUnit("", FontStyle.Neutral);
         
         // Fixed Variables
         
         if (citation == null) return null;
         
         Reference thisReference = citation.Reference;
         if (thisReference == null) return null;
         
         Reference parentReference = thisReference.ParentReference;
         if (parentReference == null) return null;
         
         Citation previousCitation = null;      
         if (citation.PreviousCitation!= null) previousCitation = citation.PreviousCitation;
         
         FootnoteCitation footnoteCitation = citation as FootnoteCitation;
         InTextCitation inTextCitation = citation as InTextCitation;
         
         PlaceholderCitation thisPlaceholderCitation  = citation as PlaceholderCitation;
         
         // Dynamic Variables
         
         bool IsIdem = false;
         bool SeparatedByMoreThanOneIndexNo = false;
         bool IsEditors = true;
         
         int personCount = 0;   
         
         TextUnitCollection output = new TextUnitCollection();
         
         //The Magic   
         
         // Getting the main persons for this reference

         IList<Person> parentReferencePersonList = parentReference.Editors as IList<Person>;                  
         if (parentReferencePersonList == null || !parentReferencePersonList.Any()) return null;
         personCount = parentReferencePersonList.Count;
         
         IList<Person> thisReferencePersonList = thisReference.Authors as IList<Person>;               
         
         // Check if idem
         
         if (UseIdem &&
            thisReferencePersonList.Count == parentReferencePersonList.Count &&
            !thisReferencePersonList.Except(parentReferencePersonList).Any())
         {
            IsIdem = true;   
         }         
         
         // Print the author or idem
         
         if (IsIdem)
         {            
            if (parentReferencePersonList.Count == 1)
            {
               if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Male)
               {
                  output.Add(idemSingularMaleLiteral);
               }
               else if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Female)
               {
                  output.Add(idemSingularFemaleLiteral);
               }
               else if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Neutral || parentReferencePersonList.FirstOrDefault().Sex == Sex.Unknown)
               {
                  output.Add(idemSingularNeutralLiteral);
               }
            }
            else if (parentReferencePersonList.Count > 1)
            {
               output.Add(idemPluralLiteral);
            }
         }
         else
         {
            int i = 1;
            foreach (Person person in parentReferencePersonList)
            {
               if (person == null)
               {
               }
               else if (i == 1 &&
                  UseIdem &&
                  ReplaceFirstOfSeveralPersonsWithIdem &&
                  thisReferencePersonList.Count == 1 &&
                  person == thisReferencePersonList.FirstOrDefault())
               {
                  if (person.Sex == Sex.Male)
                  {
                     output.Add(idemSingularMaleLiteral);
                  }
                  else if (person.Sex == Sex.Female)
                  {
                     output.Add(idemSingularFemaleLiteral);
                  }
                  else if (person.Sex == Sex.Neutral || person.Sex == Sex.Unknown)
                  {
                     output.Add(idemSingularNeutralLiteral);
                  }
               }
               else if (i == 1)
               {   
                  output.Add(new LiteralTextUnit(person.FirstName));
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount == 2)
               {
                  output.Add(betweenFirstAndSecondWithTwoLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));      
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount == 3)
               {
                  output.Add(betweenFirstAndSecondWithThreeLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));   
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount > 3)
               {
                  output.Add(andOthersLiteral);
                  break;
               }
               else if (i == 3)
               {
                  output.Add(betweenSecondAndThirdLiteral);
                  output.Add(new LiteralTextUnit(person.FirstName));         
                  if (person.MiddleName != "")
                  {
                     output.Add(spaceLiteral);
                     output.Add(new LiteralTextUnit(person.MiddleName[0].ToString()));
                  }
                  output.Add(spaceLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }               
               i = i +1;
            }
         }
         
         output.Add(editorsPrefixLiteral);
         if (personCount == 1)
         {
            output.Add(editorsSingularLiteral);
         }
         else
         {
            output.Add(editorsPluralLiteral);
         }
            
         output.Add(editorsSuffixLiteral);

         // Finalizing the output
            
         if (NoPeriods)
         {
            foreach (ITextUnit textUnit in output)
            {
               var pattern1 = @"(?<=\p{Lu})\. ?(?=\p{Lu}\.)";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern1, "");

               var pattern2 = @"\.";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern2, "");
            }
         }
         
         return output;
         
      }
   }
}
jay-squared
Citavi Expert
 

Re: Ders. / Dies. / Dass.

Postby theresa.witt » 2017-05-30 15:09

Wenn das bei dir schon "nicht eilig" bedeutet, weiß ich nicht, wie jemand noch flotter sein kann...

Daran habe ich mir jetzt die letzten 1,5 Tage geradezu die Zähne ausgebissen... genau so (sic !) hab ich mir das gewünscht. Und jetzt, wo ich deinen Code sehe, macht das auch vollkommen Sinn! Sehr elegant und schlank und vor allem: es funktioniert :) Habe nur noch ein paar winzige Änderungen eingegeben, weil mir die Nachnamen der Hrsg. reichen, hab die ed./eds. Abkürzungen auf deutsch ersetzt und die Schriftart auf Neutral gesetzt und bin gerade unheimlich happy mit dem super Ergebnis. Für alle anderen, die sich für mein Problem eine Lösung wünschen, schick ich den (minimal geänderten) Code noch mal mit. Ich weiß nicht, was ich noch mehr sagen kann, außer vielen vielen Danke für deine Zeit und Unterstützung! Das war eine sehr gute Tat :-)

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

namespace SwissAcademic.Citavi.Citations
{
   public class ComponentPartFilter
      :
      IComponentPartFilter
   {
      public IEnumerable<ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
      {
         
         handled = true;
         
         // User Options
         
         bool NoPeriods = false;
         bool UseIdem = true;
         bool ReplaceFirstOfSeveralPersonsWithIdem = true;
         bool ReplaceInText = false;
         bool DeactivateFilterAcrossFootnotesIfSeparatedByMoreThanOneIndexNo = true;         
                 
     
         LiteralTextUnit idemSingularMaleLiteral = new LiteralTextUnit("ders.", FontStyle.Neutral);
         LiteralTextUnit idemSingularFemaleLiteral = new LiteralTextUnit("dies.", FontStyle.Neutral);
         LiteralTextUnit idemSingularNeutralLiteral = new LiteralTextUnit("das.", FontStyle.Neutral);
         LiteralTextUnit idemPluralLiteral = new LiteralTextUnit("dies.", FontStyle.Neutral);
         
         LiteralTextUnit spaceLiteral = new LiteralTextUnit(" ", FontStyle.Neutral);         
         LiteralTextUnit andOthersLiteral = new LiteralTextUnit(" et al.", FontStyle.Neutral);         
         LiteralTextUnit betweenFirstAndSecondWithTwoLiteral = new LiteralTextUnit("/", FontStyle.Neutral);         
         LiteralTextUnit betweenFirstAndSecondWithThreeLiteral =  new LiteralTextUnit("/", FontStyle.Neutral);         
         LiteralTextUnit betweenSecondAndThirdLiteral = new LiteralTextUnit("/", FontStyle.Neutral);
         
         LiteralTextUnit editorsPrefixLiteral = new LiteralTextUnit(" (", FontStyle.Neutral);
         LiteralTextUnit editorsSingularLiteral = new LiteralTextUnit("Hrsg.", FontStyle.Neutral);
         LiteralTextUnit editorsPluralLiteral = new LiteralTextUnit("Hrsg.", FontStyle.Neutral);
         LiteralTextUnit editorsSuffixLiteral = new LiteralTextUnit(")", FontStyle.Neutral);
         
         // Fixed Variables
         
         if (citation == null) return null;
         
         Reference thisReference = citation.Reference;
         if (thisReference == null) return null;
         
         Reference parentReference = thisReference.ParentReference;
         if (parentReference == null) return null;
         
         Citation previousCitation = null;     
         if (citation.PreviousCitation!= null) previousCitation = citation.PreviousCitation;
         
         FootnoteCitation footnoteCitation = citation as FootnoteCitation;
         InTextCitation inTextCitation = citation as InTextCitation;
         
         PlaceholderCitation thisPlaceholderCitation  = citation as PlaceholderCitation;
         
         // Dynamic Variables
         
         bool IsIdem = false;
         bool SeparatedByMoreThanOneIndexNo = false;
         bool IsEditors = true;
         
         int personCount = 0;   
         
         TextUnitCollection output = new TextUnitCollection();
         
         //The Magic   
         
         // Getting the main persons for this reference

         IList<Person> parentReferencePersonList = parentReference.Editors as IList<Person>;                 
         if (parentReferencePersonList == null || !parentReferencePersonList.Any()) return null;
         personCount = parentReferencePersonList.Count;
         
         IList<Person> thisReferencePersonList = thisReference.Authors as IList<Person>;               
         
         // Check if idem
         
         if (UseIdem &&
            thisReferencePersonList.Count == parentReferencePersonList.Count &&
            !thisReferencePersonList.Except(parentReferencePersonList).Any())
         {
            IsIdem = true;   
         }         
         
         // Print the author or idem
         
         if (IsIdem)
         {           
            if (parentReferencePersonList.Count == 1)
            {
               if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Male)
               {
                  output.Add(idemSingularMaleLiteral);
               }
               else if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Female)
               {
                  output.Add(idemSingularFemaleLiteral);
               }
               else if (parentReferencePersonList.FirstOrDefault().Sex == Sex.Neutral || parentReferencePersonList.FirstOrDefault().Sex == Sex.Unknown)
               {
                  output.Add(idemSingularNeutralLiteral);
               }
            }
            else if (parentReferencePersonList.Count > 1)
            {
               output.Add(idemPluralLiteral);
            }
         }
         else
         {
            int i = 1;
            foreach (Person person in parentReferencePersonList)
            {
               if (person == null)
               {
               }
               else if (i == 1 &&
                  UseIdem &&
                  ReplaceFirstOfSeveralPersonsWithIdem &&
                  thisReferencePersonList.Count == 1 &&
                  person == thisReferencePersonList.FirstOrDefault())
               {
                  if (person.Sex == Sex.Male)
                  {
                     output.Add(idemSingularMaleLiteral);
                  }
                  else if (person.Sex == Sex.Female)
                  {
                     output.Add(idemSingularFemaleLiteral);
                  }
                  else if (person.Sex == Sex.Neutral || person.Sex == Sex.Unknown)
                  {
                     output.Add(idemSingularNeutralLiteral);
                  }
               }
               else if (i == 1)
               {   
                 
              output.Add(new LiteralTextUnit(person.LastName));
                 
               }
               else if (i == 2 && personCount == 2)
               {
                  output.Add(betweenFirstAndSecondWithTwoLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount == 3)
               {
                  output.Add(betweenFirstAndSecondWithThreeLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }
               else if (i == 2 && personCount > 3)
               {
                  output.Add(andOthersLiteral);
                  break;
               }
               else if (i == 3)
               {
                  output.Add(betweenSecondAndThirdLiteral);
                  output.Add(new LiteralTextUnit(person.LastName));
               }               
               i = i +1;
            }
         }
         
         output.Add(editorsPrefixLiteral);
         if (personCount == 1)
         {
            output.Add(editorsSingularLiteral);
         }
         else
         {
            output.Add(editorsPluralLiteral);
         }
           
         output.Add(editorsSuffixLiteral);

         // Finalizing the output
           
         if (NoPeriods)
         {
            foreach (ITextUnit textUnit in output)
            {
               var pattern1 = @"(?<=\p{Lu})\. ?(?=\p{Lu}\.).";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern1, "");

               var pattern2 = @"\.";
               textUnit.Text = Regex.Replace(textUnit.Text, pattern2, "");
            }
         }
         
         return output;
         
      }
   }
}
theresa.witt
 

Previous

Return to Citavi 5 Support (Deutsch)