41
6.0.0.1
false
2013-07-08T16:38:36+02:00
JHP
2017-11-24T14:07:14
Georg Mayr-Duffner
InTextCitation
Economics, General
de
WU Institute for Managing Sustainability deutsch
AddFirstNames, AddPersonsUntilCitationIsUnique, AddLetterAfterYear
Full
Full
All
LastNameFirstName
Auto
true
None
1
2
3
ContributionConferenceProceedings
Special Condition for Word Add-In: Author (Year)
With Editors AND Series Editors
editors = null;
IList seriesTitleEditors = null;
if
(
reference.HasCoreField(ReferenceTypeCoreFieldId.Editors) &&
reference.HasCoreField(ReferenceTypeCoreFieldId.SeriesTitle) &&
reference.SeriesTitle != null
)
{
//check reference itself
editors = reference.Editors as IList;
seriesTitleEditors = reference.SeriesTitle.Editors as IList;
}
else if
(
parentReference != null &&
parentReference.HasCoreField(ReferenceTypeCoreFieldId.Editors) &&
parentReference.HasCoreField(ReferenceTypeCoreFieldId.SeriesTitle) &&
parentReference.SeriesTitle != null
)
{
//check parent Reference
editors = parentReference.Editors;
seriesTitleEditors = parentReference.SeriesTitle.Editors;
}
return
editors != null &&
editors.Any() &&
seriesTitleEditors != null &&
seriesTitleEditors.Any();
}
}
}]]>
Author + Organization NOT empty
Title supplement contains "personal communication"
Reference was cited before (footnote or text)
false
{0} [abgerufen am]
Always
.
Always
,
Reference
true
NextElementHasData
abgerufen am
AccessDate
false
dd. MMMM yyyy
Always
in press
false
true
false
{0}
Always
.
Always
Reference
true
Additions
false
false
{0}
Always
Always
Reference
true
Authors
false
-1
LastNameFirstName
Full
Full
All
Always
/
Always
/
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
Always
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
Always
Reference
true
Date
false
dd.MM.yyyy
Always
In Press
true
true
false
{0}
Always
.
Always
Reference
true
Date2
false
D
Always
in press
true
false
false
{0}
Always
;
Always
Reference
true
Edition
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
Reference
true
Editors
false
-1
LastNameFirstName
Full
Abbreviated
All
Always
/
Always
/
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}[E-Book]
Always
.
Always
.
Reference
true
NextElementHasData
Erschienen als
CustomField1
false
false
{0}
Always
.
Always
Reference
true
CustomField2
false
false
{0}
Always
.
Always
Reference
true
CustomField3
false
false
{0}
Always
.
Always
Reference
true
CustomField4
false
false
{0}
Always
.
Always
,
Reference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
Reference
true
Isbn
false
false
{0} [vom]
Always
Always
.
Reference
true
Periodical
false
true
false
false
false
true
false
false
false
false
false
Name
Always
vom
false
{0}
Always
.
Always
Reference
true
Language
false
false
{0}
Always
.
Always
Reference
true
PageCount
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
Reference
true
NumberOfVolumes
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
.
Reference
true
OnlineAddress
false
false
false
false
false
false
{0}
Always
.
Always
Reference
true
OriginalPublication
false
D
Always
im Druck
true
false
false
{0}
Always
Always
Reference
true
OthersInvolved
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
Always
,
Reference
true
PageRange
false
Arabic
true
FullRange
Always
col.
Always
–
Always
false
StartPageOnly
Always
col.
Always
Always
false
FullRange
Always
col.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
no.
Always
–
Always
false
FullRange
Always
no.
Always
Always
false
FullRange
Always
no.
Always
Always
false
{0}
Always
.
Always
Reference
true
ParallelTitle
false
false
{0}
Always
.
Always
.
Reference
true
PlaceOfPublication
false
false
-1
-1
Always
, et al.
Always
,
false
{0}
Always
.
Always
Reference
true
Price
false
false
{0}
Always
.
Always
:
Reference
true
Publishers
false
false
{0}
Always
,
Always
.
Reference
true
SeriesTitle
false
true
Name
false
{0}
Always
.
Always
Reference
true
ShortTitle
false
false
{0}
Always
Always
.
Reference
true
SpecificField1
false
false
{0}
Always
Always
,
Reference
true
SpecificField2
false
false
{0}
Always
.
Always
Reference
true
SpecificField3
false
false
{0}
Always
.
Always
Reference
true
SpecificField4
false
false
{0}
Always
.
Always
Reference
true
SpecificField5
false
false
{0}
Always
.
Always
Reference
true
SpecificField6
false
false
{0}
Always
.
Always
Reference
true
SpecificField7
false
false
{0}
Always
.
Always
Reference
true
StorageMedium
false
false
{0}
Always
.
Always
.
Reference
true
Title
false
false
{0}
Always
.
Always
Reference
true
Subtitle
false
false
{0}
Always
.
Always
Reference
true
TitleInOtherLanguages
false
false
{0}
Always
Always
.
Reference
true
TitleSupplement
false
false
[{0}]
Always
.
Always
Reference
true
NextElementHasData
[
TranslatedTitle
false
PreviousElementHasData
]
false
{0}
Always
.
Always
Reference
true
UniformTitle
false
false
Vol. {0}
Always
Always
Reference
true
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Vol.
Always
Always
Vol.
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
({0})
Always
Always
Reference
true
Always
(
YearResolved
false
yyyy
Always
in press
true
true
Always
)
false
Titel in Sammelwerk
Always
.
Always
Reference
true
Title
false
false
{0}
Always
Always
Reference
true
Number
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
({0})[Sammelwerk]
Always
.
Always
Reference
true
NextElementHasData
(
YearResolved
false
yyyy
Always
in press
true
true
Always
, Hrsg.
AnyElementInComponentHasData
)
false
{0}: {1} [{2}]
Always
Always
.
Reference
true
Title
false
NextElementHasData
.
Subtitle
false
NextElementHasData
[
TranslatedTitle
false
PreviousElementHasData
]
false
({0})
Always
.
Always
Reference
true
NextElementHasData
(
Number
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
PreviousElementHasData
)
false
{0} [italic]
Always
Always
Reference
true
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
false
false
false
true
false
false
false
false
false
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
({0})
Always
.
Always
Reference
true
NextElementHasData
(
Date
false
yyyy
Always
in press
true
true
PreviousElementHasData
)
false
({0}, {1})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
Edition
false
Always
th
Always
Always
ed.
Always
Always
ed.
Always
1|st|2|nd|3|rd
Always
Always
true
PreviousAndNextElementsHaveData
,
Volume
false
Always
th
Always
Vol.
Always
Always
Vol.
Always
Always
1|st|2|nd|3|rd
Always
Always
false
AnyElementInComponentHasData
)
false
{0}: {1}. [italic] {2} [{3}]
Always
.
Always
.
Reference
true
Title
false
false
false
false
true
false
false
false
false
false
PreviousAndNextElementsHaveData
:
Subtitle
false
false
false
false
true
false
false
false
false
false
NextElementHasData
.
TitleSupplement
false
NextElementHasData
[
TranslatedTitle
false
PreviousElementHasData
]
false
{0}: {1} [italic]
Always
Always
.
Reference
true
SeriesTitle
false
true
false
false
false
true
false
false
false
false
false
Name
NextElementHasData
:
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
false
false
false
true
false
false
false
false
false
Always
Vol.
Always
Always
Vol.
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
({0})
Always
.
Always
Reference
true
NextElementHasData
(
Editors
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
Always
, Ed.
Always
, Eds.
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
AnyElementInComponentHasData
)
false
({0})
Always
.
Always
Reference
true
NextElementHasData
(
TitleSupplement
false
AnyElementInComponentHasData
)
false
pp. {0}
Always
.
Always
,
Reference
true
PageRange
false
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
true
StartPageOnly
Always
p.
Always
Always
false
FullRange
Always
pp.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
FullRange
Always
Always
Always
false
FullRange
Always
Always
Always
false
(Original work published {0})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
NextElementHasData
Original work published
OriginalPublication
false
D
Always
im Druck
true
false
AnyElementInComponentHasData
)
false
({0} No. {1})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
SeriesTitle
false
true
Name
NextElementHasData
No.
Number
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
AnyElementInComponentHasData
)
false
Unpublished manuscript
Always
.
Always
.
Reference
true
Always
Unpublished manuscript
false
{0} (Producer)
Always
.
Always
Reference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
Always
(Producer)
Always
(Producers)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} (Director)
Always
.
Always
.
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
Always
&
Always
&
Always
(Director)
Always
(Directors)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
[Motion picture]
Always
.
Always
Reference
true
Always
[Motion picture]
false
{0} (Author)
Always
.
Always
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
PreviousElementHasData
(Author)
false
Retrieved {0}, from {1}: {2}
Always
.
Always
.
Reference
true
NextElementHasData
Retrieved
AccessDate
false
MMMM dd, yyyy
Always
in press
true
true
AnyElementInComponentHasData
, from
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
PreviousElementHasData
:
OnlineAddress
false
false
false
false
false
false
& {0} (Speaker)
Always
.
Always
Reference
true
NextElementHasData
&
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
...
false
false
false
false
Always
,
Always
(Speaker)
Always
(Speaker)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
Interview with {0}
Always
.
Always
Reference
true
NextElementHasData
Interview with
Collaborators
false
-1
FirstNameLastName
Full
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
Reference
true
Year
false
D
Always
in press
true
false
false
{0}, {1}
Always
Always
Reference
true
Subtitle
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
false
{0} [without pp]
Always
.
Always
Reference
true
PageRange
false
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
FullRange
Always
Always
Always
false
FullRange
Always
Always
Always
false
{0}
Always
Always
.
Reference
true
IndexInBibliography
false
Always
Arabic
Always
Always
LetterLowerCase
Always
Always
false
{0}
Always
Always
.
Reference
true
FirstFootnoteCitationNumber
false
false
false
false
{0}
Always
Always
.
Reference
true
CitationKey
false
false
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
bool useNonBreakingSpace = false;
bool useNonBreakingHyphen = false;
handled = false;
if (template == null) return null;
if (citation == null) return null;
if (citation.CitationManager == null) return null;
PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
if (placeholderCitation != null && placeholderCitation.YearOnly && template.StructuralDateTimeFieldElement != null) return null;
var reference = citation.Reference;
if (reference == null) return null;
if (componentPart == null) return null;
if (componentPart.Elements == null || !componentPart.Elements.Any()) return null;
PersonFieldElement personFieldElement = componentPart.Elements.OfType().FirstOrDefault();
if (personFieldElement == null) return null;
bool duplicateLastNameFound = false;
List personsForOutput = GetClonedPersonsForOutput(personFieldElement, citation, out duplicateLastNameFound);
if (!duplicateLastNameFound) return null;
if (personsForOutput == null || !personsForOutput.Any()) return null;
bool usePlural = personsForOutput.Count > 1;
TextUnitCollection personTextUnits = null;
personTextUnits = PersonFormatter.Format(personsForOutput, citation, personFieldElement);
TextUnitCollection output = new TextUnitCollection();
if (personTextUnits != null && personTextUnits.Any())
{
personTextUnits.ForEach(u =>
{
if (u.Text.Length > 3)
{
if (useNonBreakingSpace) u.Text = u.Text.Replace(StringUtility.Space, StringUtility.NonBreakingSpace);
if (useNonBreakingHyphen) u.Text = u.Text.Replace(StringUtility.Hyphen, StringUtility.NonBreakingHyphen);
}
});
output.AddRange(personTextUnits);
componentPart.Elements.ReplaceItem(personFieldElement, TextUnitCollectionUtility.TextUnitsToLiteralElements(output, componentPart));
}
return null;
}
#region GetClonedPersonsForOutput
List GetClonedPersonsForOutput(PersonFieldElement personFieldElement, Citation citation, out bool duplicateLastNameFound)
{
duplicateLastNameFound = false;
if (personFieldElement == null) return null;
if (citation == null) return null;
if (citation.Reference == null) return null;
List originalPersons = personFieldElement.GetPersons(citation).ToList(); //takes scope of ComponentPart into account
if (originalPersons == null || !originalPersons.Any()) return null;
//use the following for configuration of enhanced name output incl. first names, middle names etc.
#region PersonFieldElementFirstNameInitial
PersonFieldElement personFieldElementFirstNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameFull
PersonFieldElement personFieldElementFirstNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameInitialMiddleNameInitial
PersonFieldElement personFieldElementFirstNameInitialMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameInitial
PersonFieldElement personFieldElementFirstNameFullMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameFull
PersonFieldElement personFieldElementFirstNameFullMiddleNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
List clonedPersons = new List();
foreach (Person person in originalPersons)
{
switch (CheckNameIdentity(person, citation))
{
#region NameIdentity.LastNameFirstNameFullMiddleNameInitial
case NameIdentity.LastNameFirstNameFullMiddleNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameFull, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameFull
case NameIdentity.LastNameFirstNameFull:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameInitial
case NameIdentity.LastNameFirstNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastName
case NameIdentity.LastName:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameInitialMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region Default
default:
case NameIdentity.None:
case NameIdentity.LastNameFirstNameFullMiddleNameFull: //we return to just last name, because there is nothing we can do here
{
clonedPersons.Add(person.Clone(person.Project, false));
}
break;
#endregion
}
}
return clonedPersons;
}
#endregion GetClonedPersonsForOutput
#region CheckNameIdentity
enum NameIdentity
{
None,
LastName,
LastNameFirstNameInitial,
LastNameFirstNameFull,
LastNameFirstNameFullMiddleNameInitial,
LastNameFirstNameFullMiddleNameFull
}
NameIdentity CheckNameIdentity(Person currentPerson, Citation currentCitation)
{
if (currentCitation == null) return NameIdentity.None;
if (currentCitation.CitationManager == null) return NameIdentity.None;
var placeholderCitations = currentCitation.CitationManager.PlaceholderCitations;
if (placeholderCitations == null || !placeholderCitations.Any()) return NameIdentity.None;
List citedPersons = (
from citation in placeholderCitations
where citation.Template != null
from personField in citation.Template.PersonFieldElements
from person in personField.GetPersonsCited(citation)
select person
).Distinct().ToList();
List personsWithIdenticalLastName = citedPersons.Where(p => string.Equals(p.LastName, currentPerson.LastName, StringComparison.OrdinalIgnoreCase) && p != currentPerson).ToList();
List personsWithIdenticalLastNameFirstNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFull = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameFull = new List();
if (!string.IsNullOrEmpty(currentPerson.FirstName))
{
personsWithIdenticalLastNameFirstNameInitial = (
from person in personsWithIdenticalLastName
where !string.IsNullOrEmpty(person.FirstName) && person.FirstName[0] == currentPerson.FirstName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFull = (
from person in personsWithIdenticalLastNameFirstNameInitial
where string.Equals(person.FirstName, currentPerson.FirstName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (!string.IsNullOrEmpty(currentPerson.MiddleName))
{
personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = (
from person in personsWithIdenticalLastNameFirstNameFull
where !string.IsNullOrEmpty(person.MiddleName) && person.MiddleName[0] == currentPerson.MiddleName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFullMiddleNameFull = (
from person in personsWithIdenticalLastNameFirstNameFullMiddleNameInitial
where string.Equals(person.MiddleName, currentPerson.MiddleName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (personsWithIdenticalLastNameFirstNameFullMiddleNameFull.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameFull;
if (personsWithIdenticalLastNameFirstNameFullMiddleNameInitial.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameInitial;
if (personsWithIdenticalLastNameFirstNameFull.Any()) return NameIdentity.LastNameFirstNameFull;
if (personsWithIdenticalLastNameFirstNameInitial.Any()) return NameIdentity.LastNameFirstNameInitial;
if (personsWithIdenticalLastName.Any()) return NameIdentity.LastName;
return NameIdentity.None; //?
}
#endregion OtherPersonWithSameLastNameAlsoCited
}
}]]>
false
Add initials if there are other authors with the same last name
{0} [first 6 authors et al.]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
/
Always
/
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
3
3
Always
et al.
false
false
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
, {0}/{1}
Always
Always
,
Reference
true
OriginalPublication
false
yyy
Always
false
true
PreviousAndNextElementsHaveData
/
YearResolved
false
yyy
Always
in press
true
true
false
(
Always
Always
Reference
true
Always
(
false
)
Always
Always
Reference
true
Always
)
false
, {0}
Always
Always
,
Reference
true
QuotationPageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
col.
Always
Always
false
FullRange
Always
col.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
true
StartPageOnly
Always
Always
Always
false
FullRange
Always
pp.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Nr.
Always
–
Always
false
FullRange
Always
no.
Always
Always
false
FullRange
Always
no.
Always
Always
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
bool useNonBreakingSpace = false;
bool useNonBreakingHyphen = false;
handled = false;
if (template == null) return null;
if (citation == null) return null;
if (citation.CitationManager == null) return null;
PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
if (placeholderCitation != null && placeholderCitation.YearOnly && template.StructuralDateTimeFieldElement != null) return null;
var reference = citation.Reference;
if (reference == null) return null;
if (componentPart == null) return null;
if (componentPart.Elements == null || !componentPart.Elements.Any()) return null;
PersonFieldElement personFieldElement = componentPart.Elements.OfType().FirstOrDefault();
if (personFieldElement == null) return null;
bool duplicateLastNameFound = false;
List personsForOutput = GetClonedPersonsForOutput(personFieldElement, citation, out duplicateLastNameFound);
if (!duplicateLastNameFound) return null;
if (personsForOutput == null || !personsForOutput.Any()) return null;
bool usePlural = personsForOutput.Count > 1;
TextUnitCollection personTextUnits = null;
personTextUnits = PersonFormatter.Format(personsForOutput, citation, personFieldElement);
TextUnitCollection output = new TextUnitCollection();
if (personTextUnits != null && personTextUnits.Any())
{
personTextUnits.ForEach(u =>
{
if (u.Text.Length > 3)
{
if (useNonBreakingSpace) u.Text = u.Text.Replace(StringUtility.Space, StringUtility.NonBreakingSpace);
if (useNonBreakingHyphen) u.Text = u.Text.Replace(StringUtility.Hyphen, StringUtility.NonBreakingHyphen);
}
});
output.AddRange(personTextUnits);
componentPart.Elements.ReplaceItem(personFieldElement, TextUnitCollectionUtility.TextUnitsToLiteralElements(output, componentPart));
}
return null;
}
#region GetClonedPersonsForOutput
List GetClonedPersonsForOutput(PersonFieldElement personFieldElement, Citation citation, out bool duplicateLastNameFound)
{
duplicateLastNameFound = false;
if (personFieldElement == null) return null;
if (citation == null) return null;
if (citation.Reference == null) return null;
List originalPersons = personFieldElement.GetPersons(citation).ToList(); //takes scope of ComponentPart into account
if (originalPersons == null || !originalPersons.Any()) return null;
//use the following for configuration of enhanced name output incl. first names, middle names etc.
#region PersonFieldElementFirstNameInitial
PersonFieldElement personFieldElementFirstNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameFull
PersonFieldElement personFieldElementFirstNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameInitialMiddleNameInitial
PersonFieldElement personFieldElementFirstNameInitialMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameInitial
PersonFieldElement personFieldElementFirstNameFullMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameFull
PersonFieldElement personFieldElementFirstNameFullMiddleNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
List clonedPersons = new List();
foreach (Person person in originalPersons)
{
switch (CheckNameIdentity(person, citation))
{
#region NameIdentity.LastNameFirstNameFullMiddleNameInitial
case NameIdentity.LastNameFirstNameFullMiddleNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameFull, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameFull
case NameIdentity.LastNameFirstNameFull:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameInitial
case NameIdentity.LastNameFirstNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastName
case NameIdentity.LastName:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameInitialMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region Default
default:
case NameIdentity.None:
case NameIdentity.LastNameFirstNameFullMiddleNameFull: //we return to just last name, because there is nothing we can do here
{
clonedPersons.Add(person.Clone(person.Project, false));
}
break;
#endregion
}
}
return clonedPersons;
}
#endregion GetClonedPersonsForOutput
#region CheckNameIdentity
enum NameIdentity
{
None,
LastName,
LastNameFirstNameInitial,
LastNameFirstNameFull,
LastNameFirstNameFullMiddleNameInitial,
LastNameFirstNameFullMiddleNameFull
}
NameIdentity CheckNameIdentity(Person currentPerson, Citation currentCitation)
{
if (currentCitation == null) return NameIdentity.None;
if (currentCitation.CitationManager == null) return NameIdentity.None;
var placeholderCitations = currentCitation.CitationManager.PlaceholderCitations;
if (placeholderCitations == null || !placeholderCitations.Any()) return NameIdentity.None;
List citedPersons = (
from citation in placeholderCitations
where citation.Template != null
from personField in citation.Template.PersonFieldElements
from person in personField.GetPersonsCited(citation)
select person
).Distinct().ToList();
List personsWithIdenticalLastName = citedPersons.Where(p => string.Equals(p.LastName, currentPerson.LastName, StringComparison.OrdinalIgnoreCase) && p != currentPerson).ToList();
List personsWithIdenticalLastNameFirstNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFull = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameFull = new List();
if (!string.IsNullOrEmpty(currentPerson.FirstName))
{
personsWithIdenticalLastNameFirstNameInitial = (
from person in personsWithIdenticalLastName
where !string.IsNullOrEmpty(person.FirstName) && person.FirstName[0] == currentPerson.FirstName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFull = (
from person in personsWithIdenticalLastNameFirstNameInitial
where string.Equals(person.FirstName, currentPerson.FirstName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (!string.IsNullOrEmpty(currentPerson.MiddleName))
{
personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = (
from person in personsWithIdenticalLastNameFirstNameFull
where !string.IsNullOrEmpty(person.MiddleName) && person.MiddleName[0] == currentPerson.MiddleName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFullMiddleNameFull = (
from person in personsWithIdenticalLastNameFirstNameFullMiddleNameInitial
where string.Equals(person.MiddleName, currentPerson.MiddleName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (personsWithIdenticalLastNameFirstNameFullMiddleNameFull.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameFull;
if (personsWithIdenticalLastNameFirstNameFullMiddleNameInitial.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameInitial;
if (personsWithIdenticalLastNameFirstNameFull.Any()) return NameIdentity.LastNameFirstNameFull;
if (personsWithIdenticalLastNameFirstNameInitial.Any()) return NameIdentity.LastNameFirstNameInitial;
if (personsWithIdenticalLastName.Any()) return NameIdentity.LastName;
return NameIdentity.None; //?
}
#endregion OtherPersonWithSameLastNameAlsoCited
}
}]]>
false
Add initials if there are other authors with the same last name
{0} [& repeated]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
&
true
2
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
(Version {0})
Always
Always
Reference
true
NextElementHasData
(Version
Edition
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
PreviousElementHasData
)
false
(Computer software)
Always
Always
Reference
true
Always
(Computer software)
false
{0}
Always
Always
.
Reference
true
SeriesTitleEditors
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
"{0},"[Anonym]
Always
Always
Reference
true
Always
Anonym
false
[Television broadcast]
Always
Always
Reference
true
Always
[Television broadcast]
false
. {0}
Always
Always
.
Reference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
[{0}]
Always
Always
Reference
true
AnyElementInComponentHasData
[
StorageMedium
false
AnyElementInComponentHasData
]
false
({0})
Always
Always
Reference
true
NextElementHasData
(
StorageMedium
false
PreviousElementHasData
)
false
Retrieved from {0}
Always
Always
.
Reference
true
OnlineAddress
false
true
false
false
false
false
[{0}]
Always
Always
Reference
true
NextElementHasData
[
TitleSupplement
false
PreviousElementHasData
]
false
personal communication
Always
Always
,
Reference
true
Always
personal communication
false
({0})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
Edition
false
Always
th
Always
Always
. Aufl.
Always
Always
. Aufl.
Always
1|st|2|nd|3|rd
Always
Always
Aufl.
false
AnyElementInComponentHasData
)
false
. {0} [italic]
Always
.
Always
false
false
false
true
false
false
false
false
false
:
Reference
true
Subtitle
false
false
false
false
true
false
false
false
false
false
false
{0} [italic]
Always
.
Always
.
Reference
true
Title
false
false
false
false
true
false
false
false
false
false
false
from {0}
Always
Always
,
Reference
true
NextElementHasData
from
OnlineAddress
false
false
false
false
false
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
bool useNonBreakingSpace = false;
bool useNonBreakingHyphen = false;
handled = false;
if (template == null) return null;
if (citation == null) return null;
if (citation.CitationManager == null) return null;
PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
if (placeholderCitation != null && placeholderCitation.YearOnly && template.StructuralDateTimeFieldElement != null) return null;
var reference = citation.Reference;
if (reference == null) return null;
if (componentPart == null) return null;
if (componentPart.Elements == null || !componentPart.Elements.Any()) return null;
PersonFieldElement personFieldElement = componentPart.Elements.OfType().FirstOrDefault();
if (personFieldElement == null) return null;
bool duplicateLastNameFound = false;
List personsForOutput = GetClonedPersonsForOutput(personFieldElement, citation, out duplicateLastNameFound);
if (!duplicateLastNameFound) return null;
if (personsForOutput == null || !personsForOutput.Any()) return null;
bool usePlural = personsForOutput.Count > 1;
TextUnitCollection personTextUnits = null;
personTextUnits = PersonFormatter.Format(personsForOutput, citation, personFieldElement);
TextUnitCollection output = new TextUnitCollection();
if (personTextUnits != null && personTextUnits.Any())
{
personTextUnits.ForEach(u =>
{
if (u.Text.Length > 3)
{
if (useNonBreakingSpace) u.Text = u.Text.Replace(StringUtility.Space, StringUtility.NonBreakingSpace);
if (useNonBreakingHyphen) u.Text = u.Text.Replace(StringUtility.Hyphen, StringUtility.NonBreakingHyphen);
}
});
output.AddRange(personTextUnits);
componentPart.Elements.ReplaceItem(personFieldElement, TextUnitCollectionUtility.TextUnitsToLiteralElements(output, componentPart));
}
return null;
}
#region GetClonedPersonsForOutput
List GetClonedPersonsForOutput(PersonFieldElement personFieldElement, Citation citation, out bool duplicateLastNameFound)
{
duplicateLastNameFound = false;
if (personFieldElement == null) return null;
if (citation == null) return null;
if (citation.Reference == null) return null;
List originalPersons = personFieldElement.GetPersons(citation).ToList(); //takes scope of ComponentPart into account
if (originalPersons == null || !originalPersons.Any()) return null;
//use the following for configuration of enhanced name output incl. first names, middle names etc.
#region PersonFieldElementFirstNameInitial
PersonFieldElement personFieldElementFirstNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameFull
PersonFieldElement personFieldElementFirstNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameInitialMiddleNameInitial
PersonFieldElement personFieldElementFirstNameInitialMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameInitial
PersonFieldElement personFieldElementFirstNameFullMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameFull
PersonFieldElement personFieldElementFirstNameFullMiddleNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
List clonedPersons = new List();
foreach (Person person in originalPersons)
{
switch (CheckNameIdentity(person, citation))
{
#region NameIdentity.LastNameFirstNameFullMiddleNameInitial
case NameIdentity.LastNameFirstNameFullMiddleNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameFull, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameFull
case NameIdentity.LastNameFirstNameFull:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameInitial
case NameIdentity.LastNameFirstNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastName
case NameIdentity.LastName:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameInitialMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region Default
default:
case NameIdentity.None:
case NameIdentity.LastNameFirstNameFullMiddleNameFull: //we return to just last name, because there is nothing we can do here
{
clonedPersons.Add(person.Clone(person.Project, false));
}
break;
#endregion
}
}
return clonedPersons;
}
#endregion GetClonedPersonsForOutput
#region CheckNameIdentity
enum NameIdentity
{
None,
LastName,
LastNameFirstNameInitial,
LastNameFirstNameFull,
LastNameFirstNameFullMiddleNameInitial,
LastNameFirstNameFullMiddleNameFull
}
NameIdentity CheckNameIdentity(Person currentPerson, Citation currentCitation)
{
if (currentCitation == null) return NameIdentity.None;
if (currentCitation.CitationManager == null) return NameIdentity.None;
var placeholderCitations = currentCitation.CitationManager.PlaceholderCitations;
if (placeholderCitations == null || !placeholderCitations.Any()) return NameIdentity.None;
List citedPersons = (
from citation in placeholderCitations
where citation.Template != null
from personField in citation.Template.PersonFieldElements
from person in personField.GetPersonsCited(citation)
select person
).Distinct().ToList();
List personsWithIdenticalLastName = citedPersons.Where(p => string.Equals(p.LastName, currentPerson.LastName, StringComparison.OrdinalIgnoreCase) && p != currentPerson).ToList();
List personsWithIdenticalLastNameFirstNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFull = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameFull = new List();
if (!string.IsNullOrEmpty(currentPerson.FirstName))
{
personsWithIdenticalLastNameFirstNameInitial = (
from person in personsWithIdenticalLastName
where !string.IsNullOrEmpty(person.FirstName) && person.FirstName[0] == currentPerson.FirstName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFull = (
from person in personsWithIdenticalLastNameFirstNameInitial
where string.Equals(person.FirstName, currentPerson.FirstName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (!string.IsNullOrEmpty(currentPerson.MiddleName))
{
personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = (
from person in personsWithIdenticalLastNameFirstNameFull
where !string.IsNullOrEmpty(person.MiddleName) && person.MiddleName[0] == currentPerson.MiddleName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFullMiddleNameFull = (
from person in personsWithIdenticalLastNameFirstNameFullMiddleNameInitial
where string.Equals(person.MiddleName, currentPerson.MiddleName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (personsWithIdenticalLastNameFirstNameFullMiddleNameFull.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameFull;
if (personsWithIdenticalLastNameFirstNameFullMiddleNameInitial.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameInitial;
if (personsWithIdenticalLastNameFirstNameFull.Any()) return NameIdentity.LastNameFirstNameFull;
if (personsWithIdenticalLastNameFirstNameInitial.Any()) return NameIdentity.LastNameFirstNameInitial;
if (personsWithIdenticalLastName.Any()) return NameIdentity.LastName;
return NameIdentity.None; //?
}
#endregion OtherPersonWithSameLastNameAlsoCited
}
}]]>
false
Add initials if there are other authors with the same last name
{0} [and repeated]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
, and
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
and
true
2
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} [bib]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameFirstName
Full
Abbreviated
All
Always
/
Always
/
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} [first 6 authors, et al.]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
&
true
5
1
Always
, et al.
false
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
pp. {0}
Always
Always
,
Reference
true
PageRange
false
Arabic
true
FullRange
Always
col.
Always
–
Always
false
StartPageOnly
Always
col.
Always
Always
false
FullRange
Always
col.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
p.
Always
Always
false
FullRange
Always
pp.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
no.
Always
–
Always
false
FullRange
Always
no.
Always
Always
false
FullRange
Always
no.
Always
Always
false
({0} year/month)
Always
.
Always
Reference
true
NextElementHasData
(
YearResolved
false
yyy, MMMM
Always
in press
true
true
AnyElementInComponentHasData
)
false
, {0}
Always
.
Always
Reference
true
PlaceOfPublication
false
false
-1
-1
Always
, et al.
Always
,
false
{0}
Always
Always
:
Reference
true
TitleSupplement
false
false
Interview by {0}
Always
.
Always
.
Reference
true
NextElementHasData
Interview by
Authors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
_{0} [first page]
Always
Always
Reference
true
PageRange
false
Arabic
true
FullRange
Always
col.
Always
–
Always
false
StartPageOnly
Always
col.
Always
Always
false
FullRange
Always
col.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
StartPageOnly
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
no.
Always
–
Always
false
FullRange
Always
no.
Always
Always
false
FullRange
Always
no.
Always
Always
false
{0} [first page]
Always
.
Always
Reference
true
PageRange
false
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
StartPageOnly
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
FullRange
Always
Always
Always
false
FullRange
Always
Always
Always
false
{0}
Always
Always
.
Reference
true
Periodical
false
true
false
false
false
true
false
false
false
false
false
StandardAbbreviation
false
({0} {1})
Always
Always
Reference
true
AnyElementInComponentHasData
(
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
PreviousAndNextElementsHaveData
Date
false
MMMM d, yyy
Always
false
true
AnyElementInComponentHasData
)
false
No. {0}
Always
Always
,
Reference
true
NextElementHasData
No.
SpecificField2
false
false
, {0}
Always
Always
,
Reference
true
Periodical
false
true
false
false
false
true
false
false
false
false
false
StandardAbbreviation
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
bool useNonBreakingSpace = false;
bool useNonBreakingHyphen = false;
handled = false;
if (template == null) return null;
if (citation == null) return null;
if (citation.CitationManager == null) return null;
PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
if (placeholderCitation != null && placeholderCitation.YearOnly && template.StructuralDateTimeFieldElement != null) return null;
var reference = citation.Reference;
if (reference == null) return null;
if (componentPart == null) return null;
if (componentPart.Elements == null || !componentPart.Elements.Any()) return null;
PersonFieldElement personFieldElement = componentPart.Elements.OfType().FirstOrDefault();
if (personFieldElement == null) return null;
bool duplicateLastNameFound = false;
List personsForOutput = GetClonedPersonsForOutput(personFieldElement, citation, out duplicateLastNameFound);
if (!duplicateLastNameFound) return null;
if (personsForOutput == null || !personsForOutput.Any()) return null;
bool usePlural = personsForOutput.Count > 1;
TextUnitCollection personTextUnits = null;
personTextUnits = PersonFormatter.Format(personsForOutput, citation, personFieldElement);
TextUnitCollection output = new TextUnitCollection();
if (personTextUnits != null && personTextUnits.Any())
{
personTextUnits.ForEach(u =>
{
if (u.Text.Length > 3)
{
if (useNonBreakingSpace) u.Text = u.Text.Replace(StringUtility.Space, StringUtility.NonBreakingSpace);
if (useNonBreakingHyphen) u.Text = u.Text.Replace(StringUtility.Hyphen, StringUtility.NonBreakingHyphen);
}
});
output.AddRange(personTextUnits);
componentPart.Elements.ReplaceItem(personFieldElement, TextUnitCollectionUtility.TextUnitsToLiteralElements(output, componentPart));
}
return null;
}
#region GetClonedPersonsForOutput
List GetClonedPersonsForOutput(PersonFieldElement personFieldElement, Citation citation, out bool duplicateLastNameFound)
{
duplicateLastNameFound = false;
if (personFieldElement == null) return null;
if (citation == null) return null;
if (citation.Reference == null) return null;
List originalPersons = personFieldElement.GetPersons(citation).ToList(); //takes scope of ComponentPart into account
if (originalPersons == null || !originalPersons.Any()) return null;
//use the following for configuration of enhanced name output incl. first names, middle names etc.
#region PersonFieldElementFirstNameInitial
PersonFieldElement personFieldElementFirstNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameFull
PersonFieldElement personFieldElementFirstNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
personFieldElementFirstNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.None;
#endregion
#region PersonFieldElementFirstNameInitialMiddleNameInitial
PersonFieldElement personFieldElementFirstNameInitialMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameInitialMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameInitial
PersonFieldElement personFieldElementFirstNameFullMiddleNameInitial = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameFormat = NameFormat.Abbreviated;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameInitial.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
#region PersonFieldElementFirstNameFullMiddleNameFull
PersonFieldElement personFieldElementFirstNameFullMiddleNameFull = new PersonFieldElement(personFieldElement.ComponentPart, personFieldElement.PropertyId);
personFieldElementFirstNameFullMiddleNameFull.FirstGroupFirstNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupPersonNameOrder = PersonNameOrder.FirstNameLastName;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameFormat = NameFormat.Full;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupMiddleNameUsage = MiddleNameUsage.All;
personFieldElementFirstNameFullMiddleNameFull.FirstGroupLastNameFontStyle = personFieldElement.FirstGroupLastNameFontStyle;
#endregion
List clonedPersons = new List();
foreach (Person person in originalPersons)
{
switch (CheckNameIdentity(person, citation))
{
#region NameIdentity.LastNameFirstNameFullMiddleNameInitial
case NameIdentity.LastNameFirstNameFullMiddleNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameFull, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameFull
case NameIdentity.LastNameFirstNameFull:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastNameFirstNameInitial
case NameIdentity.LastNameFirstNameInitial:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameFullMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region NameIdentity.LastName
case NameIdentity.LastName:
{
duplicateLastNameFound = true;
Person clonedPerson = person.Clone(person.Project, false);
string newDisplayName = PersonFormatter.FormatSinglePerson(person, personFieldElementFirstNameInitialMiddleNameInitial, PersonFieldGroup.First).ToString();
clonedPerson.LastName = newDisplayName;
clonedPerson.FirstName = null;
clonedPerson.MiddleName = null;
clonedPerson.Abbreviation = null;
clonedPerson.Prefix = null;
clonedPerson.Suffix = null;
clonedPersons.Add(clonedPerson);
}
break;
#endregion
#region Default
default:
case NameIdentity.None:
case NameIdentity.LastNameFirstNameFullMiddleNameFull: //we return to just last name, because there is nothing we can do here
{
clonedPersons.Add(person.Clone(person.Project, false));
}
break;
#endregion
}
}
return clonedPersons;
}
#endregion GetClonedPersonsForOutput
#region CheckNameIdentity
enum NameIdentity
{
None,
LastName,
LastNameFirstNameInitial,
LastNameFirstNameFull,
LastNameFirstNameFullMiddleNameInitial,
LastNameFirstNameFullMiddleNameFull
}
NameIdentity CheckNameIdentity(Person currentPerson, Citation currentCitation)
{
if (currentCitation == null) return NameIdentity.None;
if (currentCitation.CitationManager == null) return NameIdentity.None;
var placeholderCitations = currentCitation.CitationManager.PlaceholderCitations;
if (placeholderCitations == null || !placeholderCitations.Any()) return NameIdentity.None;
List citedPersons = (
from citation in placeholderCitations
where citation.Template != null
from personField in citation.Template.PersonFieldElements
from person in personField.GetPersonsCited(citation)
select person
).Distinct().ToList();
List personsWithIdenticalLastName = citedPersons.Where(p => string.Equals(p.LastName, currentPerson.LastName, StringComparison.OrdinalIgnoreCase) && p != currentPerson).ToList();
List personsWithIdenticalLastNameFirstNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFull = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = new List();
List personsWithIdenticalLastNameFirstNameFullMiddleNameFull = new List();
if (!string.IsNullOrEmpty(currentPerson.FirstName))
{
personsWithIdenticalLastNameFirstNameInitial = (
from person in personsWithIdenticalLastName
where !string.IsNullOrEmpty(person.FirstName) && person.FirstName[0] == currentPerson.FirstName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFull = (
from person in personsWithIdenticalLastNameFirstNameInitial
where string.Equals(person.FirstName, currentPerson.FirstName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (!string.IsNullOrEmpty(currentPerson.MiddleName))
{
personsWithIdenticalLastNameFirstNameFullMiddleNameInitial = (
from person in personsWithIdenticalLastNameFirstNameFull
where !string.IsNullOrEmpty(person.MiddleName) && person.MiddleName[0] == currentPerson.MiddleName[0]
select person
).ToList();
personsWithIdenticalLastNameFirstNameFullMiddleNameFull = (
from person in personsWithIdenticalLastNameFirstNameFullMiddleNameInitial
where string.Equals(person.MiddleName, currentPerson.MiddleName, StringComparison.OrdinalIgnoreCase)
select person
).ToList();
}
if (personsWithIdenticalLastNameFirstNameFullMiddleNameFull.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameFull;
if (personsWithIdenticalLastNameFirstNameFullMiddleNameInitial.Any()) return NameIdentity.LastNameFirstNameFullMiddleNameInitial;
if (personsWithIdenticalLastNameFirstNameFull.Any()) return NameIdentity.LastNameFirstNameFull;
if (personsWithIdenticalLastNameFirstNameInitial.Any()) return NameIdentity.LastNameFirstNameInitial;
if (personsWithIdenticalLastName.Any()) return NameIdentity.LastName;
return NameIdentity.None; //?
}
#endregion OtherPersonWithSameLastNameAlsoCited
}
}]]>
false
Add initials if there are other authors with the same last name
{0} [first 6 authors, et al.] [and]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
, and
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
and
true
5
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
doi:{0}
Always
Always
.
Reference
true
NextElementHasData
DOI:
Doi
false
false
{0} (Director) [if no producer]
Always
.
Always
.
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
Always
(Director)
Always
(Directors)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
Advance online publication
Always
Always
.
Reference
true
Always
Advance online publication
false
({0})
Always
.
Always
Reference
true
NextElementHasData
(
Date2
false
D
Always
in press
false
false
PreviousElementHasData
)
false
. {0}
Always
Always
.
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
...
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
, {0}
Always
Always
,
Reference
true
YearResolved
false
D
Always
in press
true
false
false
[Special issue]
Always
Always
Reference
true
Always
[Special issue]
true
Retrieved from {0} website: {1}
Always
Always
.
Reference
true
AnyElementInComponentHasData
Retrieved from
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
Always
AttributeHasData
Always
AttributeHasData
Always
(
AttributeHasData
Always
)
AttributeHasData
false
PreviousAndNextElementsHaveData
website:
OnlineAddress
false
false
false
false
false
PreviousElementHasData
*
false
({0} year/month day)
Always
.
Always
Reference
true
NextElementHasData
(
YearResolved
false
yyy, MMMM d
Always
in press
true
true
AnyElementInComponentHasData
)
false
, {0} [pers. comm.]
Always
Always
,
Reference
true
YearResolved
false
MMMM d, yyyy
Always
in press
true
true
false
{0} [first 6 authors et al.] [pers. comm.]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
&
true
5
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} [& repeated] [pers. comm.]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
&
true
2
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} [and repeated] [pers. comm.]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
, and
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
and
true
2
1
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
, Vol. {0}
Always
Always
,
Reference
true
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Vol.
Always
Always
Vol.
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}: {1}. {2} [{3}]
Always
.
Always
.
Reference
true
Title
false
false
false
false
true
false
false
false
false
false
PreviousAndNextElementsHaveData
:
Subtitle
false
NextElementHasData
.
TitleSupplement
false
NextElementHasData
[
TranslatedTitle
false
PreviousElementHasData
]
false
{0}: {1}. [italic] [{2}]
Always
.
Always
.
Reference
true
Title
false
false
false
false
true
false
false
false
false
false
PreviousAndNextElementsHaveData
:
Subtitle
false
false
false
false
true
false
false
false
false
false
NextElementHasData
.
NextElementHasData
[
TranslatedTitle
false
PreviousElementHasData
]
false
{0}
Always
Always
.
Reference
true
Translators
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
Always
AttributeHasData
Always
AttributeHasData
Always
(
AttributeHasData
Always
)
AttributeHasData
false
false
{0}
Always
Always
.
Reference
true
EditionNumberResolved
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
ParentReference
true
AccessDate
false
D
Always
in press
true
false
false
{0}
Always
.
Always
ParentReference
true
Additions
false
false
{0}
Always
Always
ParentReference
true
Authors
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
Always
ParentReference
true
Collaborators
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
ParentReference
true
Date
false
D
Always
in press
true
false
false
{0}
Always
.
Always
ParentReference
true
Date2
false
D
Always
in press
true
false
false
{0}
Always
.
Always
ParentReference
true
Edition
false
Always
th
Always
Always
ed.
Always
Always
ed.
Always
1|st|2|nd|3|rd
Always
Always
true
false
In {0}
Always
.
Always
ParentReference
true
Always
In
Editors
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
ParentReference
true
CustomField1
false
false
{0}
Always
.
Always
ParentReference
true
CustomField2
false
false
{0}
Always
.
Always
ParentReference
true
CustomField3
false
false
{0}
Always
.
Always
ParentReference
true
CustomField4
false
false
{0}
Always
Always
:
ParentReference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
ParentReference
true
Isbn
false
false
{0}
Always
Always
.
ParentReference
true
Periodical
false
true
false
false
false
true
false
false
false
false
false
Name
false
{0}
Always
.
Always
ParentReference
true
Language
false
false
No. {0}
Always
.
Always
ParentReference
true
Number
false
Always
false
false
false
false
false
false
false
true
false
th
Always
No.
Always
Always
No.
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
ParentReference
true
PageCount
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
ParentReference
true
NumberOfVolumes
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}
Always
.
Always
ParentReference
true
OnlineAddress
false
false
false
false
false
false
{0}
Always
.
Always
ParentReference
true
OriginalPublication
false
D
Always
im Druck
true
false
false
{0}
Always
Always
ParentReference
true
OthersInvolved
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}
Always
.
Always
ParentReference
true
PageRange
false
Arabic
true
FullRange
Always
Always
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
Always
Always
false
FullRange
Always
Always
Always
false
FullRange
Always
Always
Always
false
{0}
Always
.
Always
ParentReference
true
ParallelTitle
false
false
{0}
Always
,
Always
.
ParentReference
true
PlaceOfPublication
false
false
-1
-1
Always
, et al.
Always
,
false
{0}
Always
.
Always
ParentReference
true
Price
false
false
{0}
Always
:
Always
ParentReference
true
Publishers
false
false
{0}
Always
Always
,
ParentReference
true
SeriesTitle
false
true
Name
false
{0}
Always
.
Always
ParentReference
true
ShortTitle
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField1
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField2
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField3
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField4
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField5
false
false
{0}
Always
.
Always
ParentReference
true
SpecificField6
false
false
{0}[Paper präsentiert bei]
Always
.
Always
ParentReference
true
NextElementHasData
Paper präsentiert bei der
NextElementHasData
„
SpecificField7
false
PreviousElementHasData
“
false
{0}
Always
.
Always
ParentReference
true
StorageMedium
false
false
{0}
Always
.
Always
ParentReference
true
Title
false
false
{0}
Always
.
Always
ParentReference
true
Subtitle
false
false
{0}
Always
.
Always
ParentReference
true
TitleInOtherLanguages
false
false
{0}
Always
.
Always
.
ParentReference
true
TitleSupplement
false
false
false
false
true
false
false
false
false
false
false
{0}
Always
.
Always
ParentReference
true
TranslatedTitle
false
false
{0}
Always
.
Always
ParentReference
true
UniformTitle
false
false
{0}
Always
Always
,
ParentReference
true
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
false
false
false
true
false
false
false
false
false
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
In Titel: Untertitel
Always
;
Always
ParentReference
true
NextElementHasData
In
Title
false
false
false
false
true
false
false
false
false
false
NextElementHasData
:
Subtitle
false
false
false
false
true
false
false
false
false
false
false
Herausgeber, Ed.
Always
.
Always
ParentReference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
,
Always
,
false
false
false
false
Always
,
Always
Always
Always
.
false
false
false
false
false
Always
,
Always
, Ed.
Always
, Eds.
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
Jahr
Always
.
Always
ParentReference
true
YearResolved
false
D
Always
in press
true
false
false
{0}. {1} [italic]
Always
.
Always
,
ParentReference
true
Title
false
false
false
false
true
false
false
false
false
false
NextElementHasData
false
false
false
true
false
false
false
false
false
.
Subtitle
false
false
false
false
true
false
false
false
false
false
false
In {0} (Eds.)
Always
,
Always
ParentReference
true
Always
In
Editors
false
-1
LastNameFirstName
Full
Abbreviated
All
Always
/
Always
/
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
true
true
false
false
Always
,
Always
(Hrsg.)
Always
(Hrsg.)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0}: {1}
Always
.
Always
.
ParentReference
true
PlaceOfPublication
false
false
-1
-1
Always
, et al.
Always
,
PreviousAndNextElementsHaveData
:
Publishers
false
false
Vol. {0}. {1}
Always
.
Always
:
ParentReference
true
NextElementHasData
false
false
false
true
false
false
false
false
false
Vol.
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
false
false
false
true
false
false
false
false
false
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
PreviousElementHasData
.
SeriesTitle
false
true
false
false
false
true
false
false
false
false
false
Name
false
{0}
Always
Always
.
ParentReference
true
IndexInBibliography
false
Always
Arabic
Always
Always
LetterLowerCase
Always
Always
false
{0}
Always
Always
.
ParentReference
true
FirstFootnoteCitationNumber
false
false
false
false
(
Always
Always
ParentReference
true
Always
(
false
)
Always
Always
ParentReference
true
Always
)
false
{0} ed.
Always
Always
ParentReference
true
EditionNumberResolved
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
PreviousElementHasData
. Aufl.
false
In
Always
Always
.
ParentReference
true
Always
In
false
On {0}
Always
Always
.
ParentReference
true
NextElementHasData
On
Title
false
false
false
false
true
false
false
false
false
false
false
[{0}]
Always
Always
ParentReference
true
NextElementHasData
[
StorageMedium
false
PreviousElementHasData
]
false
In {0} (Ed.), {1}: {2}
Always
Always
.
ParentReference
true
AnyElementInComponentHasData
In
Editors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
false
true
Always
&
true
6
6
Always
, et al.
false
true
false
false
Always
,
Always
(Ed.)
Always
(Eds.)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
PreviousAndNextElementsHaveData
,
Title
false
false
false
false
true
false
false
false
false
false
NextElementHasData
:
Subtitle
false
false
false
false
true
false
false
false
false
false
false
{0} Vol. Ed.
Always
Always
&
ParentReference
true
Editors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
false
true
false
false
Always
,
Always
(Vol. Ed.)
Always
(Vol. Eds.)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
In {0} (Series Ed.)
Always
Always
ParentReference
true
Always
In
SeriesTitleEditors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
false
true
false
false
Always
,
Always
(Series Ed.)
Always
(Series Eds.)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
{0} [italic]
Always
Always
.
ParentReference
true
TitleSupplement
false
false
false
false
true
false
false
false
false
false
false
{0}: Vol. {1} [italic]
Always
Always
,
ParentReference
true
SeriesTitle
false
true
false
false
false
true
false
false
false
false
false
Name
PreviousAndNextElementsHaveData
:
Volume
false
Always
th
false
false
false
true
false
false
false
false
false
Always
false
false
false
true
false
false
false
false
false
Vol.
Always
Always
false
false
false
true
false
false
false
false
false
Vol.
Always
Always
1|st|2|nd|3|rd
Always
Always
false
false
. {0} {1} [italic]
Always
Always
ParentReference
true
Title
false
false
false
false
true
false
false
false
false
false
PreviousAndNextElementsHaveData
.
Subtitle
false
false
false
false
true
false
false
false
false
false
false
Vol. {0}
Always
Always
,
ParentReference
true
Volume
false
Always
th
Always
Vol.
Always
Always
Vol.
Always
Always
1|st|2|nd|3|rd
Always
Always
false
false
, {0}
Always
Always
,
ParentReference
true
Volume
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
Always
Always
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
. In {0} (Series Ed.)
Always
Always
.
ParentReference
true
Always
In
SeriesTitleEditors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
false
false
true
7
6
Always
, . . .
false
true
false
false
Always
,
Always
(Series Ed.)
Always
(Series Eds.)
NameAbbreviation
NextElementHasData
AttributeHasData
PreviousElementHasData
AttributeHasData
NextElementHasData
(
AttributeHasData
PreviousElementHasData
)
AttributeHasData
false
false
({0})
Always
Always
ParentReference
true
NextElementHasData
(
Number
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
PreviousElementHasData
)
false
false
Literaturverzeichnis
.
567
true
None
Arabic
1
0
;
true
60
CustomSortMacro
Unnamed Custom Sort Macro
0 (positive): x should go after y, x is greater than y
< 0 (negative): x should go before y, x is less than
*/
if (x == null || y == null) return 0;
//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;
var xReferenceType = xReference.ReferenceType;
var yReferenceType = yReference.ReferenceType;
if (xReferenceType == ReferenceType.PersonalCommunication) xBibliographyCitation.NoBib = true;
if (yReferenceType == ReferenceType.PersonalCommunication) yBibliographyCitation.NoBib = true;
//(1) Some comparers are predefined as static members of the CitationComparer class, see IntelliSense
var defaultCitationComparer = CitationComparer.AuthorYearTitleOrNoAuthorThenTitleYearAscending;
return defaultCitationComparer.Compare(x, y);
}
}
}]]>
OrderOfAppearance
LetterLowerCase
false
)
false
NeedsReview
None
JournalArticle
true
AuthorsMissing
NeedsReview
None
Book
true
NeedsReview
None
BookEdited
true
NeedsReview
BookEdited
Contribution
true
Completed
UnpublishedWork
Contribution
false
Completed
CollectedWorks
Contribution
false
ParentReferenceSeriesTitleMissing
5c367aa6-36c1-4252-a9a5-c6c6c1bab858
NeedsReview
ConferenceProceedings
Contribution
true
Completed
SpecialIssue
Contribution
false
NeedsReview
None
InternetDocument
true
NeedsReview
None
Thesis
true
NeedsReview
None
NewspaperArticle
true
Completed
None
UnpublishedWork
false
1803be6d-054b-4d55-a7a9-49f13dd62fed
NeedsReview
None
Unknown
true
Completed
None
ArchiveMaterial
false
Completed
BookEdited
ArchiveMaterial
false
Completed
None
AudioBook
false
NeedsReview
None
AudioOrVideoDocument
true
Completed
None
RadioPlay
false
Completed
None
CollectedWorks
false
SeriesTitleMissing
SeriesTitleMissing
EditorsMissing
Completed
None
ComputerProgram
false
UnderConstruction
None
ConferenceProceedings
true
Completed
None
CourtDecision
false
Completed
None
InterviewMaterial
false
Completed
None
Map
false
AuthorsMissing
Completed
None
Movie
false
EditorsMissing
Completed
None
MusicTrack
false
Completed
MusicAlbum
MusicTrack
false
AuthorsMissing
Completed
None
NewsAgencyReport
false
Completed
None
Patent
false
Completed
None
PersonalCommunication
false
Completed
None
PressRelease
false
Completed
None
Broadcast
false
Completed
None
File
false
Completed
None
MusicAlbum
false
AuthorsMissing
Completed
None
Standard
false
Completed
None
StatuteOrRegulation
false
Completed
BookEdited
StatuteOrRegulation
false
Completed
None
Manuscript
false
Completed
None
Lecture
false
Completed
None
LegalCommentary
false
Completed
LegalCommentary
ContributionInLegalCommentary
false
Completed
None
SpecialIssue
false
false
,
;
OrderOfAppearance
false
None
Unknown
None
JournalArticle
false
None
Unknown
None
Book
false
None
Unknown
None
BookEdited
false
None
Unknown
BookEdited
Contribution
false
None
Unknown
UnpublishedWork
Contribution
false
None
Unknown
CollectedWorks
Contribution
false
None
Unknown
ConferenceProceedings
Contribution
false
None
Unknown
SpecialIssue
Contribution
false
None
Unknown
None
InternetDocument
false
None
Unknown
None
Thesis
false
None
Unknown
None
NewspaperArticle
false
None
Unknown
None
UnpublishedWork
false
None
None
Unknown
false
9e5c140a-2130-41a5-bbdc-69a18dde3210
OrganizationsMissing
EditorsMissing
AuthorsMissing
None
Unknown
None
ArchiveMaterial
false
None
Unknown
BookEdited
ArchiveMaterial
false
None
Unknown
None
AudioBook
false
None
Unknown
None
AudioOrVideoDocument
false
None
Unknown
None
RadioPlay
false
None
Unknown
None
CollectedWorks
false
None
Unknown
None
ComputerProgram
false
None
Unknown
None
ConferenceProceedings
false
None
Unknown
None
CourtDecision
false
None
None
InterviewMaterial
false
RepeatingFootnote
168b7f53-7334-4cf3-b89c-a9fa0b48c2a2
None
Unknown
None
Map
false
None
Unknown
None
Movie
false
None
Unknown
None
MusicTrack
false
None
Unknown
MusicAlbum
MusicTrack
false
None
Unknown
None
NewsAgencyReport
false
None
None
Patent
false
None
None
PersonalCommunication
false
RepeatingFootnote
None
Unknown
None
PressRelease
false
None
Unknown
None
Broadcast
false
None
Unknown
None
File
false
None
Unknown
None
MusicAlbum
false
None
None
Standard
false
None
None
StatuteOrRegulation
false
None
StatuteOrRegulation
BookEdited
StatuteOrRegulation
false
None
Unknown
None
Manuscript
false
None
Unknown
None
Lecture
false
None
Unknown
None
LegalCommentary
false
None
Unknown
LegalCommentary
ContributionInLegalCommentary
false
None
Unknown
None
SpecialIssue
false
false
false
true
,
;
;
;
true
3
–
true
3
–
AlwaysButOncePerRange
true
AuthorThenYearAscendingThenTitle
false
None
Unknown
None
JournalArticle
false
None
Unknown
None
Book
false
None
Unknown
None
BookEdited
false
None
Unknown
BookEdited
Contribution
false
None
Unknown
UnpublishedWork
Contribution
false
None
Unknown
CollectedWorks
Contribution
false
None
Unknown
ConferenceProceedings
Contribution
false
None
Unknown
SpecialIssue
Contribution
false
None
Unknown
None
InternetDocument
false
None
Unknown
None
Thesis
false
None
Unknown
None
NewspaperArticle
false
None
Unknown
None
UnpublishedWork
false
None
None
Unknown
false
OrganizationsMissing
EditorsMissing
AuthorsMissing
None
Unknown
None
ArchiveMaterial
false
None
Unknown
BookEdited
ArchiveMaterial
false
None
Unknown
None
AudioBook
false
None
Unknown
None
AudioOrVideoDocument
false
None
Unknown
None
RadioPlay
false
None
Unknown
None
CollectedWorks
false
None
Unknown
None
ComputerProgram
false
None
Unknown
None
ConferenceProceedings
false
None
Unknown
None
CourtDecision
false
None
None
InterviewMaterial
false
RepeatingInTextCitation
07f9f7e8-3e3a-4174-a779-8578b63c1800
RepeatingInTextCitation
07f9f7e8-3e3a-4174-a779-8578b63c1800
PlaceholderCitationFormatOption1
PlaceholderCitationFormatOption1
RepeatingInTextCitation
168b7f53-7334-4cf3-b89c-a9fa0b48c2a2
168b7f53-7334-4cf3-b89c-a9fa0b48c2a2
07f9f7e8-3e3a-4174-a779-8578b63c1800
PlaceholderCitationFormatOption1
168b7f53-7334-4cf3-b89c-a9fa0b48c2a2
None
Unknown
None
Map
false
None
Unknown
None
Movie
false
None
Unknown
None
MusicTrack
false
None
Unknown
MusicAlbum
MusicTrack
false
None
Unknown
None
NewsAgencyReport
false
None
None
Patent
false
None
None
PersonalCommunication
false
RepeatingInTextCitation
07f9f7e8-3e3a-4174-a779-8578b63c1800
PlaceholderCitationFormatOption1
None
Unknown
None
PressRelease
false
None
Unknown
None
Broadcast
false
None
Unknown
None
File
false
None
Unknown
None
MusicAlbum
false
None
None
Standard
false
None
None
StatuteOrRegulation
false
None
StatuteOrRegulation
BookEdited
StatuteOrRegulation
false
None
Unknown
None
Manuscript
false
None
Unknown
None
Lecture
false
None
Unknown
None
LegalCommentary
false
None
Unknown
LegalCommentary
ContributionInLegalCommentary
false
None
Unknown
None
SpecialIssue
false