Поля уравнений и формул
Поля уравнений и формул
Это руководство показывает, как работать с FieldAdvance and FieldSymbol классами полей в Aspose.Words FOSS для .NET, которые реализуют поля Word ADVANCE and SYMBOL . Оба класса наследуются от Field и реализуют IFieldCodeTokenInfoProvider; для базовой Field модели объекта см. Работа с полями руководство.
Перемещение текста с помощью FieldAdvance
FieldAdvance реализует поле ADVANCE, которое сдвигает последующий текст без вставки видимых символов. DownOffset, UpOffset, LeftOffset и RightOffset (все string) перемещают последующий текст на заданное количество пунктов в этом направлении. HorizontalPosition и VerticalPosition (также string) перемещают последующий текст в абсолютную позицию, измеряемую от левого края колонки, рамки или текстового блока, и от верхнего края страницы соответственно.
Вставка специальных символов с помощью FieldSymbol
FieldSymbol реализует поле SYMBOL, которое вставляет один символ по кодовой точке. CharacterCode (string) задает кодовую точку символа в десятичном или шестнадцатеричном виде. IsAnsi, IsUnicode и IsShiftJis (все bool) определяют, как интерпретируется CharacterCode. FontName и FontSize (string) задают шрифт, используемый для отображения полученного символа, а DontAffectsLineSpacing (bool) контролирует, влияет ли вставленный символ на межстрочный интервал абзаца.
Советы и лучшие практики
- Установите только один из
IsAnsi,IsUnicodeилиIsShiftJisвFieldSymbol, чтобы избежать неоднозначной интерпретацииCharacterCode. - Свойства смещения
FieldAdvanceявляютсяstring, а не числовыми типами — передавайте значения точек в виде строк при установкеDownOffset,UpOffset,LeftOffset,RightOffset,HorizontalPositionилиVerticalPosition. - Установите
FieldSymbol.FontNameв шрифт, который действительно содержит глиф вCharacterCode, иначе отрисованный символ может быть заменён на заполнитель отсутствующего глифа. - Вызовите
Update()после изменения любого свойства уFieldAdvanceилиFieldSymbol, чтобыResult/DisplayResultполя отразили изменение. - Используйте
DontAffectsLineSpacingпри вставке высокого или необычного символа, который не должен растягивать высоту окружающей строки.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
Поле ADVANCE не перемещает текст как ожидалось | Был установлен неверный параметр смещения, или значение оставлено по умолчанию | Установите конкретный параметр DownOffset / UpOffset / LeftOffset / RightOffset (относительный) или HorizontalPosition / VerticalPosition (абсолютный), соответствующий задуманному перемещению |
Поле SYMBOL отображает неверный символ | CharacterCode был интерпретирован в неправильной кодировке | Установите ровно один из IsAnsi, IsUnicode или IsShiftJis, соответствующий тому, как был написан CharacterCode |
| Символ отображается в виде коробки с отсутствующим глифом | FontName не содержит глиф для CharacterCode | Установите FontName в шрифт, известный тем, что содержит этот символ. |
FAQ
Что делает поле ADVANCE?
Он перемещает последующий текст, либо с помощью относительного смещения (DownOffset, UpOffset, LeftOffset, RightOffset), либо с помощью абсолютной позиции (HorizontalPosition, VerticalPosition), не вставляя видимых символов.
Как вставить конкретный символ Unicode с помощью FieldSymbol?
Установите CharacterCode в кодовую точку символа, задайте IsUnicode = true, и при желании укажите FontName / FontSize для рендеринга глифа.
Являются ли значения смещения FieldAdvance числами или строками?
Это свойства string (DownOffset, UpOffset, LeftOffset, RightOffset, HorizontalPosition, VerticalPosition), соответствующие формату необработанных аргументов поля кода.
Влияет ли вставка символа SYMBOL на межстрочный интервал?
Установите DontAffectsLineSpacing в true, чтобы вставленный символ не влиял на высоту строки абзаца.
API Reference Сводка
| Класс/Метод | Описание: |
|---|---|
FieldAdvance | Реализует поле ADVANCE; перемещает последующий текст без вставки символов |
FieldAdvance.DownOffset / UpOffset / LeftOffset / RightOffset | Относительные смещения точек, применяемые к следующему тексту |
FieldAdvance.HorizontalPosition / VerticalPosition | Абсолютное позиционирование точки, применяемое к следующему тексту |
FieldSymbol | Реализует поле SYMBOL; вставляет символ по кодовой точке |
FieldSymbol.CharacterCode | Кодовая точка символа, в десятичном или шестнадцатеричном виде |
FieldSymbol.IsAnsi / IsUnicode / IsShiftJis | Выбирает, как CharacterCode интерпретируется |
FieldSymbol.FontName / FontSize | Шрифт, используемый для отображения полученного символа |
FieldSymbol.DontAffectsLineSpacing | Управляет тем, влияет ли вставленный символ на межстрочный интервал абзаца |