С закладками все предельно просто. Начало закладки определяется элементом text:bookmark-start, конец - text:bookmark-end. Атрибут text:name определяет имя закладки. Имя есть у обоих элементов, но нам оно понадобится только у открывающего.
Сноски - довольно удобная штука, но создавать их вручную - не очень приятно. Поскольку "офис" предоставляет нам возможность сделать это автоматически - надо этим воспользоваться.
Сноски можно использовать по прямому назначению, то есть чтобы давать развернутые пояснения, которые нежелательно включать в текст, но можно и, например, для создания списков внешних ссылок "а ля Википедия". Также полезно будет возле сноски размещать ссылку, с помощью которой можно будет прокрутить страницу обратно к тому месту, с которого перешли к сноске.
Приведу фрагмент кода со сноской
<text:ptext:style-name="Обычный"><text:spantext:style-name="Название_20_книги"><text:spantext:style-name="T10">Ссылка на сноску</text:span></text:span><text:spantext:style-name="Знак_20_сноски"><text:spantext:style-name="T18"><text:notetext:id="ftn1"text:note-class="footnote"><text:note-citation>1</text:note-citation><text:note-body><text:ptext:style-name="Текст_20_сноски"><text:s/>Сноска на странице
</text:p></text:note-body></text:note></text:span></text:span><text:spantext:style-name="Название_20_книги"><text:spantext:style-name="T10">.</text:span></text:span></text:p>
Здесь мы видим, что сам текст перед сноской никак не выделен, а нам надо только обрамить номер сноски ссылкой и установить якорь, а содержимое сноски разместить в самом конце страницы. Разметка Cyberforum позволяет делать текст одновременно и ссылкой и якорем только если якорь устанавливается поверх ссылки.
Разберем что мы имеем. Сноска обозначена элементом text:note, атрибут text:id - имя, можем также использовать в качестве идентификатора сноски, правда нам надо будет модифицировать его так, чтобы можно было отличить ссылку на сноску и ссылку, работающую в обратном направлении, то есть чтобы можно было вернуться от сноски к тому месту, откуда на нее ссылались.
Вот так мы обработаем ссылку на сноску внутри документа.
Верхний и нижний индексы.
Верхний и нижний индексы определяютсяв свойствах стиля атрибутом style:text-position. Значение атрибута представлено как super 64% и sub 64% соответственно. То есть для их указания нам надо отредактировать функцию, в которой мы вычисляли свойства стиля.
Выравнивание определяется в свойствах абзаца атрибутом fo:text-align. Будет оно левым, правым или центральным - зависит от значения, оно может быть start, center и end. Если не установлено, значит выравнивается по левому краю, растягивание по ширине разметкой Cyberforum не предусмотрено, так что искать не будем. Поскольку задается выравнивание для абзацев, будем редактировать шаблон, где содержатся определения для абзацев. И не забываем о том, что при запросе значения свойства в качестве узла будем передавать не сам абзац, а одного из его потомков, как это делали при вычислении отступов.
<xsl:templatematch="text:h|text:p"><xsl:variablename="app-t"><xsl:apply-templates/></xsl:variable><xsl:variablename="align"select="my:style-property-value(./*[1], 'fo:text-align')"/><xsl:variablename="indent"select="substring-before(my:style-property-value(./*[1], 'fo:margin-left'), 'cm')"/><xsl:variablename="indented"><xsl:choose><xsl:whentest="$indent = '' or starts-with($indent, '0')"><xsl:value-ofselect="$app-t"/></xsl:when><xsl:otherwise><xsl:variablename="indent-width"select="fn:ceiling(number($indent)) cast as xsd:integer"/><xsl:variablename="indent-count"select="$indent-width"as="xsd:integer"/><xsl:value-ofselect="my:wrap-with-tags($app-t, for $i in (1 to $indent-count) return 'indent' , 1)"/></xsl:otherwise></xsl:choose></xsl:variable><xsl:choose><xsl:whentest="$align = 'center'"><xsl:value-ofselect="my:wrap-with-tag($indented, 'CENTER')"/></xsl:when><xsl:whentest="$align = 'end'"><xsl:value-ofselect="my:wrap-with-tag($indented, 'RIGHT')"/></xsl:when><xsl:otherwise><xsl:value-ofselect="$indented"/></xsl:otherwise></xsl:choose><!--<xsl:value-of select="''" disable-output-escaping="yes"/>--><xsl:text></xsl:text></xsl:template>
Ну и на данный момент наш документ выглядит вот так. Ссылка на сноску расположена близко к сноске, поэтому посмотреть ее в работе не выходит. Но если переместить ее вверх, то все работает.
Кликните здесь для просмотра всего текста
Ссылка на закладку
Заголовок 1
Обычный текст
Заголовок 2
Заголовок 3 Заголовок 4
Заголовок 5
Заголовок 6 Заголовок 7
Название
Подзаголовок Сильное выделение Строгий
Цитата 2
Слабая ссылка Сильная ссылка
Название книги
Абзац списка.
Жирный Курисив Подчеркнутый Перечекнутый
ХНижний индекс
ХВерхний идекс
Крупный шрифт 72
Мелкий шрифт 8
Левое выравнивание
Выравнивание по центру
Правое выравнивание
Первый пункт маркированного списка
Второй пункт маркированного списка
Первый пункт н умерованного списка
Пункт 1.a;alfjasdf; lj l ;l lj ;lk 
lkj;lkj l sdls dfslkj as;l
Пункт 1.b b xj 'nj pf [eqyz&
Второй пункт нумерованного списка
Текст до десяти пробелов Текст после десяти пробелов
Текст красного цвета
Текст синего цвета
Выделение желтым
/*Далее таблица*/
1.1
1.2
1.3
1.4
1.2
2.2
2.3
2.4
3.1
3.2
3.3
3.4
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .