Esempio n. 1
0
        private IToken processDelimiter(Delimiter d)
        {
            DelimiterProperties dp = d.DelimiterProperties;
            char beginChar         = dp.BeginChar == null ? '(' : dp.BeginChar.Val.ToString().Trim().ElementAt(0);
            char endChar           = dp.EndChar == null ? ')' : dp.EndChar.Val.ToString().Trim().ElementAt(0);

            var delimiterElements = d.Elements <Base>();

            if (delimiterElements.Count() > 1)
            {
                char           separator      = dp.SeparatorChar == null ? '|' : dp.SeparatorChar.Val.ToString().Trim().ElementAt(0);
                DelimiterToken delimiterToken = new DelimiterToken(beginChar, endChar, separator);

                foreach (var element in delimiterElements)
                {
                    var processedElement = processElement(element);
                    delimiterToken.AddElement(processedElement);
                }

                return(delimiterToken);
            }
            else
            {
                var children = from child in delimiterElements.First() select processElement(child);

                return(new ParenthesesToken(beginChar, endChar, new TokenList(children)));
            }
        }
Esempio n. 2
0
        protected override WriteResult Write(OpenXMLWpfMathRenderer renderer, FencedAtom item)
        {
            var delimiter = renderer.Push(new Delimiter());


            string leftDelimiterString  = "|";
            string rightDelimiterString = "|";

            if (item.LeftDelimeter is SymbolAtom symLeft)
            {
                if (SymbolAtomRenderer.TryConvert(symLeft.Name, out var text))
                {
                    leftDelimiterString = text;
                }
            }

            if (item.RightDelimeter is SymbolAtom symRight)
            {
                if (SymbolAtomRenderer.TryConvert(symRight.Name, out var text))
                {
                    rightDelimiterString = text;
                }
            }

            var delimiterProp = new DelimiterProperties(
                new BeginChar {
                Val = leftDelimiterString
            },
                new EndChar {
                Val = rightDelimiterString
            },
                new ControlProperties(
                    new W.RunProperties(
                        new W.RunFonts()
            {
                Ascii = "Cambria Math", HighAnsi = "Cambria Math"
            },
                        new W.Italic()
                        )
                    )
                );

            delimiter.AppendChild(delimiterProp);

            var baseEle = renderer.Push(new Base());

            renderer.Write(item.BaseAtom);

            renderer.PopTo(delimiter);

            return(WriteResult.Completed);
        }