|
<< Нажмите, чтобы показать Содержание >> TRVMarkdownProperties |
Это тип свойства TRichView.MarkdownProperties. Содержит параметры импорта и экспорта Markdown.
Модуль [VCL/FMX] RVMarkdown / fmxRVMarkdown.
Синтаксис
TRVMarkdownProperties = class (TPersistent)
Для экспорта:
Для импорта:
Общее:
Markdown – это компактный язык разметки, созданный с целью добавить форматирование в простой текст.
Реализация ТРВ-Редактором следует спецификации CommonMark.
Реализация табличного расширения ТРВ-Редактором следует спецификации GitHub Flavored Markdown.
ТРВ-Редактор может экспортировать в Markdown:
▪текст (с атрибутами курсива и полужирного текста)
▪заголовки
▪таблицы (опционально)
▪сноски, концевые сноски, сноски в рамке, текстовые блоки (опционально, в качестве сносок)
▪рисунки
▪гиперссылки
Заголовки распознаются по свойству OutlineLevel абзацев.
Формат Markdown поддерживает два типа заголовков:
▪заголовки Setext (абзацы, подчёркнутые символами '=' (для заголовка уровня 1) или '-' (для заголовка уровня 2))
▪заголовки ATX (абзацы, начинающиеся с символов '#': '# ' для заголовка уровня 1, '## ' для уровня 2, ..., вплоть до уровня 6).
При чтении файла Markdown важен только уровень заголовка; заголовки в форматах Setext и ATX загружаются одинаково.
Заголовки Setext могут быть многострочными и содержать переносы строк, но они могут представлять только заголовки 1-го и 2-го уровней. Примечание: некоторые программы для чтения Markdown не поддерживают многострочные заголовки Setext.
См. также опцию rvmdsoUseSetextHeadings в SaveOptions.
Если шаблоны стилей не используются, к экспортируемому тексту применяются правила:
▪для заголовков атрибуты курсива и полужирности не сохраняются;
▪для обычного текста атрибуты курсива и полужирности берутся из атрибутов шрифта (свойство Style)
Если используются шаблоны стилей, к экспортируемому тексту применяются правила:
▪если текст связан с шаблоном стиля 'Emphasis', 'Subtle Emphasis' или 'Intense Emphasis', он сохраняется как выделенный;
▪если текст связан с шаблоном стиля 'Strong', он сохраняется как сильно выделенный;
▪в противном случае используется форматирование, применённое поверх шаблона стиля (свойство Style). Для заголовков учитывается отличие от шаблона стиля 'heading №'; для обычного текста учитывается отличие от шаблона стиля 'Normal'; для блочных цитат учитывается отличие от того шаблона стиля, который используется для них. Для гиперссылок также учитывается шаблон стиля 'Hyperlink'.
Если шаблоны стилей не используются, блочные цитаты не сохраняются.
Если используются шаблоны стилей, абзацы, связанные с шаблоном стиля 'Quote' или 'Intense Quote', сохраняются как блочные цитаты.
TRichView поддерживает сохранение только одного уровня блочных цитат.
См. также опцию rvmdsoListInBlockQuote в SaveOptions.
Исходный формат Markdown не поддерживает таблицы. Однако существует расширение Markdown, поддерживающее очень простые таблицы (текстовое содержимое в одну строку, без объединения ячеек, без вложенных таблиц, без дополнительных свойств таблицы; содержимое столбцов может быть выровнено по левому, правому краю или по центру).
Чтобы разрешить сохранение таблиц как таблиц, добавьте rvmdeTables в Extensions. В противном случае содержимое ячеек будет сохраняться как обычные абзацы.
Исходный формат Markdown не поддерживает сноски. Однако существует расширение Markdown, поддерживающее их.
Чтобы разрешить сохранение сносок, добавьте rvmdeFootnotes в Extensions и укажите типы сохраняемых сносок в NotesSavedAsFootnotes. В противном случае сноски будут сохраняться в месте их вставки как текст внутри [ ].
По умолчанию TRichView сохраняет Markdown в кодировке UTF-8.
Если вы захотите конвертировать результат в неюникодную кодировку, рекомендуется поменять значение глобальной константы RVMarkdownSmallSpace (объявленной в модуле RVMarkdownSave/fmxRVMarkdownSave) на пробел ('#32;') или другой пробельный символ, присутствующий в конечной кодировке.
RVMarkdownSmallSpace: TRVUnicodeString = '#8202;'; // UNI_HAIR_SPACE
TRichView может вставлять этот код между знаком препинания и буквой, чтобы сделать знак препинания полужирным или курсивным.
ТРВ-Редактор может импортировать из Markdown:
▪текст (с выделением и сильным выделением, с вставками кода)
▪заголовки
▪многоуровневые блочные цитаты
▪блоки кода
▪таблицы (опционально)
▪рисунки
▪гиперссылки
Если используются шаблоны стилей, атрибуты импортированных абзацев и текста зависят от них.
Используются следующие шаблоны стилей, если они имеются:
▪'Normal' (обычные абзацы)
▪'heading 1' ... 'heading 2' (абзацы заголовков)
▪'Quote' или 'Intense Quote' (абзацы блочных цитат)
▪'HTML Preformatted' (абзацы блоков кода)
▪'HTML Code' (текст в блоках кода и вставках кода)
▪'Emphasis' (выделение)
▪'Strong' (сильное выделение и текст в заголовках таблиц)
▪'Hyperlink' (гиперссылки)
Если шаблоны стилей не используются или соответствующий шаблон стиля отсутствует, TRichView использует значения по умолчанию.
Заголовки импортируются как абзацы, имеющие положительные значения свойства OutlineLevel.
Если используются шаблоны стилей, шаблоны стиля 'heading 1' ... 'heading 6' применяются к абзацам заголовков.
Если шаблоны стилей не используются (или нужные шаблоны стиля отсутствуют), TRichView использует атрибуты текста по умолчанию (вы можете изменить их в глобальном объекте RVDefaultLoadProperties: свойство DefaultProperties[]).
Всё содержимое блочных цитат импортируется как абзацы с отступом.
В то время как экспорт распознает только один уровень блочных цитат, импорт использует отступы для отображения многоуровневых списков и блочных цитат.
Если используются шаблоны стилей, к абзацам применяются шаблоны стилей 'Quote' или 'Intense Quote'. Вложенные цитаты имеют отступ слева, увеличенный на отступ, указанный в используемом шаблоне стиля.
Если шаблоны стилей не используются, эти абзацы имеют отступ, заданный в свойстве DefaultItemProperties.ListMarkerIndentPix и цвет, заданный в свойстве DefaultItemProperties.BlockQuoteBackColor.
Всё содержимое блоков цитат импортируется как абзацы.
Текущая версия ТРВ-Редактора не может экспортировать блоки кода, она может только импортировать их.
Если используются шаблоны стилей, шаблон стиля 'HTML Preformatted' применяется к абзацам, 'HTML Code' – к тексту.
Если шаблоны стилей не используются, эти абзацы имеют цвет, заданный в свойстве DefaultItemProperties.CodeBlockBackColor, и текст в них использует шрифт RVDefaultLoadProperties.DefaultMonoSpacedFontName.
Если шаблоны стилей не используются, при импорте текста применяются следующие правила:
▪выделение импортируется как курсивный текст
▪сильное выделение импортируется как полужирный текст
▪вставки кода имеют шрифт RVDefaultLoadProperties.DefaultMonoSpacedFontName
▪гиперссылки синие и подчёркнутые (свойства ссылок могут быть изменены в глобальном объекте RVDefaultLoadProperties: свойство DefaultProperties[rvftHyperlink]).
Если используются шаблоны стилей, при импорте текста применяются следующие правила:
▪выделение форматируется шаблоном стиля 'Emphasis'
▪сильное выделение форматируется шаблоном стиля 'Strong'
▪вставки кода форматируются шаблоном стиля 'HTML Code'
▪гиперссылки форматируются шаблоном стиля 'Hyperlink'
Поскольку к тексту можно применить только один шаблон стиля, для текста с несколькими атрибутами (например вставок кода внутри выделения) применяется только основной шаблон стиля, а остальные атрибуты применяются так, как если бы шаблоны стилей не использовались. Используются следующие приоритеты шаблонов стилей (от наивысшего к наинизшему): 'Hyperlink', 'HTML Code', 'Strong', 'Emphasis'.
Текущая версия ТРВ-Редактора не может экспортировать вставки кода, она может только импортировать их.
Уровни списка имеют отступы, заданные в свойствах DefaultItemProperties.ListMarkerIndentPix и ListLeftIndentPix.
Для сложных вложенных списков, в случае конфликта уровней можно выбрать сохранение либо уровня вложенности (включите rvmdloEnforceListLevels в LoadOptions), либо тип списка (исключите rvmdloEnforceListLevels из LoadOptions).
Чтобы разрешить импорт таблиц, включите rvmdeTables in Extensions.
Первая строка импортируется как строка заголовка. Текст в этой строке форматируется так, как если бы он имеел сильное выделение.
Ячейки таблицы имеют ширину, заданную DefaultItemProperties.TableCellWidthPix.