Skip to content

Typst "Grid Customization" lists body-width, but it has no effect #14574

@cwickham

Description

@cwickham

What would you like to do?

Report an issue on quarto.org

Description

Page: https://quarto.org/docs/output-formats/typst.html#grid-customization

The Typst Grid Customization section documents three grid options:

Option Description (current docs)
margin-width Width of the margin note column
body-width Width of the main text column
gutter-width Gap between body text and margin

…and the example sets all three:

format:
  typst:
    grid:
      margin-width: 2in
      body-width: 4in
      gutter-width: 0.25in

However, body-width is silently ignored. Quarto's geometry calculation reads it but never uses it.
For reference, the mapping lives in typstGeometryFromPaperWidthmargin-width/gutter-width are consumed but body-width is not:

-- Apply user overrides from grid options
if gridOptions then
if gridOptions["margin-width"] then
local parsed = parseCssLength(gridOptions["margin-width"])
if parsed then outerWidth = parsed end
end
if gridOptions["gutter-width"] then
local parsed = parseCssLength(gridOptions["gutter-width"])
if parsed then
-- gutter-width sets outer.sep always
outerSep = parsed
-- gutter-width sets inner.sep only if margin.left wasn't specified
if not marginLeftSpecified then
innerSep = parsed
end
end
end
end

If we view this as a docs issue, I think the solution is:

  1. Drop body-width from the Typst grid table. Remove it from the example.
  2. Clarify the two that work:
    • margin-width — width of the margin note column.
    • gutter-width — gap between the body and the margin column.
  3. Note that the body width is whatever space is left over and point to margin-geometry for full control.

However, we could potentially honor body-width if zero or one of margin-width and gutter-width is supplied, and warn if all three are supplied. @gordonwoodhull, if you think that's a better fix, feel free to relabel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions