Сноски в рамке в документе ТРВ-Редактора (TRichView)

<< Нажмите, чтобы показать Содержание >>

Сноски в рамке в документе ТРВ-Редактора (TRichView)

Сноска выглядит как число (тип нумерации указывается в TRVStyle.SidenoteNumbering). Если задано свойство FormatString, число форматируется на основе этой строки (например, если FormatString содержит один символ, сноска отобразит один символ). Сноска содержит поддокумент. Этот поддокумент не отображается в TCustomRichView, куда вставляется сноска, но его можно распечатать компонентом TRVPrint: он отображается в прямоугольнике (текстовом блоке) по заданным координатам.

Компонент TRVReportHelper не показывает поддокументы сносок. Если нужно нарисовать документ со сносками на заданной канве, используйте TRVPrint в режиме виртуального принтера.

srv_icon Примечание о СРВ-Редакторе (ScaleRichView): компонент TSRichViewEdit показывает и даёт редактировать сноски.

Класс этого типа элемента: TRVSidenoteItemInfo (см. для подробной информации).

Тип (стиль) этого элемента: rvsSidenote (-206)

Методы TCustomRichView

Следующие методы быстрого изменения документа добавляют элемент этого типа в конец документа:

AddItem (создайте объект TRVSidenoteItemInfo, затем добавьте в документ методом AddItem)

Следующие методы возвращают объект TRVSidenoteItemInfo:

GetItem

Методы TCustomRichViewEdit

Следующие методы редактирования документа вставляют элемент этого типа в позицию каретки:

InsertItem (создайте объект TRVSidenoteItemInfo, затем вставьте в документ методом InsertItem)

Следующие методы возвращают объект TRVSidenoteItemInfo в позиции каретки:

GetCurrentItem.

Следующие методы меняют свойства как операции редактирования:

SetCurrentItemExtraIntPropertyEx;

SetItemExtraIntPropertyExEd;

SetCurrentItemExtraStrPropertyEx;

SetItemExtraStrPropertyExEd.

Свойства

Сноски имеют все свойства нумерованных последовательностей.

Отличия:

NumberType только для чтения; оно всегда возвращает значение TRVStyle.SidenoteNumbering;

SeqName = '@sidenote@' и его нельзя менять.

Кроме того элемент имеет следующие свойства:

BoxPosition – содержит свойства, задающие координаты прямоугольника (текстового блока) для отображения поддокумента сноски;

BoxProperties – содержит свойства, определяющие размер, цвет и рамку этого прямоугольника, а также выравнивание его содержимого.

Эти свойства также доступны как rveipcFloatHorizontalAnchor, rveipcFloatHorizontalPositionKind, rveipcFloatHorizontalOffset, rveipcFloatHorizontalAlign, rveipcFloatVerticalAnchor, rveipcFloatVerticalPositionKind, rveipcFloatVerticalOffset, rveipcFloatVerticalAlign, rveipcFloatRelativeToCell, rveipcFloatPositionInText, rveipcBoxWidth, rveipcBoxHeight, rveipcBoxWidthType, rveipcBoxHeightType, rveipcBoxBorderColor, rveipcBoxBorderWidth, rveipcBoxBorderInternalWidth, rveipcBoxBorderStyle, rveipcBoxBorderVisibleBorders_Left, rveipcBoxBorderVisibleBorders_Top, rveipcBoxBorderVisibleBorders_Right, rveipcBoxBorderVisibleBorders_Bottom, rveipcBoxBorderBorderOffsets_Left, rveipcBoxBorderBorderOffsets_Top, rveipcBoxBorderBorderOffsets_Right, rveipcBoxBorderBorderOffsets_Bottom, rveipcBoxColor, rveipcBoxPadding_Left, rveipcBoxPadding_Top, rveipcBoxPadding_Right, rveipcBoxPadding_Bottom, rveipcBoxVAlign. Изменение их таким способом позволяет реализовать операции редактирования.

Сохранение и загрузка

Экспорт в HTML

Поддокументы для всех сносок сохраняются после основного документа. Перед каждым поддокументом вставляется <a name="sidenoteN"></a>, где N — номер данной сноски (в списке всех нумерованных последовательностей и сносок). Сноски сохраняются как гиперссылки на этот якорь.

RTF и DocX

Сноски можно экспортировать в форматы RTF и DocX. Они сохраняются как текст NoteText, за которым идёт плавающий блок, содержащий Document. Вокруг текста сноски добавляется закладка с именем '_sidenoteN' (где N – номер этой сноски), позволяющая сохранять ссылки на сноску из её документа в виде ссылок на эту закладку.

Некоторые комбинации свойств позиционирования блоков не поддерживаются Microsoft Word*, поэтому ТРВ-Редактор преобразует их:

MS Word не поддерживает вертикальное выравнивание относительно абзаца, поэтому оно сохраняется как выравнивание относительно строки;

MS Word не поддерживает относительное (в процентах) позиционирование относительно строки или абзаца, поэтому оно сохраняется как абсолютное позиционирование (с нулевым смещением);

Другие отличия*:

при позиционировании относительно строки, MS Word выравнивает текстовый блок не относительно всей строки, а относительно её верхнего края, поэтому выравнивание по центру и по нижнему краю относительно строки различаются в TRichView и MS Word;

MS Word не реализует все параметры вертикального выравнивания относительно ячейки таблицы, поэтому в TRichView и MS Word это работает по-разному, см. BoxPosition.VerticalAnchor;

MS Word не поддерживает разные отступы для рамки и для фона, поэтому BoxProperties.Border.BorderOffsets не сохраняются в RTF.

(* Данная информация основана на тестировании MS Word 2013)

Плавающие блоки пока нельзя импортировать из RTF, но их можно импортировать из DocX. Сноски в рамке импортируются из DocX как текстовые блоки.

В DocX TRichView поддерживает текстовые поля как в старом (VML), так и в новом (DrawingML) форматах.

Markdown

Сноски сохраняются как сноски, если активно расширение формата со сносками (опция rvmdeFootnotes включена TRichView.MarkdownProperties.Extensions), и опция rvntSidenote включена TRichView.MarkdownProperties.NotesSavedAsFootnotes.

В противном случае документ сноски сохраняется в месте вставки сноски в квадратных скобках.

Если активно расширение формата с таблицами, сноски в ячейках таблиц не могут быть сохранены.

Текст

При копировании или сохранении выделенного текста сноски не включаются в текст. При сохранении всего текста они сохраняются в месте вставки в квадратных скобках:

Это текст [a последовательность символов] для показа сносок

[b примечание, помещаемое в конец документа].