int TextPosition(IStText text) { ICmObject owner = text.Owner; int flid = text.OwningFlid; if (flid != ScrSectionTags.kflidContent && flid != ScrSectionTags.kflidHeading && flid != ScrBookTags.kflidTitle) { return -1; } if (flid == ScrBookTags.kflidTitle) return BookPosition((IScrBook)owner); var section = (IScrSection)owner; var book = (IScrBook)section.Owner; return BookPosition(book) + section.IndexInOwner * 2 + 2 + (flid == ScrSectionTags.kflidContent ? 1 : 0); }