问题描述
因此,我创建了一个自TextBlock
派生的自定义类,以便将“ value ^ 5”之类的公式过滤为可渲染的内容(请参见related question)。
现在,这很好。所谓的LatexBlock
(自定义TextBlock
)成功捕获了我要作为下标和上标放入的Inline部分。就像这张图片中的这里:
block.Text = "";
block.Inlines.Clear();
block.Inlines.Add(new Run(text,block.ContentStart) { BaselineAlignment = BaselineAlignment.Baseline});
block.Inlines.Add(new Run(sub) { BaselineAlignment = System.Windows.BaselineAlignment.Subscript });
block.Inlines.Add(new Run(super) { BaselineAlignment = System.Windows.BaselineAlignment.Superscript});
其中text
,sub
和super
是从正则表达式捕获的组(请参见上面链接的其他问题)。现在,我遇到的怪异行为是,在文本块的开头是否有空行?在这张图片上可以很容易看出:
如您所见,TextBlock
的边界与内容不匹配。有人知道吗,为什么会在这里发生?我已经尝试将第一个TextPointer
的{{1}}显式设置为Run
s TextBlock
,但这没有任何区别。
解决方法
感谢Biesi的评论,我知道了。它是为上标文本保留的空间,即使文本为空也将保留。
在内联添加之前添加if(super != "")
可以得到正确的输出。