mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-18 01:00:24 +03:00
feat(mxl-compile,mxl-decompile): колонтитулы и параметры печати
Ключи header и footer описывают колонтитул: три слота (left, center, right), общий шрифт и вертикальное выравнивание, признак вывода и страница, с которой печатать. Ключ printSettings — плоский набор параметров печати с именами тегов платформы; порядок компилятор выставляет сам, незнакомый ключ отвергает. Слот устроен как ячейка: ссылка на формат плюс текст. Текст бывает двух видов, и это не текст против шаблона, а обычная строка против форматированной: у форматированной разметка живёт прямо в содержимом (<b>жирный</>, <fontsize 12>, <colorstyle -16>), поэтому она возится как есть. Признак вывода и стартовая страница лежат в формате как <height> и <width>, но читаются только у записи с <height>: палитра дедуплицирована, и колонтитул без своих настроек ссылается на чужую запись, где <width> — ширина колонки (637 таких ссылок против 153 своих). Перенос строки внутри текста колонтитула платформа хранит голым LF при CRLF во всём остальном файле — единственное такое место в документе, поэтому содержимое пишется одной строкой вывода. Формат колонтитула регистрируется до отсева неиспользуемых шрифтов: иначе шрифт, на который ссылается только колонтитул, выбрасывался бы из палитры. Стенд Колонтитулы собирается байт в байт обоими портами и добавлен в платформенные фикстуры. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1e0b82d419
commit
702a3b6a8d
@@ -601,7 +601,40 @@ current-config не объявляет, поэтому вынести объяв
|
||||
обратные, ячейки продолжают ссылаться на записи со старыми ширинами. Из итогового XML это
|
||||
значение не выводится — воспроизводить его не нужно.
|
||||
|
||||
## Группировки строк и колонок
|
||||
## Колонтитулы и параметры печати
|
||||
|
||||
```xml
|
||||
<leftHeader>
|
||||
<f>2</f> <!-- формат: шрифт, выравнивание, признак вывода, стартовая страница -->
|
||||
<tl><v8:item><v8:lang>ru</v8:lang><v8:content>Слева</v8:content></v8:item></tl>
|
||||
</leftHeader>
|
||||
…
|
||||
<printSettings>
|
||||
<topMargin>1000</topMargin> … <firstPageNumber>15</firstPageNumber>
|
||||
</printSettings>
|
||||
```
|
||||
|
||||
Шесть элементов идут после строк и перед `<templateMode>`: `leftHeader`, `centerHeader`,
|
||||
`rightHeader`, `leftFooter`, `centerFooter`, `rightFooter`. Пишутся не комплектом: `leftHeader`
|
||||
есть у 1 013 макетов, остальные — у 677–790.
|
||||
|
||||
| Наблюдение | Данные корпуса |
|
||||
|---|---|
|
||||
| текст слота | `<tl>` — обычная строка, `<tfl>` — форматированная (разметка внутри содержимого: `<b>…</>`, `<fontsize 12>`, `<colorstyle -16>`) |
|
||||
| формат слота | `<height>` = признак вывода (`1` / `-1`), `<width>` = страница, с которой печатать, плюс шрифт и `verticalAlignment` |
|
||||
| формат общий на колонтитул | у 674 макетов из 677; разный у трёх |
|
||||
| формат делится с другими владельцами | 637 против 153 «только колонтитулы» — палитра дедуплицирована, поэтому `<width>` в чужой записи означает ширину колонки, а не страницу |
|
||||
|
||||
**Ловушка:** перенос строки внутри текста колонтитула платформа хранит голым LF, тогда как весь
|
||||
остальной файл идёт CRLF. Это единственное место документа с другим переводом строки.
|
||||
|
||||
`printSettings` (2 350 макетов) — плоский набор в фиксированном порядке: `pageOrientation` ·
|
||||
`scale` · `collate` · `copies` · `perPage` · `topMargin` · `leftMargin` · `bottomMargin` ·
|
||||
`rightMargin` · `headerSize` · `footerSize` · `fitToPage` · `blackAndWhite` · `printerName` ·
|
||||
`paper` · `paperSource` · `pageWidth` · `pageHeight` · `duplexType` · `pagePlacementAlternation` ·
|
||||
`firstPageNumber`. Номер первой страницы принадлежит именно параметрам печати, а не колонтитулу.
|
||||
|
||||
## Группы строк и колонок
|
||||
|
||||
```xml
|
||||
<vgLevels>2</vgLevels>
|
||||
@@ -616,7 +649,7 @@ current-config не объявляет, поэтому вынести объяв
|
||||
<hg>…</hg> <!-- то же для колонок -->
|
||||
```
|
||||
|
||||
Строки группируются часто (1 797 макетов, 170 967 группировок), колонки — почти никогда
|
||||
Строки группируются часто (1 797 макетов, 170 967 групп), колонки — почти никогда
|
||||
(1 макет, 1 группировка). Порядок документных тегов: `height` → `vgLevels` → `vgRows` → `vg` →
|
||||
`hg`; `vgLevels` пишется только при наличии группировок.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user