33
6.0.0.4
false
2013-04-29T18:19:52+02:00
JHP
2023-05-10T11:22:14
Arxio_db
InTextCitation
EarthSciences
de
202305_Die_Kueste_eng
AddLetterAfterYear
Abbreviated
Abbreviated
All
FirstNameLastName
Year
false
None
1
2
3
ContributionConferenceProceedings
Autor (Jahr) Bedingung
Field "Language" starts with "en"
false
{0}
Always
.
Always
Reference
true
AccessDate
false
D
Always
in press
true
false
false
{0}
Always
.
Always
Reference
true
Additions
false
false
{0}
Always
Always
.
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}
Always
Always
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, {0}
Always
Always
,
Reference
true
Date
false
d
Always
im Druck
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} (Hrsg.)
Always
Always
.
Reference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(ed.)
Always
(eds.)
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}
Always
.
Always
Reference
true
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
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}
Always
.
Always
Reference
true
Isbn
false
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
//Name of filter: Convert output to title case (with exceptions, such as "and", "or" etc.)
//Version 1.8: Parametrized conversion of full upper case words; functionality was impaired in version 1.7
//Version 1.7: Added checking for null on GetTextUnitsUnfiltered() to avoid NullReferenceExceptions at runtime (which may lead to auto-deactivation of filter)
//Version 1.6: ToUpperFirstLetter() method now handles words completely in UPPERCASE and takes culture into consideration
//Version 1.5: capitalize stopwords directly after quotation mark
//Version 1.4: improved word tokenization
//Version 1.3: ignore expressions which are written completely in upper case
//Version 1.2: new option to ensure that the reference language is "English"
var ensureEnglishIsReferenceLanguage = true; //if set to false, the component part filter will ALWAYS capitalize, regardless of the reference's language
var convertFullUpperCaseWords = ConvertFullUpperCaseWords.Never;
#region Info on ConvertFullUpperCaseWords parameter
/*
Example 1: UN and US government made agreement on payments of contribution
Example 2: UN AND US GOVERNMENT MADE AGREEMENT ON PAYMENTS OF CONTRIBUTION
ConvertFullUpperCaseWords.Never (default)
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: UN and US GOVERNMENT MADE AGREEMENT on PAYMENTS of CONTRIBUTION
ConvertFullUpperCaseWords.Always:
Result 1: Un and Us Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
ConvertFullUpperCaseWords.Auto:
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
*/
#endregion
CultureInfo culture = CultureInfo.CurrentCulture;
handled = false;
if (citation == null) return null;
if (citation.Reference == null) return null;
if (componentPart == null) return null;
if (template == null) return null;
if (ensureEnglishIsReferenceLanguage)
{
if (string.IsNullOrEmpty(citation.Reference.Language)) return null;
var termsList = new string[] {
"en",
"eng",
"engl",
"English",
"Englisch"
};
var regEx = new Regex(@"\b(" + string.Join("|", termsList) + @")\b", RegexOptions.IgnoreCase);
if (!regEx.IsMatch(citation.Reference.Language))
{
return null;
}
}
//Words that will not be capitalized; add words to this list as required
string[] exceptionsArray = { "a", "an", "and", "as", "at",
"but", "by", "down", "for", "from",
"in", "into", "nor",
"of", "on", "onto", "or", "over",
"so", "the", "till", "to",
"up", "via", "with", "yet" };
List exceptions = new List(exceptionsArray);
var textUnits = componentPart.GetTextUnitsUnfiltered(citation, template);
if (textUnits == null || !textUnits.Any()) return null;
string fullString = textUnits.ToString();
bool fullUpperCaseTreatment = false;
switch (convertFullUpperCaseWords)
{
case ConvertFullUpperCaseWords.Always:
fullUpperCaseTreatment = true;
break;
case ConvertFullUpperCaseWords.Never:
{
fullUpperCaseTreatment = false;
}
break;
default:
case ConvertFullUpperCaseWords.Auto:
{
if (HasLowerCase(fullString))
{
fullUpperCaseTreatment = false;
}
else
{
fullUpperCaseTreatment = true;
}
}
break;
}
string prevWord = string.Empty;
for (int i = 0; i < textUnits.Count; i++)
{
//textUnit.Text = textUnits[i].Text.ToLower(culture);
var text = textUnits[i].Text;
//Break the input text into a list of words at whitespaces,
//hyphens, opening parens, and ASCII quotation marks
string splitPattern = @"(\s)|(-)|(\()|(\"")";
List words = new List(Regex.Split(text, splitPattern));
var counter = 0;
text = string.Empty;
//Check each remaining word against the list, and append it to the new text.
//Leave words in upper case unchanged, unless they appear in the exception list.
foreach (string word in words)
{
counter++;
if (counter == 1) // first word in a textunit
{
if (i == 0) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // first word overall => capitalize
else if ((String.IsNullOrWhiteSpace(prevWord)) && !(exceptions.Contains(word.ToLower(culture)))) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // new textunit after space and not stopword => capitalize
else text = text + word; // in all other cases: do nothing
}
else if (prevWord == @"""") // capitalize also stopwords directly after quotation marks
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
else if (exceptions.Contains(word.ToLower(culture))) // check list of exceptions
{
text = text + word.ToLower(culture);
}
else // in all other cases: capitalize
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
prevWord = word; // save current word as previous word for next iteration
}
textUnits[i].Text = text;
}
handled = true;
return textUnits;
}
public string ToUpperFirstLetter(string input, bool ensureAllButFirstIsLower = false, CultureInfo culture = null)
{
if (string.IsNullOrEmpty(input)) return input;
char[] letters = input.ToCharArray();
for (var i = 0; i < letters.Length; i++)
{
if (i == 0)
{
letters[0] = char.ToUpper(letters[0], culture);
continue;
}
if (i > 0 && ensureAllButFirstIsLower == false) break;
letters[i] = char.ToLower(letters[i], culture);
}
return new string(letters);
}
public enum ConvertFullUpperCaseWords
{
Never,
Always,
Auto //converts full uppercase words to lower case only if the conmplete text is written in uppercase
};
public bool HasLowerCase (string input)
{
return !string.IsNullOrEmpty(input) && input.Any(c => char.IsLower(c));
}
}
}]]>
true
Convert Output to Title Case V 1.8
. In: {0}
Always
Always
.
Reference
true
Always
In:
Periodical
false
true
Name
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, S. {0}
Always
Always
,
Reference
true
PageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
Sp.
Always
Always
false
FullRange
Always
Sp.
Always
Always
Arabic
true
FullRange
Always
Nr.
Always
–
Always
false
StartPageOnly
Always
Nr.
Always
Always
false
FullRange
Always
Nr.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Rn.
Always
–
Always
true
FullRange
Always
Rn.
Always
Always
false
FullRange
Always
Rn.
Always
Always
false
{0}
Always
.
Always
Reference
true
ParallelTitle
false
false
{0}
Always
Always
.
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
false
{0}
Always
.
Always
Reference
true
Price
false
false
. {0}: {1}
Always
Always
Reference
true
Publishers
false
NextElementHasData
,
PlaceOfPublication
false
true
1
1
Always
Always
,
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
NextElementHasData
[
StorageMedium
false
PreviousElementHasData
]
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
TranslatedTitle
false
false
{0}
Always
.
Always
Reference
true
UniformTitle
false
false
, {0}
Always
Always
,
Reference
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
{0}
Always
Always
Reference
true
YearResolved
false
yyyy
Always
im Druck
true
true
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})
Always
Always
,
Reference
true
YearResolved
false
yyyy
Always
im Druck
true
true
false
: {0}: {1}
Always
Always
:
Reference
true
Title
false
PreviousAndNextElementsHaveData
.
Subtitle
false
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} [kursiv]
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}, {1})
Always
Always
Reference
true
NextElementHasData
(
Authors
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
1
Always
et al.
false
false
false
true
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
AnyElementInComponentHasData
)
false
{0}, {1}
Always
Always
Reference
true
Authors
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
1
Always
et al.
false
false
false
true
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
PreviousAndNextElementsHaveData
,
YearResolved
false
D
Always
in press
true
false
false
. ({0})
Always
Always
,
Reference
true
Date
false
d
Always
im Druck
true
true
false
. {0}. Aufl.
Always
Always
.
Reference
true
Edition
false
Always
th
Always
Always
. Aufl.
Always
Always
. Aufl.
Always
1|st|2|nd|3|rd
Always
Always
false
false
{0}. {1} [kursiv]
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
false
_({0})
Always
Always
.
Reference
true
TitleSupplement
false
false
({0})
Always
.
Always
,
Reference
true
PageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
Sp.
Always
Always
false
FullRange
Always
Sp.
Always
Always
Arabic
true
FullRange
Always
Nr.
Always
–
Always
false
StartPageOnly
Always
Nr.
Always
Always
false
FullRange
Always
Nr.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Rn.
Always
–
Always
false
FullRange
Always
Rn.
Always
Always
false
FullRange
Always
Rn.
Always
Always
false
(Originalarbeit erschienen {0})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
NextElementHasData
Originalarbeit erschienen
OriginalPublication
false
D
Always
im Druck
true
false
AnyElementInComponentHasData
)
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
//Version 1.0
//Add prefix "no." or "Nr." to volume field depening on language of reference
handled = false;
if (citation == null) return null;
if (citation.Reference == null) return null;
if (componentPart == null) return null;
#region Find numeric field elements
//we treat only numeric field elemements that output the Volume field
var numericFieldElements = componentPart.Elements.OfType().Where(element => element.PropertyId == ReferencePropertyId.Number);
if (numericFieldElements == null || numericFieldElements.Count() == 0) return null;
#endregion Find numeric field elements
#region Determine reference to look at
Reference reference;
if (componentPart.Scope == ComponentPartScope.ParentReference)
{
if (citation.Reference.ParentReference == null) return null;
reference = citation.Reference.ParentReference as Reference;
}
else
{
reference = citation.Reference as Reference;
}
if (reference == null) return null;
#endregion Determine reference to look at
#region Determine reference language
Language language = Language.German;
var wordListEN = new string[] {
"EN",
"ENG",
"ENGL",
"English",
"Englisch",
"Anglais"
};
var regExEN = new Regex(@"\b(" + string.Join("|", wordListEN) + @")\b", RegexOptions.IgnoreCase);
if (regExEN.IsMatch(reference.Language)) language = Language.English;
#endregion Determine reference language
foreach(NumericFieldElement element in numericFieldElements)
{
var property = element.PropertyId;
var value = (string)reference.GetValue(property);
if (string.IsNullOrEmpty(value)) continue;
int number;
bool isNumeric = int.TryParse(value, out number);
#region Volume field contains just a number
if (isNumeric)
{
switch (language)
{
case Language.English:
{
element.SingularPrefix.Text = "no. ";
element.PluralPrefix.Text = "no. ";
}
break;
case Language.German:
{
element.SingularPrefix.Text = "Nr. ";
element.PluralPrefix.Text = "Nr. ";
}
break;
}
}
#endregion Volume field contains just a number
#region Volume field contains text
else
{
switch (language)
{
case Language.English:
{
element.SingularPrefix.Text = "";
element.PluralPrefix.Text = "";
}
break;
case Language.German:
{
element.SingularPrefix.Text = "";
element.PluralPrefix.Text = "";
}
break;
}
}
#endregion Volume field contains text
}
return null;
}
private enum Language
{
English,
German
}
}
}]]>
true
Nr/No
_(Report {0} Nr./no. {1})
Always
Always
Reference
true
AnyElementInComponentHasData
(
SeriesTitle
false
true
Name
PreviousAndNextElementsHaveData
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
{0}: {1}
Always
.
Always
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
NextElementHasData
:
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
Nicht veröffentlichtes Manuskript
Always
.
Always
Reference
true
Always
Nicht veröffentlichtes Manuskript.
false
{0} (Produzent)
Always
.
Always
Reference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Produzent)
Always
(Produzenten)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0} (Regie)
Always
.
Always
,
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Regie)
Always
(Regie)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
[Spielfilm]
Always
.
Always
Reference
true
Always
[Spielfilm]
false
{0} (Autor)
Always
.
Always
Reference
true
Authors
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
PreviousElementHasData
(Autor)
false
{0}, {1}
Always
.
Always
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
,
YearResolved
false
D
Always
In press
true
false
false
. Online verfügbar unter {0}
Always
Always
.
Reference
true
OnlineAddress
false
false
false
false
false
PreviousElementHasData
, accessed
AccessDate
false
dd-MM-yyyy
Always
im Druck
true
true
false
{0}, {1}
Always
.
Always
Reference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
false
{0} (Sprecher)
Always
.
Always
,
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Full
All
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Sprecher)
Always
(Sprecher)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
. Interview mit {0}
Always
Always
.
Reference
true
NextElementHasData
Interview mit
Collaborators
false
-1
FirstNameLastName
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0} {1}
Always
Always
Reference
true
SpecificField2
false
PreviousAndNextElementsHaveData
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} {1})
Always
Always
Reference
true
NextElementHasData
(
SpecificField2
false
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
AnyElementInComponentHasData
)
false
{0}, {1}
Always
.
Always
Reference
true
SpecificField1
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
false
({0}, {1})
Always
Always
Reference
true
NextElementHasData
(
SpecificField1
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
PreviousElementHasData
)
false
({0} {1})
Always
Always
Reference
true
Always
(
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
SpecificField2
false
AnyElementInComponentHasData
)
false
{0}
Always
.
Always
Reference
true
Year
false
D
Always
in press
true
false
false
({0} {1}, {2})
Always
.
Always
Reference
true
Always
(
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
SpecificField2
false
NextElementHasData
,
QuotationPageRange
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
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
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
AnyElementInComponentHasData
)
false
{0}, {1}, {2}
Always
Always
Reference
true
SpecificField1
false
PreviousAndNextElementsHaveData
,
YearResolved
false
D
Always
in press
true
false
PreviousAndNextElementsHaveData
,
QuotationPageRange
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
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
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}, {1}, {2})
Always
.
Always
Reference
true
NextElementHasData
(
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
NextElementHasData
,
QuotationPageRange
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
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
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
PreviousElementHasData
)
false
({0} {1}, {2})
Always
Always
Reference
true
NextElementHasData
(
SpecificField2
false
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
NextElementHasData
,
QuotationPageRange
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
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
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
AnyElementInComponentHasData
)
false
{0}, {1}
Always
Always
Reference
true
Subtitle
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
false
, {0} [ohne S.]
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}, {1}
Always
Always
Reference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
NextElementHasData
,
YearResolved
false
D
Always
in press
true
false
false
(
Always
Always
Reference
true
Always
(
false
)
Always
Always
Reference
true
Always
)
false
{0} [nur Nachnamen]
Always
Always
Reference
true
Authors
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, S. {0}
Always
Always
,
Reference
true
QuotationPageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
Sp.
Always
Always
false
FullRange
Always
Sp.
Always
Always
Arabic
true
FullRange
Always
Always
–
Always
false
StartPageOnly
Always
Always
Always
false
FullRange
Always
Always
Always
Arabic
true
FullRange
Always
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Rn.
Always
–
Always
false
FullRange
Always
Rn.
Always
Always
false
FullRange
Always
Rn.
Always
Always
false
{0} [nur Nachnamen, ohne Zusätze]
Always
Always
Reference
true
Editors
false
2
LastNameOnly
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
,
Always
,
Always
, &
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, {0}
Always
Always
Reference
true
NextElementHasData
,
YearResolved
false
yyyy
Always
im Druck
true
true
false
. {0}
Always
Always
:
Reference
true
Title
false
false
[Mit {0}]
Always
.
Always
.
Reference
true
AnyElementInComponentHasData
[Mit
Collaborators
false
-1
LastNameFirstNameCompact
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
AnyElementInComponentHasData
]
false
{0}: {1}
Always
Always
.
Reference
true
SpecificField1
false
PreviousAndNextElementsHaveData
:
PlaceOfPublication
false
false
-1
-1
Always
, et al.
Always
,
false
[Themenheft]
Always
Always
Reference
true
Always
[Themenheft]
false
{0} (Regie)
Always
.
Always
,
Reference
true
Editors
false
-1
LastNameFirstName
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
PreviousElementHasData
(Regie)
false
{0} (Redaktion)
Always
.
Always
,
Reference
true
Collaborators
false
-1
LastNameFirstName
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
PreviousElementHasData
(Redaktion)
false
{0} (Komponist)
Always
.
Always
,
Reference
true
Authors
false
-1
LastNameFirstName
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Komponist)
Always
(Komponisten)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0} (Interpret)
Always
.
Always
,
Reference
true
Collaborators
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Interpret)
Always
(Interpreten)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0} (Dirigent)
Always
.
Always
,
Reference
true
Editors
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(Dirigent)
Always
(Dirigenten)
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0} (Orchester)
Always
.
Always
.
Reference
true
Organizations
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
PreviousElementHasData
(Orchester)
false
{0} (Anmelder)
Always
.
Always
.
Reference
true
SpecificField2
false
PreviousElementHasData
(Anmelder)
false
({0}, {1}, {2}. {3})
Always
.
Always
,
Reference
true
SeriesTitle
false
true
Name
NextElementHasData
,
Volume
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
NextElementHasData
,
Edition
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
. Aufl.
Always
Always
. Aufl.
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
false
{0}: Bd. {1}
Always
.
Always
.
Reference
true
SeriesTitle
false
true
Name
NextElementHasData
:
NextElementHasData
Bd.
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
, {0} (Mitarbeiter)
Always
Always
,
Reference
true
Collaborators
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
6
Always
et al.
false
true
false
false
Always
,
Always
(Mitarbeiter)
Always
(Mitarbeiter)
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}: {1}
Always
.
Always
.
Reference
true
SeriesTitle
false
true
Name
PreviousAndNextElementsHaveData
:
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
(Band {0}, {1})
Always
.
Always
Reference
true
AnyElementInComponentHasData
(
NextElementHasData
Band
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
NextElementHasData
,
PageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
Sp.
Always
Always
false
FullRange
Always
Sp.
Always
Always
Arabic
true
FullRange
Always
Nr.
Always
–
Always
false
StartPageOnly
Always
Nr.
Always
Always
false
FullRange
Always
Nr.
Always
Always
Arabic
true
FullRange
Always
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Rn.
Always
–
Always
false
FullRange
Always
Rn.
Always
Always
false
FullRange
Always
Rn.
Always
Always
AnyElementInComponentHasData
)
false
, {0}
Always
Always
,
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
false
[{0}]
Always
.
Always
Reference
true
NextElementHasData
[
StorageMedium
false
PreviousElementHasData
]
false
_(Version {0})
Always
Always
Reference
true
NextElementHasData
(Version
SpecificField4
false
PreviousElementHasData
)
false
_[Computer Software]
Always
Always
Reference
true
Always
[Computer Software]
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
& {0} [et al]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
2
1
Always
et al.
false
true
false
true
Always
,
AbbreviationOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
PreviousElementHasData
false
false
{0}
Always
Always
.
Reference
true
SeriesTitleEditors
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
and
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
2
1
Always
et al.
false
false
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
[
PreviousElementHasData
]
false
false
{0} [und]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
and
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
5
1
Always
et al.
false
true
false
true
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
[
PreviousElementHasData
]
false
false
({0}, {1})
Always
Always
Reference
true
AnyElementInComponentHasData
(
YearResolved
false
yyyy
Always
im Druck
true
true
PreviousAndNextElementsHaveData
,
QuotationPageRange
false
Arabic
true
FullRange
Always
Sp.
Always
–
Always
false
StartPageOnly
Always
Sp.
Always
Always
false
FullRange
Always
Sp.
Always
Always
Arabic
true
FullRange
Always
Nr.
Always
–
Always
false
StartPageOnly
Always
Nr.
Always
Always
false
FullRange
Always
Nr.
Always
Always
Arabic
true
FullRange
Always
S.
Always
–
Always
false
StartPageOnly
Always
S.
Always
Always
false
FullRange
Always
S.
Always
Always
Arabic
true
FullRange
Always
§§
Always
–
Always
true
StartPageOnly
Always
§
Always
Always
false
FullRange
Always
§§
Always
Always
Arabic
true
FullRange
Always
Rn.
Always
–
Always
false
FullRange
Always
Rn.
Always
Always
false
FullRange
Always
Rn.
Always
Always
AnyElementInComponentHasData
)
false
{0} [und et al]
Always
Always
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameOnly
Full
Full
All
Always
,
Always
und
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
2
1
Always
et al.
false
false
false
true
Always
,
AbbreviationOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
PreviousElementHasData
false
false
({0} [year, month])
Always
,
Always
Reference
true
NextElementHasData
(
Date
false
yyyy, MMMM
Always
im Druck
true
true
PreviousElementHasData
)
false
. {0}
Always
Always
.
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
false
. {0}: {1}
Always
Always
,
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
PreviousAndNextElementsHaveData
:
Organizations
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
6
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, zuletzt geprüft am {0}
Always
Always
,
Reference
true
NextElementHasData
zuletzt geprüft am
AccessDate
false
dd.MM.yyyy
Always
in press
false
true
false
({0}) [with day and month]
Always
Always
Reference
true
YearResolved
false
, dd.MM.yyyy
Always
im Druck
true
true
false
({0}) [yyyy, d. MMMM]
Always
,
Always
Reference
true
NextElementHasData
(
Date
false
yyyy, d. MMMM
Always
im Druck
true
true
PreviousElementHasData
)
false
New component: {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
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} [first name last name]
Always
Always
.
Reference
true
Authors
false
-1
FirstNameLastName
Abbreviated
Abbreviated
All
Always
,
Always
&
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, persönl. Mitteilung, {0}
Always
Always
,
Reference
true
NextElementHasData
persönl. Mitteilung,
Date
false
d
Always
im Druck
false
true
false
, {0}/{1}
Always
Always
,
Reference
true
OriginalPublication
false
D
Always
im Druck
true
false
PreviousAndNextElementsHaveData
/
YearResolved
false
D
Always
im Druck
true
false
false
„{0}“
Always
Always
Reference
true
NextElementHasData
„
Title
false
PreviousElementHasData
“
false
{0}
Always
Always
.
Reference
true
AuthorsOrEditorsOrOrganizations
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
. {0}: {1}
Always
Always
.
Reference
true
PlaceOfPublication
false
true
1
1
Always
Always
,
PreviousAndNextElementsHaveData
:
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
6
Always
et al.
false
true
false
false
Always
,
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
, {0} ({1})
Always
Always
,
Reference
true
Volume
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
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
. doi: {0} [noPoint]
Always
Always
,
Reference
true
NextElementHasData
https://doi.org/10.1016/
Doi
false
false
. {0} st ed.
Always
Always
.
Reference
true
Edition
false
Always
th
Always
Always
ed.
Always
Always
ed.
Always
1|st|2|nd|3|rd
Always
Always
true
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
//Name of filter: Convert output to title case (with exceptions, such as "and", "or" etc.)
//Version 1.8: Parametrized conversion of full upper case words; functionality was impaired in version 1.7
//Version 1.7: Added checking for null on GetTextUnitsUnfiltered() to avoid NullReferenceExceptions at runtime (which may lead to auto-deactivation of filter)
//Version 1.6: ToUpperFirstLetter() method now handles words completely in UPPERCASE and takes culture into consideration
//Version 1.5: capitalize stopwords directly after quotation mark
//Version 1.4: improved word tokenization
//Version 1.3: ignore expressions which are written completely in upper case
//Version 1.2: new option to ensure that the reference language is "English"
var ensureEnglishIsReferenceLanguage = true; //if set to false, the component part filter will ALWAYS capitalize, regardless of the reference's language
var convertFullUpperCaseWords = ConvertFullUpperCaseWords.Never;
#region Info on ConvertFullUpperCaseWords parameter
/*
Example 1: UN and US government made agreement on payments of contribution
Example 2: UN AND US GOVERNMENT MADE AGREEMENT ON PAYMENTS OF CONTRIBUTION
ConvertFullUpperCaseWords.Never (default)
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: UN and US GOVERNMENT MADE AGREEMENT on PAYMENTS of CONTRIBUTION
ConvertFullUpperCaseWords.Always:
Result 1: Un and Us Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
ConvertFullUpperCaseWords.Auto:
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
*/
#endregion
CultureInfo culture = CultureInfo.CurrentCulture;
handled = false;
if (citation == null) return null;
if (citation.Reference == null) return null;
if (componentPart == null) return null;
if (template == null) return null;
if (ensureEnglishIsReferenceLanguage)
{
if (string.IsNullOrEmpty(citation.Reference.Language)) return null;
var termsList = new string[] {
"en",
"eng",
"engl",
"English",
"Englisch"
};
var regEx = new Regex(@"\b(" + string.Join("|", termsList) + @")\b", RegexOptions.IgnoreCase);
if (!regEx.IsMatch(citation.Reference.Language))
{
return null;
}
}
//Words that will not be capitalized; add words to this list as required
string[] exceptionsArray = { "a", "an", "and", "as", "at",
"but", "by", "down", "for", "from",
"in", "into", "nor",
"of", "on", "onto", "or", "over",
"so", "the", "till", "to",
"up", "via", "with", "yet" };
List exceptions = new List(exceptionsArray);
var textUnits = componentPart.GetTextUnitsUnfiltered(citation, template);
if (textUnits == null || !textUnits.Any()) return null;
string fullString = textUnits.ToString();
bool fullUpperCaseTreatment = false;
switch (convertFullUpperCaseWords)
{
case ConvertFullUpperCaseWords.Always:
fullUpperCaseTreatment = true;
break;
case ConvertFullUpperCaseWords.Never:
{
fullUpperCaseTreatment = false;
}
break;
default:
case ConvertFullUpperCaseWords.Auto:
{
if (HasLowerCase(fullString))
{
fullUpperCaseTreatment = false;
}
else
{
fullUpperCaseTreatment = true;
}
}
break;
}
string prevWord = string.Empty;
for (int i = 0; i < textUnits.Count; i++)
{
//textUnit.Text = textUnits[i].Text.ToLower(culture);
var text = textUnits[i].Text;
//Break the input text into a list of words at whitespaces,
//hyphens, opening parens, and ASCII quotation marks
string splitPattern = @"(\s)|(-)|(\()|(\"")";
List words = new List(Regex.Split(text, splitPattern));
var counter = 0;
text = string.Empty;
//Check each remaining word against the list, and append it to the new text.
//Leave words in upper case unchanged, unless they appear in the exception list.
foreach (string word in words)
{
counter++;
if (counter == 1) // first word in a textunit
{
if (i == 0) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // first word overall => capitalize
else if ((String.IsNullOrWhiteSpace(prevWord)) && !(exceptions.Contains(word.ToLower(culture)))) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // new textunit after space and not stopword => capitalize
else text = text + word; // in all other cases: do nothing
}
else if (prevWord == @"""") // capitalize also stopwords directly after quotation marks
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
else if (exceptions.Contains(word.ToLower(culture))) // check list of exceptions
{
text = text + word.ToLower(culture);
}
else // in all other cases: capitalize
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
prevWord = word; // save current word as previous word for next iteration
}
textUnits[i].Text = text;
}
handled = true;
return textUnits;
}
public string ToUpperFirstLetter(string input, bool ensureAllButFirstIsLower = false, CultureInfo culture = null)
{
if (string.IsNullOrEmpty(input)) return input;
char[] letters = input.ToCharArray();
for (var i = 0; i < letters.Length; i++)
{
if (i == 0)
{
letters[0] = char.ToUpper(letters[0], culture);
continue;
}
if (i > 0 && ensureAllButFirstIsLower == false) break;
letters[i] = char.ToLower(letters[i], culture);
}
return new string(letters);
}
public enum ConvertFullUpperCaseWords
{
Never,
Always,
Auto //converts full uppercase words to lower case only if the conmplete text is written in uppercase
};
public bool HasLowerCase (string input)
{
return !string.IsNullOrEmpty(input) && input.Any(c => char.IsLower(c));
}
}
}]]>
true
Convert Output to Title Case V 1.8
. {0}: {1} [Capitalized]
Always
Always
.
Reference
true
Title
false
PreviousAndNextElementsHaveData
:
Subtitle
false
false
{0} (eds.)
Always
Always
.
Reference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
6
Always
et al.
false
true
false
false
Always
,
Always
(ed.)
Always
(eds.)
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
. {0}: {1}
Always
Always
.
Reference
true
Title
false
PreviousAndNextElementsHaveData
:
Subtitle
false
false
_{0} ({1})
Always
Always
,
Reference
true
Volume
false
Always
th
Always
Always
Always
Always
Always
1|st|2|nd|3|rd
Always
Always
false
PreviousAndNextElementsHaveData
,
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}
Always
,
Always
:
Reference
true
Title
false
false
({0})
Always
Always
Reference
true
NextElementHasData
(
TitleSupplement
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
Always
Always
Always
(
Always
)
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
{0}
Always
Always
ParentReference
true
Collaborators
false
-1
LastNameFirstName
Full
Full
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
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}. Aufl.
Always
Always
.
ParentReference
true
Edition
false
Always
th
Always
Always
. Aufl.
Always
Always
. Aufl.
Always
1|st|2|nd|3|rd
Always
Always
false
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
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
{0}
Always
.
Always
ParentReference
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}
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
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
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
Vortrag anlässlich {0}
Always
.
Always
.
ParentReference
true
NextElementHasData
Vortrag anlässlich
SpecificField7
false
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
NextElementHasData
(
TitleSupplement
false
PreviousElementHasData
)
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
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
false
false
false
true
false
false
false
false
false
.
Subtitle
false
false
false
false
true
false
false
false
false
false
false
Herausgeber
Always
.
Always
ParentReference
true
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
,
Always
,
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
, Ed.
Always
, Eds.
NameAbbreviation
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
Jahr
Always
.
Always
ParentReference
true
Year
false
D
Always
in press
true
false
false
GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
{
//Name of filter: Convert output to title case (with exceptions, such as "and", "or" etc.)
//Version 1.8: Parametrized conversion of full upper case words; functionality was impaired in version 1.7
//Version 1.7: Added checking for null on GetTextUnitsUnfiltered() to avoid NullReferenceExceptions at runtime (which may lead to auto-deactivation of filter)
//Version 1.6: ToUpperFirstLetter() method now handles words completely in UPPERCASE and takes culture into consideration
//Version 1.5: capitalize stopwords directly after quotation mark
//Version 1.4: improved word tokenization
//Version 1.3: ignore expressions which are written completely in upper case
//Version 1.2: new option to ensure that the reference language is "English"
var ensureEnglishIsReferenceLanguage = true; //if set to false, the component part filter will ALWAYS capitalize, regardless of the reference's language
var convertFullUpperCaseWords = ConvertFullUpperCaseWords.Never;
#region Info on ConvertFullUpperCaseWords parameter
/*
Example 1: UN and US government made agreement on payments of contribution
Example 2: UN AND US GOVERNMENT MADE AGREEMENT ON PAYMENTS OF CONTRIBUTION
ConvertFullUpperCaseWords.Never (default)
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: UN and US GOVERNMENT MADE AGREEMENT on PAYMENTS of CONTRIBUTION
ConvertFullUpperCaseWords.Always:
Result 1: Un and Us Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
ConvertFullUpperCaseWords.Auto:
Result 1: UN and US Government Made Agreement on Payments of Contribution
Result 2: Un and Us Government Made Agreement on Payments of Contribution
*/
#endregion
CultureInfo culture = CultureInfo.CurrentCulture;
handled = false;
if (citation == null) return null;
if (citation.Reference == null) return null;
if (componentPart == null) return null;
if (template == null) return null;
if (ensureEnglishIsReferenceLanguage)
{
if (string.IsNullOrEmpty(citation.Reference.Language)) return null;
var termsList = new string[] {
"en",
"eng",
"engl",
"English",
"Englisch"
};
var regEx = new Regex(@"\b(" + string.Join("|", termsList) + @")\b", RegexOptions.IgnoreCase);
if (!regEx.IsMatch(citation.Reference.Language))
{
return null;
}
}
//Words that will not be capitalized; add words to this list as required
string[] exceptionsArray = { "a", "an", "and", "as", "at",
"but", "by", "down", "for", "from",
"in", "into", "nor",
"of", "on", "onto", "or", "over",
"so", "the", "till", "to",
"up", "via", "with", "yet" };
List exceptions = new List(exceptionsArray);
var textUnits = componentPart.GetTextUnitsUnfiltered(citation, template);
if (textUnits == null || !textUnits.Any()) return null;
string fullString = textUnits.ToString();
bool fullUpperCaseTreatment = false;
switch (convertFullUpperCaseWords)
{
case ConvertFullUpperCaseWords.Always:
fullUpperCaseTreatment = true;
break;
case ConvertFullUpperCaseWords.Never:
{
fullUpperCaseTreatment = false;
}
break;
default:
case ConvertFullUpperCaseWords.Auto:
{
if (HasLowerCase(fullString))
{
fullUpperCaseTreatment = false;
}
else
{
fullUpperCaseTreatment = true;
}
}
break;
}
string prevWord = string.Empty;
for (int i = 0; i < textUnits.Count; i++)
{
//textUnit.Text = textUnits[i].Text.ToLower(culture);
var text = textUnits[i].Text;
//Break the input text into a list of words at whitespaces,
//hyphens, opening parens, and ASCII quotation marks
string splitPattern = @"(\s)|(-)|(\()|(\"")";
List words = new List(Regex.Split(text, splitPattern));
var counter = 0;
text = string.Empty;
//Check each remaining word against the list, and append it to the new text.
//Leave words in upper case unchanged, unless they appear in the exception list.
foreach (string word in words)
{
counter++;
if (counter == 1) // first word in a textunit
{
if (i == 0) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // first word overall => capitalize
else if ((String.IsNullOrWhiteSpace(prevWord)) && !(exceptions.Contains(word.ToLower(culture)))) text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture); // new textunit after space and not stopword => capitalize
else text = text + word; // in all other cases: do nothing
}
else if (prevWord == @"""") // capitalize also stopwords directly after quotation marks
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
else if (exceptions.Contains(word.ToLower(culture))) // check list of exceptions
{
text = text + word.ToLower(culture);
}
else // in all other cases: capitalize
{
text = text + ToUpperFirstLetter(word, fullUpperCaseTreatment, culture);
}
prevWord = word; // save current word as previous word for next iteration
}
textUnits[i].Text = text;
}
handled = true;
return textUnits;
}
public string ToUpperFirstLetter(string input, bool ensureAllButFirstIsLower = false, CultureInfo culture = null)
{
if (string.IsNullOrEmpty(input)) return input;
char[] letters = input.ToCharArray();
for (var i = 0; i < letters.Length; i++)
{
if (i == 0)
{
letters[0] = char.ToUpper(letters[0], culture);
continue;
}
if (i > 0 && ensureAllButFirstIsLower == false) break;
letters[i] = char.ToLower(letters[i], culture);
}
return new string(letters);
}
public enum ConvertFullUpperCaseWords
{
Never,
Always,
Auto //converts full uppercase words to lower case only if the conmplete text is written in uppercase
};
public bool HasLowerCase (string input)
{
return !string.IsNullOrEmpty(input) && input.Any(c => char.IsLower(c));
}
}
}]]>
true
Convert Output to Title Case V 1.8
, {0}: {1} [Capitalized]
Always
Always
,
ParentReference
true
Title
false
PreviousAndNextElementsHaveData
:
Subtitle
false
false
. In: {0} (Hrsg.)
Always
Always
.
ParentReference
true
Always
In:
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
false
3
1
Always
, et al.
false
false
false
false
Always
,
Always
(ed.)
Always
(eds.)
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
. {0}: {1}
Always
Always
,
ParentReference
true
Publishers
false
NextElementHasData
,
PlaceOfPublication
false
false
1
4
Always
Always
false
{0}: Bd. {1} [kursiv]
Always
.
Always
.
ParentReference
true
SeriesTitle
false
true
false
false
false
true
false
false
false
false
false
Name
PreviousElementHasData
:
NextElementHasData
false
false
false
true
false
false
false
false
false
Bd.
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}: Bd. {1}
Always
Always
.
ParentReference
true
SeriesTitle
false
true
Name
PreviousElementHasData
,
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
({0})
Always
.
Always
ParentReference
true
AnyElementInComponentHasData
(
TitleSupplement
false
AnyElementInComponentHasData
)
false
({0})
Always
.
Always
ParentReference
true
AnyElementInComponentHasData
(
Edition
false
Always
false
false
false
false
false
false
false
true
false
th
Always
Always
. Aufl.
Always
Always
. Aufl.
Always
false
false
false
false
false
false
false
true
false
1|st|2|nd|3|rd
Always
Always
false
AnyElementInComponentHasData
)
false
[Sonderheft]
Always
.
Always
ParentReference
true
Always
[Sonderheft]
false
{0}({1})
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
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
In
Always
Always
.
ParentReference
true
Always
In
false
[{0}]
Always
.
Always
ParentReference
true
NextElementHasData
[
StorageMedium
false
PreviousElementHasData
]
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
, Bd. {0}
Always
Always
,
ParentReference
true
Volume
false
Always
th
Always
Bd.
Always
Always
Bd.
Always
Always
1|st|2|nd|3|rd
Always
Always
false
false
In {0} {1} [kursiv]
Always
.
Always
,
ParentReference
true
NextElementHasData
In
Title
false
false
false
false
true
false
false
false
false
false
NextElementHasData
.
Subtitle
false
false
({0})
Always
,
Always
,
ParentReference
true
SpecificField7
false
false
({0}) with day and month
Always
Always
.
ParentReference
true
NextElementHasData
(
YearResolved
false
yyyy, dd. MMMM
Always
In press
true
true
PreviousElementHasData
)
false
: {0}: {1}
Always
Always
:
ParentReference
true
Title
false
PreviousAndNextElementsHaveData
.
Subtitle
false
false
. {0} st ed.
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} (eds.)
Always
Always
.
ParentReference
true
Always
In:
Editors
false
-1
LastNameFirstName
Abbreviated
Abbreviated
All
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
LastNameFirstName
Full
Full
All
Always
;
Always
;
Always
;
false
false
false
false
Always
,
Always
Always
Always
.
false
LastNameFirstName
Full
Full
All
false
false
false
false
Always
,
Always
Always
Always
.
false
Always
;
true
6
6
Always
et al.
false
true
false
false
Always
,
Always
(ed.)
Always
(eds.)
NameOnly
NextElementHasData
PreviousElementHasData
NextElementHasData
(
PreviousElementHasData
)
false
false
false
List of publications
.
567
true
None
Arabic
1
0
;
true
0
AuthorThenYearAscendingThenTitle
DGPs Sort Macro Version 2.7
0 (positive): x should go after y, x is greater than y
< 0 (negative): x should go before y, x is less than
*/
//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 || yBibliographyCitation.Reference == null) return 0;
//(1) Some comparers are predefined as static members of the CitationComparer class, see IntelliSense
var defaultCitationComparer = CitationComparer.AuthorYearTitleAscending;
//(2) You can also build citation comparers based on arbitrary reference properties ("fields")
//(2a) First, define a list of property sort descriptors of the reference type
var sortDescriptors = new List>();
sortDescriptors.Add(new PropertySortDescriptor(ReferencePropertyDescriptor.YearResolved, ListSortDirection.Descending));
sortDescriptors.Add(new PropertySortDescriptor(ReferencePropertyDescriptor.AuthorsOrEditorsOrOrganizations, ListSortDirection.Ascending));
sortDescriptors.Add(new PropertySortDescriptor(ReferencePropertyDescriptor.Title, ListSortDirection.Ascending));
//(2b) Then, construct a new citation comparer using the list of sort descriptors
var specialCitationComparer = new CitationComparer(sortDescriptors);
//(3) Or you can define something altogether NEW
//e.g. first I want to see all Internet Documents, sorted by AuthorYearTitle, then all other reference types, sorted by year first, then author and title (see specialReferenceComparer above)
if (xReference.ReferenceType == ReferenceType.InternetDocument && yReference.ReferenceType == ReferenceType.InternetDocument) return specialCitationComparer.Compare(x, y); //YearAuthorTitle
if (xReference.ReferenceType == ReferenceType.InternetDocument && yReference.ReferenceType != ReferenceType.InternetDocument) return -1;
if (xReference.ReferenceType != ReferenceType.InternetDocument && yReference.ReferenceType == ReferenceType.InternetDocument) return 1;
return defaultCitationComparer.Compare(x, y);
}
}
}]]>
OrderOfAppearance
LetterLowerCase
false
)
false
Completed
None
JournalArticle
true
AuthorsMissing
Completed
None
Book
true
AuthorsMissing
OrganizationsMissing
Completed
None
BookEdited
true
EditorsMissing
EditorsMissing
OrganizationsMissing
Completed
BookEdited
Contribution
true
AuthorsMissing
Completed
UnpublishedWork
Contribution
true
Completed
ContributionBookEdited
CollectedWorks
Contribution
false
Completed
ConferenceProceedings
Contribution
true
AuthorsMissing
Completed
SpecialIssue
Contribution
false
Completed
None
InternetDocument
true
EditorsMissing
AuthorsMissing
OrganizationsMissing
Completed
None
Thesis
true
AuthorsMissing
Completed
None
NewspaperArticle
false
AuthorsMissing
Completed
None
UnpublishedWork
true
OrganizationsMissing
AuthorsMissing
EditorsMissing
OrganizationsMissing
Completed
None
Unknown
true
AuthorsMissing
EditorsMissing
OrganizationsMissing
Completed
None