diff --git a/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 b/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 index 148107b0..9e9a208f 100644 --- a/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 +++ b/.claude/skills/mxl-compile/scripts/mxl-compile.ps1 @@ -123,7 +123,12 @@ function Parse-ColumnSpec { $colWidthMap = @{} if ($def.columnWidths) { foreach ($prop in $def.columnWidths.PSObject.Properties) { - $width = [int]$prop.Value + $val = "$($prop.Value)" + if ($val -match '^([0-9.]+)x$') { + $width = [int][math]::Round([double]$Matches[1] * $defaultWidth) + } else { + $width = [int]$val + } $columns = Parse-ColumnSpec $prop.Name foreach ($c in $columns) { $colWidthMap[$c] = $width diff --git a/docs/mxl-dsl-spec.md b/docs/mxl-dsl-spec.md index be478fce..98079a9d 100644 --- a/docs/mxl-dsl-spec.md +++ b/docs/mxl-dsl-spec.md @@ -75,7 +75,7 @@ |------|:-----:|-----------|----------| | `columns` | да | — | Количество колонок | | `defaultWidth` | нет | 10 | Ширина колонок по умолчанию | -| `columnWidths` | нет | `{}` | Ширины колонок. Ключи 1-based: `"1"`, `"3-14"`, `"5,7,9"` | +| `columnWidths` | нет | `{}` | Ширины колонок. Ключи 1-based: `"1"`, `"3-14"`, `"5,7,9"`. Значения: число (абсолют) или `"Nx"` (множитель от defaultWidth, напр. `"2x"`, `"0.5x"`) | | `fonts` | нет | — | Именованные шрифты (если не задано, создаётся Arial 10) | | `styles` | нет | `{}` | Именованные стили | | `areas` | да | — | Массив именованных областей (порядок = порядок в документе) |