void RemoveParenthesesFromPrefixSuffix(PageRangeFieldElement pageRangeFieldElement)
        {
            if (pageRangeFieldElement == null)
            {
                return;
            }

            LiteralElement[] prefixes = new LiteralElement[] {
                pageRangeFieldElement.PageOnePrefix,
                pageRangeFieldElement.PageTwoPrefix,
                pageRangeFieldElement.PageMultiPrefix,

                pageRangeFieldElement.ColumnOnePrefix,
                pageRangeFieldElement.ColumnTwoPrefix,
                pageRangeFieldElement.ColumnMultiPrefix,

                pageRangeFieldElement.ParagraphOnePrefix,
                pageRangeFieldElement.ParagraphTwoPrefix,
                pageRangeFieldElement.ParagraphMultiPrefix,

                pageRangeFieldElement.MarginOnePrefix,
                pageRangeFieldElement.MarginTwoPrefix,
                pageRangeFieldElement.MarginMultiPrefix,

                pageRangeFieldElement.OtherOnePrefix,
                pageRangeFieldElement.OtherTwoPrefix,
                pageRangeFieldElement.OtherMultiPrefix
            };

            LiteralElement[] suffixes = new LiteralElement[] {
                pageRangeFieldElement.PageOneSuffix,
                pageRangeFieldElement.PageTwoSuffix,
                pageRangeFieldElement.PageMultiSuffix,

                pageRangeFieldElement.ColumnOneSuffix,
                pageRangeFieldElement.ColumnTwoSuffix,
                pageRangeFieldElement.ColumnMultiSuffix,

                pageRangeFieldElement.ParagraphOneSuffix,
                pageRangeFieldElement.ParagraphTwoSuffix,
                pageRangeFieldElement.ParagraphMultiSuffix,

                pageRangeFieldElement.MarginOneSuffix,
                pageRangeFieldElement.MarginTwoSuffix,
                pageRangeFieldElement.MarginMultiSuffix,

                pageRangeFieldElement.OtherOneSuffix,
                pageRangeFieldElement.OtherTwoSuffix,
                pageRangeFieldElement.OtherMultiSuffix
            };

            foreach (LiteralElement element in prefixes)
            {
                TrimStartParentheses(element);
            }
            foreach (LiteralElement element in suffixes)
            {
                TrimEndParentheses(element);
            }
        }
Example #2
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }
            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }


            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }

            bool found = false;
            TextUnitCollection textUnits = pageRangeFieldElement.GetTextUnits(citation, template);

            if (textUnits == null)
            {
                return(null);
            }

            foreach (ITextUnit textUnit in textUnits)
            {
                if (textUnit.Text.Contains("-"))
                {
                    found         = true;
                    textUnit.Text = textUnit.Text.Replace("-", "–");
                }
            }

            if (found)
            {
                componentPart.Elements.ReplaceItem(pageRangeFieldElement, textUnits.TextUnitsToLiteralElements(componentPart));
            }

            return(null);
        }
Example #3
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            //return handled = true if this macro generates the output (as an IEnumerable<ITextUnit>); the standard output will be suppressed
            //return handled = false if you want Citavi to produce the standard output;

            handled = false;

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null)
            {
                return(null);
            }

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }


            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }


            PageRange pageRangeResolved = PageRange.Empty;

            if (pageRangeFieldElement is QuotationPageRangeFieldElement)
            {
                PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
                if (placeholderCitation == null)
                {
                    return(null);
                }
                if (placeholderCitation.Entry == null)
                {
                    return(null);
                }
                pageRangeResolved = placeholderCitation.Entry.PageRange;
            }
            else
            {
                pageRangeResolved = citation.Reference.PageRange;
            }

            if (pageRangeResolved == null)
            {
                return(null);
            }
            if (pageRangeResolved == PageRange.Empty)
            {
                return(null);
            }
            if (pageRangeResolved.NumeralSystem != NumeralSystem.Omit)
            {
                return(null);
            }

            LiteralElement prefix = null;
            LiteralElement suffix = null;

            switch (pageRangeResolved.NumberingType)
            {
            case NumberingType.Page:
                prefix = pageRangeFieldElement.PageMultiPrefix;
                suffix = pageRangeFieldElement.PageMultiSuffix;
                break;

            case NumberingType.Column:
                prefix = pageRangeFieldElement.ColumnMultiPrefix;
                suffix = pageRangeFieldElement.ColumnMultiSuffix;
                break;

            case NumberingType.Paragraph:
                prefix = pageRangeFieldElement.ParagraphMultiPrefix;
                suffix = pageRangeFieldElement.ParagraphMultiSuffix;
                break;

            case NumberingType.Margin:
                prefix = pageRangeFieldElement.MarginMultiPrefix;
                suffix = pageRangeFieldElement.MarginMultiSuffix;
                break;

            case NumberingType.Other:
                prefix = pageRangeFieldElement.OtherMultiPrefix;
                suffix = pageRangeFieldElement.OtherMultiSuffix;
                break;
            }

            bool hasPrefix = prefix != null && !string.IsNullOrEmpty(prefix.Text);
            bool hasSuffix = suffix != null && !string.IsNullOrEmpty(suffix.Text);



            TextUnitCollection pageRangeTextUnits = pageRangeFieldElement.GetTextUnits(citation, template);

            if (pageRangeTextUnits == null || !pageRangeTextUnits.Any())
            {
                return(null);
            }



            foreach (ITextUnit unit in pageRangeTextUnits)
            {
                unit.Text = unit.Text.Replace(System.StringUtility.Divis, System.StringUtility.EnDash);
            }

            TextUnitCollection output = new TextUnitCollection();

            if (hasPrefix && pageRangeTextUnits.First().Text != prefix.Text)
            {
                TextUnitCollection prefixTextUnits = prefix.GetTextUnits(citation, template);
                if (prefixTextUnits != null && prefixTextUnits.Any())
                {
                    output.AddRange(prefixTextUnits);
                }
            }

            output.AddRange(pageRangeTextUnits);

            if (hasSuffix && pageRangeTextUnits.Last().Text != suffix.Text)
            {
                TextUnitCollection suffixTextUnits = suffix.GetTextUnits(citation, template);
                if (suffixTextUnits != null && suffixTextUnits.Any())
                {
                    output.AddRange(suffixTextUnits);
                }
            }

            componentPart.Elements.ReplaceItem(pageRangeFieldElement, TextUnitCollectionUtility.TextUnitsToLiteralElements(output, componentPart));
            handled = false;

            //all literal elements should always be output:
            foreach (LiteralElement literalElement in componentPart.Elements.OfType <LiteralElement>())
            {
                literalElement.ApplyCondition = ElementApplyCondition.Always;
            }

            return(null);
        }
Example #4
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null)
            {
                return(null);
            }
            if (!componentPart.Elements.Any())
            {
                return(null);
            }

            Reference reference = citation.Reference;

            if (reference == null)
            {
                return(null);
            }

            Reference parentReference = reference.ParentReference;

            string language = string.Empty;

            if (componentPart.Scope == ComponentPartScope.Reference)
            {
                language = reference.Language.ToUpperInvariant();
            }
            else if (componentPart.Scope == ComponentPartScope.ParentReference)
            {
                if (parentReference == null)
                {
                    return(null);
                }
                language = parentReference.Language.ToUpperInvariant();
            }

            if (string.IsNullOrEmpty(language))
            {
                return(null);
            }

            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }

            PageRange pageRange = null;

            if (pageRangeFieldElement is QuotationPageRangeFieldElement)
            {
                PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
                if (placeholderCitation == null)
                {
                    return(null);
                }
                if (placeholderCitation.Entry == null)
                {
                    return(null);
                }

                pageRange = placeholderCitation.Entry.PageRange;
            }
            else if (pageRangeFieldElement is PageRangeFieldElement)
            {
                pageRange = citation.Reference.PageRange;
            }
            else
            {
                //what should that be ?
                return(null);
            }

            if (pageRange == null)
            {
                return(null);
            }

            #region German

            if (language.Contains("DE"))
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "S.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "S.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "S.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "Sp.\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "Sp.\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "Sp.\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "Rn.\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "Rn.\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "Rn.\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            #region English

            if (language.Contains("EN"))
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "pp.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "pp.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            #region French

            if (language.Contains("FR"))
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0sq.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0sqq.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0sq.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0sqq.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "n°\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "n°\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0sq.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "n°\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0sqq.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            #region Italian

            if (language.Contains("IT"))
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0e\u00A0seg.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0e\u00A0segg.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0e\u00A0seg.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0e\u00A0segg.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "n.\u00A0marg.\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "n.\u00A0marg.\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0e\u00A0seg.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "n.\u00A0marg.\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0e\u00A0segg.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            #region Spanish

            if (language.Contains("ES"))
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "pág.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "pág.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0e\u00A0s.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "pág.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0e\u00A0ss.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "columna\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "columna\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0e\u00A0s.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "columna\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0e\u00A0ss.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "n.º\u00A0margin.\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "n.º\u00A0margin.\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0e\u00A0s.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "n.º\u00A0margin.\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0e\u00A0ss.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            #region Other: Language is NOT EMPTY - treat like English?

            if (!string.IsNullOrWhiteSpace(language))
            {
                ;
            }
            {
                #region Page

                pageRangeFieldElement.PageOneHasSpecialFormat = true;
                pageRangeFieldElement.PageOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageOnePrefix.Text      = "p.\u00A0";
                pageRangeFieldElement.PageOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageOneSuffix.Text      = "";
                pageRangeFieldElement.PageOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageTwoHasSpecialFormat = true;
                pageRangeFieldElement.PageTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageTwoPrefix.Text      = "pp.\u00A0";
                pageRangeFieldElement.PageTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.PageTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.PageMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiPrefix.Text      = "pp.\u00A0";
                pageRangeFieldElement.PageMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.PageMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.PageMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Column

                pageRangeFieldElement.ColumnOneHasSpecialFormat = true;
                pageRangeFieldElement.ColumnOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnOnePrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnOneSuffix.Text      = "";
                pageRangeFieldElement.ColumnOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnTwoHasSpecialFormat = true;
                pageRangeFieldElement.ColumnTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnTwoPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.ColumnTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ColumnMultiNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiPrefix.Text      = "col.\u00A0";
                pageRangeFieldElement.ColumnMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ColumnMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.ColumnMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Paragraph

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = true;
                pageRangeFieldElement.ParagraphOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphOnePrefix.Text      = "§\u00A0";
                pageRangeFieldElement.ParagraphOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphOneSuffix.Text      = "";
                pageRangeFieldElement.ParagraphOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphTwoPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphTwoSuffix.Text      = "";
                pageRangeFieldElement.ParagraphTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.ParagraphMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.ParagraphMultiPrefix.Text      = "§§\u00A0";
                pageRangeFieldElement.ParagraphMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.ParagraphMultiSuffix.Text      = "";
                pageRangeFieldElement.ParagraphMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Margin

                pageRangeFieldElement.MarginOneHasSpecialFormat = true;
                pageRangeFieldElement.MarginOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginOnePrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginOneSuffix.Text      = "";
                pageRangeFieldElement.MarginOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoHasSpecialFormat = true;
                pageRangeFieldElement.MarginTwoNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginTwoPrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginTwoSuffix.Text      = "\u00A0f.";
                pageRangeFieldElement.MarginTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.MarginTwoNumberingStyle     = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiPrefix.Text      = "no.\u00A0";
                pageRangeFieldElement.MarginMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.MarginMultiSuffix.Text      = "\u00A0ff.";
                pageRangeFieldElement.MarginMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                #region Other

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherOneNumberingStyle   = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherOnePrefix.Text      = "";
                pageRangeFieldElement.OtherOnePrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherOneSuffix.Text      = "";
                pageRangeFieldElement.OtherOneSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherTwoPrefix.Text      = "";
                pageRangeFieldElement.OtherTwoPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherTwoSuffix.Text      = "";
                pageRangeFieldElement.OtherTwoSuffix.FontStyle = FontStyle.Neutral;

                pageRangeFieldElement.OtherMultiNumberingStyle   = NumberingStyle.FullRange;
                pageRangeFieldElement.OtherMultiPrefix.Text      = "";
                pageRangeFieldElement.OtherMultiPrefix.FontStyle = FontStyle.Neutral;
                pageRangeFieldElement.OtherMultiSuffix.Text      = "";
                pageRangeFieldElement.OtherMultiSuffix.FontStyle = FontStyle.Neutral;

                #endregion

                return(null);
            }

            #endregion

            return(null);
        }
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            handled = false;

            if (citation == null)
            {
                return(null);
            }

            Reference currentReference = citation.Reference;

            if (currentReference == null)
            {
                return(null);
            }

            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || !componentPart.Elements.Any())
            {
                return(null);
            }

            PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;

            if (placeholderCitation == null)
            {
                return(null);
            }
            if (placeholderCitation.Entry == null)
            {
                return(null);
            }

            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }


            var outputString = "o. S.";

            if (placeholderCitation.PageRange != null || !string.IsNullOrWhiteSpace(placeholderCitation.PageRange.OriginalString))
            {
                return(null);
            }

            var outputLiteralElement = new LiteralElement(componentPart, outputString);

            outputLiteralElement.FontStyle = pageRangeFieldElement.PageMultiStartFontStyle;
            componentPart.Elements.ReplaceItem(pageRangeFieldElement, outputLiteralElement);


            //all literal elements should always be output:
            foreach (LiteralElement literalElement in componentPart.Elements.OfType <LiteralElement>())
            {
                literalElement.ApplyCondition = ElementApplyCondition.Always;
            }

            return(null);
        }
        void TransferSettings(PageRangeFieldElement sourceElement, PageRangeFieldElement targetElement)
        {
            #region Page

            targetElement.PageOneHasSpecialFormat = sourceElement.PageOneHasSpecialFormat;
            targetElement.PageOnePrefix.Text      = sourceElement.PageOnePrefix.Text;
            targetElement.PageOnePrefix.FontStyle = sourceElement.PageOnePrefix.FontStyle;
            targetElement.PageOneSuffix.Text      = sourceElement.PageOneSuffix.Text;
            targetElement.PageOneSuffix.FontStyle = sourceElement.PageOneSuffix.FontStyle;

            targetElement.PageTwoHasSpecialFormat = sourceElement.PageTwoHasSpecialFormat;
            targetElement.PageTwoPrefix.Text      = sourceElement.PageTwoPrefix.Text;
            targetElement.PageTwoPrefix.FontStyle = sourceElement.PageTwoPrefix.FontStyle;
            targetElement.PageTwoSuffix.Text      = sourceElement.PageTwoSuffix.Text;
            targetElement.PageTwoSuffix.FontStyle = sourceElement.PageTwoSuffix.FontStyle;

            targetElement.PageMultiPrefix.Text      = sourceElement.PageMultiPrefix.Text;
            targetElement.PageMultiPrefix.FontStyle = sourceElement.PageMultiPrefix.FontStyle;
            targetElement.PageMultiSuffix.Text      = sourceElement.PageMultiSuffix.Text;
            targetElement.PageMultiSuffix.FontStyle = sourceElement.PageMultiSuffix.FontStyle;

            #endregion

            #region Column

            targetElement.ColumnOneHasSpecialFormat = sourceElement.ColumnOneHasSpecialFormat;
            targetElement.ColumnOnePrefix.Text      = sourceElement.ColumnOnePrefix.Text;
            targetElement.ColumnOnePrefix.FontStyle = sourceElement.ColumnOnePrefix.FontStyle;
            targetElement.ColumnOneSuffix.Text      = sourceElement.ColumnOneSuffix.Text;
            targetElement.ColumnOneSuffix.FontStyle = sourceElement.ColumnOneSuffix.FontStyle;

            targetElement.ColumnTwoHasSpecialFormat = sourceElement.ColumnTwoHasSpecialFormat;
            targetElement.ColumnTwoPrefix.Text      = sourceElement.ColumnTwoPrefix.Text;
            targetElement.ColumnTwoPrefix.FontStyle = sourceElement.ColumnTwoPrefix.FontStyle;
            targetElement.ColumnTwoSuffix.Text      = sourceElement.ColumnTwoSuffix.Text;
            targetElement.ColumnTwoSuffix.FontStyle = sourceElement.ColumnTwoSuffix.FontStyle;

            targetElement.ColumnMultiPrefix.Text      = sourceElement.ColumnMultiPrefix.Text;
            targetElement.ColumnMultiPrefix.FontStyle = sourceElement.ColumnMultiPrefix.FontStyle;
            targetElement.ColumnMultiSuffix.Text      = sourceElement.ColumnMultiSuffix.Text;
            targetElement.ColumnMultiSuffix.FontStyle = sourceElement.ColumnMultiSuffix.FontStyle;

            #endregion

            #region Margin

            targetElement.MarginOneHasSpecialFormat = sourceElement.MarginOneHasSpecialFormat;
            targetElement.MarginOnePrefix.Text      = sourceElement.MarginOnePrefix.Text;
            targetElement.MarginOnePrefix.FontStyle = sourceElement.MarginOnePrefix.FontStyle;
            targetElement.MarginOneSuffix.Text      = sourceElement.MarginOneSuffix.Text;
            targetElement.MarginOneSuffix.FontStyle = sourceElement.MarginOneSuffix.FontStyle;

            targetElement.MarginTwoHasSpecialFormat = sourceElement.MarginTwoHasSpecialFormat;
            targetElement.MarginTwoPrefix.Text      = sourceElement.MarginTwoPrefix.Text;
            targetElement.MarginTwoPrefix.FontStyle = sourceElement.MarginTwoPrefix.FontStyle;
            targetElement.MarginTwoSuffix.Text      = sourceElement.MarginTwoSuffix.Text;
            targetElement.MarginTwoSuffix.FontStyle = sourceElement.MarginTwoSuffix.FontStyle;

            targetElement.MarginMultiPrefix.Text      = sourceElement.MarginMultiPrefix.Text;
            targetElement.MarginMultiPrefix.FontStyle = sourceElement.MarginMultiPrefix.FontStyle;
            targetElement.MarginMultiSuffix.Text      = sourceElement.MarginMultiSuffix.Text;
            targetElement.MarginMultiSuffix.FontStyle = sourceElement.MarginMultiSuffix.FontStyle;

            #endregion

            #region Paragraph

            targetElement.ParagraphOneHasSpecialFormat = sourceElement.ParagraphOneHasSpecialFormat;
            targetElement.ParagraphOnePrefix.Text      = sourceElement.ParagraphOnePrefix.Text;
            targetElement.ParagraphOnePrefix.FontStyle = sourceElement.ParagraphOnePrefix.FontStyle;
            targetElement.ParagraphOneSuffix.Text      = sourceElement.ParagraphOneSuffix.Text;
            targetElement.ParagraphOneSuffix.FontStyle = sourceElement.ParagraphOneSuffix.FontStyle;

            targetElement.ParagraphTwoHasSpecialFormat = sourceElement.ParagraphTwoHasSpecialFormat;
            targetElement.ParagraphTwoPrefix.Text      = sourceElement.ParagraphTwoPrefix.Text;
            targetElement.ParagraphTwoPrefix.FontStyle = sourceElement.ParagraphTwoPrefix.FontStyle;
            targetElement.ParagraphTwoSuffix.Text      = sourceElement.ParagraphTwoSuffix.Text;
            targetElement.ParagraphTwoSuffix.FontStyle = sourceElement.ParagraphTwoSuffix.FontStyle;

            targetElement.ParagraphMultiPrefix.Text      = sourceElement.ParagraphMultiPrefix.Text;
            targetElement.ParagraphMultiPrefix.FontStyle = sourceElement.ParagraphMultiPrefix.FontStyle;
            targetElement.ParagraphMultiSuffix.Text      = sourceElement.ParagraphMultiSuffix.Text;
            targetElement.ParagraphMultiSuffix.FontStyle = sourceElement.ParagraphMultiSuffix.FontStyle;

            #endregion

            #region Other

            targetElement.OtherOneHasSpecialFormat = sourceElement.OtherOneHasSpecialFormat;
            targetElement.OtherOnePrefix.Text      = sourceElement.OtherOnePrefix.Text;
            targetElement.OtherOnePrefix.FontStyle = sourceElement.OtherOnePrefix.FontStyle;
            targetElement.OtherOneSuffix.Text      = sourceElement.OtherOneSuffix.Text;
            targetElement.OtherOneSuffix.FontStyle = sourceElement.OtherOneSuffix.FontStyle;

            targetElement.OtherTwoHasSpecialFormat = sourceElement.OtherTwoHasSpecialFormat;
            targetElement.OtherTwoPrefix.Text      = sourceElement.OtherTwoPrefix.Text;
            targetElement.OtherTwoPrefix.FontStyle = sourceElement.OtherTwoPrefix.FontStyle;
            targetElement.OtherTwoSuffix.Text      = sourceElement.OtherTwoSuffix.Text;
            targetElement.OtherTwoSuffix.FontStyle = sourceElement.OtherTwoSuffix.FontStyle;

            targetElement.OtherMultiPrefix.Text      = sourceElement.OtherMultiPrefix.Text;
            targetElement.OtherMultiPrefix.FontStyle = sourceElement.OtherMultiPrefix.FontStyle;
            targetElement.OtherMultiSuffix.Text      = sourceElement.OtherMultiSuffix.Text;
            targetElement.OtherMultiSuffix.FontStyle = sourceElement.OtherMultiSuffix.FontStyle;

            #endregion
        }
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            //return handled = true if this macro generates the output (as a IEnumerable<ITextUnit>); the standard output will be suppressed
            //return handled = false if you want Citavi to produce the standard output;
            //you can still manipulate the component part and its elements before letting Citavi generate the output with handled = false
            handled = false;

            /*
             * AUSGABE-ZIELE
             * ------------------------------------------------------------------------------------------------------------------------
             * [1] Aufsatz-Seiten: 123-130      Zitatseiten: -          > AUSGABE: 123-130          [= nur Aufsatzseiten]
             * [2] Aufsatz-Seiten: 123-130		Zitatseiten: 123		> AUSGABE: 123				[= nur Zitatseiten]
             * [3] Aufsatz-Seiten: 123-130		Zitatseiten: 123-124	> AUSGABE: 123 f.			[= nur Zitatseiten]
             * [4] Aufsatz-Seiten: 123-130		Zitatseiten: 123-125	> AUSGABE: 123 ff.			[= nur Zitatseiten]
             * [5] Aufsatz-Seiten: 123-130		Zitatseiten: 125		> AUSGABE: 123 (125)		[= Erste Aufsatzseite (Zitatseiten)]
             * [6] Aufsatz-Seiten: 123-130		Zitatseiten: 125-126	> AUSGABE: 123 (125 f.)		[= Erste Aufsatzseite (Zitatseiten)]
             * [7] Aufsatz-Seiten: 123-130		Zitatseiten: 125-127	> AUSGABE: 123 (125 ff.)	[= Erste Aufsatzseite (Zitatseiten)]
             */


            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }


            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }

            var placeholderCitation = citation as PlaceholderCitation;

            if (placeholderCitation == null)
            {
                return(null);
            }
            if (placeholderCitation.Entry == null)
            {
                return(null);
            }

            //[1]
            if (placeholderCitation.Entry.PageRange == null)
            {
                return(null);
            }
            if (string.IsNullOrEmpty(placeholderCitation.Entry.PageRange.PrettyString))
            {
                return(null);                                                                                           //ElementApplyConditions sorgen dafür, dass keine leeren Klammern angezeigt werden
            }
            //enthält nur 1 PageRangeFieldElement und 1 QuotationPageRangeFieldElement und sonst lediglich LiteralElemente
            PageRangeFieldElement          pageRangeFieldElement          = null;
            QuotationPageRangeFieldElement quotationPageRangeFieldElement = null;

            if (!TryValidateComponentPartStructure(componentPart, out pageRangeFieldElement, out quotationPageRangeFieldElement))
            {
                return(null);
            }

            if
            (
                !citation.Reference.HasCoreField(ReferenceTypeCoreFieldId.PageRange) ||
                citation.Reference.PageRange == null ||
                string.IsNullOrEmpty(citation.Reference.PageRange.PrettyString)
            )
            {
                //Alles unterdrücken ausser QuotationPageRangeFieldElement
                TransferSettings(pageRangeFieldElement, quotationPageRangeFieldElement);
                RemoveAllButElement(componentPart, quotationPageRangeFieldElement);
                RemoveParenthesesFromPrefixSuffix(quotationPageRangeFieldElement);

                return(null);
            }


            var startPageArticle   = citation.Reference.PageRange.StartPage;
            var startPageQuotation = placeholderCitation.Entry.PageRange.StartPage;

            //[2], [3], [4] [= nur Zitatseiten]
            if (startPageQuotation == startPageArticle)
            {
                //Alles unterdrücken ausser QuotationPageRangeFieldElement - wichtig: Eine der beiden TransferSettings-Zeilen muss immer durch vorangestellte //-Schrägstriche auskommentiert sein!
                //TransferSettings(quotationPageRangeFieldElement, pageRangeFieldElement);	//diese Reihenfolge verwenden, wenn die Präfixe der Zitatseiten-Komponente angezeigt werden sollen
                TransferSettings(pageRangeFieldElement, quotationPageRangeFieldElement);                        //diese Reihenfolge verwenden, wenn die Präfixe der Seitenbereichs-Komponente angezeigt werden sollen
                RemoveAllButElement(componentPart, quotationPageRangeFieldElement);
                RemoveParenthesesFromPrefixSuffix(quotationPageRangeFieldElement);

                return(null);
            }

            //[5], [6], [7] [= Erste Aufsatzseite (Zitatseiten)]
            else
            {
                pageRangeFieldElement.PageOneHasSpecialFormat = false;
                pageRangeFieldElement.PageTwoHasSpecialFormat = false;
                pageRangeFieldElement.PageMultiNumberingStyle = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.PageMultiSuffix.Text    = string.Empty;

                pageRangeFieldElement.ColumnOneHasSpecialFormat = false;
                pageRangeFieldElement.ColumnTwoHasSpecialFormat = false;
                pageRangeFieldElement.ColumnMultiNumberingStyle = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ColumnMultiSuffix.Text    = string.Empty;

                pageRangeFieldElement.MarginOneHasSpecialFormat = false;
                pageRangeFieldElement.MarginTwoHasSpecialFormat = false;
                pageRangeFieldElement.MarginMultiNumberingStyle = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.MarginMultiSuffix.Text    = string.Empty;

                pageRangeFieldElement.ParagraphOneHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphTwoHasSpecialFormat = false;
                pageRangeFieldElement.ParagraphMultiNumberingStyle = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.ParagraphMultiSuffix.Text    = string.Empty;

                pageRangeFieldElement.OtherOneHasSpecialFormat = false;
                pageRangeFieldElement.OtherTwoHasSpecialFormat = false;
                pageRangeFieldElement.OtherMultiNumberingStyle = NumberingStyle.StartPageOnly;
                pageRangeFieldElement.OtherMultiSuffix.Text    = string.Empty;

                return(null);
            }
        }
        bool TryValidateComponentPartStructure(ComponentPart componentPart, out PageRangeFieldElement pageRangeFieldElement, out QuotationPageRangeFieldElement quotationPageRangeFieldElement)
        {
            /*
             *      Allowed structures:
             *      /1/ [article pages] [quotation pages]
             *      /2/ [article pages] [literal] [quotation pages]
             *      /3/ [article pages] [literal] [quotation pages] [literal]
             */

            pageRangeFieldElement          = null;
            quotationPageRangeFieldElement = null;

            if (componentPart == null)
            {
                return(false);
            }
            if (componentPart.Elements == null ||
                componentPart.Elements.Count == 0 ||
                componentPart.Elements.Count < 2 ||
                componentPart.Elements.Count > 4)
            {
                return(false);
            }

            IElement element01 = componentPart.Elements.ElementAtOrDefault(0);
            IElement element02 = componentPart.Elements.ElementAtOrDefault(1);
            IElement element03 = componentPart.Elements.ElementAtOrDefault(2);
            IElement element04 = componentPart.Elements.ElementAtOrDefault(3);


            #region /1/ [article pages] [quotation pages]
            if (element04 == null &&
                element03 == null &&
                element02 != null &&
                element02 is QuotationPageRangeFieldElement &&
                element01 != null &&
                element01 is PageRangeFieldElement &&
                ((PageRangeFieldElement)element01).PropertyId == ReferencePropertyId.PageRange)
            {
                pageRangeFieldElement          = (PageRangeFieldElement)element01;
                quotationPageRangeFieldElement = (QuotationPageRangeFieldElement)element02;
                return(true);
            }
            #endregion

            #region /2/ [article pages] [literal] [quotation pages]
            if (element04 == null &&
                element03 != null &&
                element03 is QuotationPageRangeFieldElement &&
                element02 != null &&
                element02 is LiteralElement &&
                element01 != null &&
                element01 is PageRangeFieldElement &&
                ((PageRangeFieldElement)element01).PropertyId == ReferencePropertyId.PageRange)
            {
                pageRangeFieldElement          = (PageRangeFieldElement)element01;
                quotationPageRangeFieldElement = (QuotationPageRangeFieldElement)element03;
                return(true);
            }
            #endregion

            #region /3/ [article pages] [literal] [quotation pages] [literal]
            if (element04 != null &&
                element04 is LiteralElement &&
                element03 != null &&
                element03 is QuotationPageRangeFieldElement &&
                element02 != null &&
                element02 is LiteralElement &&
                element01 != null &&
                element01 is PageRangeFieldElement &&
                ((PageRangeFieldElement)element01).PropertyId == ReferencePropertyId.PageRange)
            {
                pageRangeFieldElement          = (PageRangeFieldElement)element01;
                quotationPageRangeFieldElement = (QuotationPageRangeFieldElement)element03;
                return(true);
            }
            #endregion

            return(false);
        }
Example #9
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            string suffixForRangeOf3or4   = "\u00A0ff.";                        //inkl. geschütztem Leerzeichen (ggf. durch normales Leerzeichen ersetzen)
            bool   rangeToTreatIsExactly3 = true;                               //wenn false, dann soll ein Bereich von 3 ODER 4 Seiten mit " ff." verkürzt werden (sonst nur bei genau 3 Seiten)

            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }
            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }

            FieldElement fieldElement;

            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }

            PageRange pageRange = null;

            if (pageRangeFieldElement is QuotationPageRangeFieldElement)
            {
                PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
                if (placeholderCitation == null)
                {
                    return(null);
                }
                if (placeholderCitation.Entry == null)
                {
                    return(null);
                }

                pageRange = placeholderCitation.Entry.PageRange;
            }
            else if (pageRangeFieldElement is PageRangeFieldElement)
            {
                pageRange = citation.Reference.PageRange;
            }
            else
            {
                //what should that be ?
                return(null);
            }

            if (pageRange == null)
            {
                return(null);
            }

            if (pageRange.StartPage == null)
            {
                return(null);
            }
            if (!pageRange.StartPage.IsFullyNumeric)
            {
                return(null);
            }

            int startPage = pageRange.StartPage.Number ?? 0;

            if (startPage == 0)
            {
                return(null);
            }

            if (pageRange.EndPage == null)
            {
                return(null);
            }
            if (!pageRange.EndPage.IsFullyNumeric)
            {
                return(null);
            }

            int endPage = pageRange.EndPage.Number ?? 0;

            if (endPage == 0)
            {
                return(null);
            }

            int delta = 0;

            if (endPage > startPage)
            {
                delta = endPage - startPage;
            }
            else
            {
                delta = 0;
            }

            //we only treat the special case delta = 2 (optional 2 or 3) (three pages, optional three or four pages)
            //delta = 0 (over one page) is handled directly from the elements settings
            //delta = 1 (over two pages) ditto
            //delta > 2 or 3 (over 4 or 5 or more pages) ditto

            if ((rangeToTreatIsExactly3 == true && delta == 2) || (rangeToTreatIsExactly3 == false && (delta == 2 || delta == 3)))
            {
                switch (pageRange.NumberingType)
                {
                case NumberingType.Page:
                default:
                {
                    pageRangeFieldElement.PageMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.PageMultiSuffix.Text    = suffixForRangeOf3or4;
                }
                break;

                case NumberingType.Column:
                {
                    pageRangeFieldElement.ColumnMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.ColumnMultiSuffix.Text    = suffixForRangeOf3or4;
                }
                break;

                case NumberingType.Paragraph:
                {
                    pageRangeFieldElement.ParagraphMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.ParagraphMultiSuffix.Text    = suffixForRangeOf3or4;
                }
                break;

                case NumberingType.Margin:
                {
                    pageRangeFieldElement.MarginMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.MarginMultiSuffix.Text    = suffixForRangeOf3or4;
                }
                break;

                case NumberingType.Other:
                {
                    pageRangeFieldElement.OtherMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.OtherMultiSuffix.Text    = suffixForRangeOf3or4;
                }
                break;
                }
            }

            return(null);            //handled remains false, because Citavi will do the formatting with the changed field element's properties
        }
Example #10
0
        public IEnumerable <ITextUnit> GetTextUnits(ComponentPart componentPart, Template template, Citation citation, out bool handled)
        {
            string suffixForRangeOf3 = " ff.";

            handled = false;

            if (citation == null)
            {
                return(null);
            }
            if (citation.Reference == null)
            {
                return(null);
            }
            if (componentPart == null)
            {
                return(null);
            }
            if (componentPart.Elements == null || componentPart.Elements.Count == 0)
            {
                return(null);
            }

            FieldElement fieldElement;

            PageRangeFieldElement pageRangeFieldElement = componentPart.Elements.OfType <PageRangeFieldElement>().FirstOrDefault();

            if (pageRangeFieldElement == null)
            {
                return(null);
            }

            PageRange pageRange = null;

            if (pageRangeFieldElement is QuotationPageRangeFieldElement)
            {
                PlaceholderCitation placeholderCitation = citation as PlaceholderCitation;
                if (placeholderCitation == null)
                {
                    return(null);
                }
                if (placeholderCitation.Entry == null)
                {
                    return(null);
                }

                pageRange = placeholderCitation.Entry.PageRange;
            }
            else if (pageRangeFieldElement is PageRangeFieldElement)
            {
                pageRange = citation.Reference.PageRange;
            }
            else
            {
                //what should that be ?
                return(null);
            }

            if (pageRange == null)
            {
                return(null);
            }

            if (pageRange.StartPage == null)
            {
                return(null);
            }
            if (!pageRange.StartPage.IsFullyNumeric)
            {
                return(null);
            }

            int startPage = pageRange.StartPage.Number ?? 0;

            if (startPage == 0)
            {
                return(null);
            }

            if (pageRange.EndPage == null)
            {
                return(null);
            }
            if (!pageRange.EndPage.IsFullyNumeric)
            {
                return(null);
            }

            int endPage = pageRange.EndPage.Number ?? 0;

            if (endPage == 0)
            {
                return(null);
            }

            int delta = 0;

            if (endPage > startPage)
            {
                delta = endPage - startPage;
            }
            else
            {
                delta = 0;
            }

            //we only treat the special case delta = 2 (over three pages)
            //delta = 0 (over one page) is handled directly from the elements settings
            //delta = 1 (over two pages) ditto
            //delta > 2 (over 4 or more pages) ditto

            if (delta == 2)
            {
                switch (pageRange.NumberingType)
                {
                case NumberingType.Column:
                {
                    pageRangeFieldElement.ColumnMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.ColumnMultiSuffix.Text    = suffixForRangeOf3;
                }
                break;

                case NumberingType.Margin:
                {
                    pageRangeFieldElement.MarginMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.MarginMultiSuffix.Text    = suffixForRangeOf3;
                }
                break;

                case NumberingType.Other:
                {
                    pageRangeFieldElement.OtherMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.OtherMultiSuffix.Text    = suffixForRangeOf3;
                }
                break;

                case NumberingType.Page:
                default:
                {
                    pageRangeFieldElement.PageMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.PageMultiSuffix.Text    = suffixForRangeOf3;
                }
                break;

                case NumberingType.Paragraph:
                {
                    pageRangeFieldElement.ParagraphMultiNumberingStyle = NumberingStyle.StartPageOnly;
                    pageRangeFieldElement.ParagraphMultiSuffix.Text    = suffixForRangeOf3;
                }
                break;
                }
            }
            return(null);            //handled remains false, because Citavi will do the formatting with the changed field element's properties
        }