|
3093 | 3093 | - outer-pad.right |
3094 | 3094 | - inner-inset.right |
3095 | 3095 | ) |
| 3096 | + let tag = _text-style(theme, "plot-tag") |
3096 | 3097 | let title = _text-style(theme, "plot-title") |
3097 | 3098 | let subtitle = _text-style(theme, "plot-subtitle") |
3098 | 3099 | let caption = _text-style(theme, "plot-caption") |
|
3113 | 3114 | if style.angle != none { body = rotate(style.angle, reflow: true, body) } |
3114 | 3115 | box(width: inner-w, align(a, body)) |
3115 | 3116 | } else { none } |
| 3117 | + let tag-block = if labs != none { |
| 3118 | + _chrome-block(labs.tag, tag, left, weight: tag.weight) |
| 3119 | + } else { none } |
3116 | 3120 | let title-block = if labs != none { |
3117 | 3121 | _chrome-block(labs.title, title, left, weight: title.weight) |
3118 | 3122 | } else { none } |
|
3129 | 3133 | _text-margin-cm(style, side, 0.6em) * 1cm |
3130 | 3134 | } |
3131 | 3135 |
|
| 3136 | + // Bottom margin of the lowest header block sets the gap above the canvas. |
3132 | 3137 | let above-canvas = if subtitle-block != none { |
3133 | 3138 | subtitle |
3134 | | - } else if title-block != none { title } else { none } |
| 3139 | + } else if title-block != none { |
| 3140 | + title |
| 3141 | + } else if tag-block != none { tag } else { none } |
3135 | 3142 |
|
3136 | 3143 | ( |
3137 | 3144 | plot-bg: plot-bg, |
3138 | 3145 | outer-pad: outer-pad, |
3139 | 3146 | inner-inset: inner-inset, |
| 3147 | + tag-block: tag-block, |
3140 | 3148 | title-block: title-block, |
3141 | 3149 | subtitle-block: subtitle-block, |
3142 | 3150 | caption-block: caption-block, |
| 3151 | + tag-gap: _gap-length(tag, "bottom"), |
3143 | 3152 | inter-title-gap: _gap-length(title, "bottom"), |
3144 | 3153 | above-gap: if above-canvas != none { |
3145 | 3154 | _gap-length(above-canvas, "bottom") |
|
3154 | 3163 | #let _decorate-extents(parts) = { |
3155 | 3164 | let _h(b) = if b == none { 0cm } else { measure(b).height } |
3156 | 3165 | let top = parts.outer-pad.top + parts.inner-inset.top |
3157 | | - if parts.title-block != none { top += _h(parts.title-block) } |
| 3166 | + let headers = 0 |
| 3167 | + if parts.tag-block != none { |
| 3168 | + top += _h(parts.tag-block) |
| 3169 | + headers += 1 |
| 3170 | + } |
| 3171 | + if parts.title-block != none { |
| 3172 | + if headers > 0 { top += parts.tag-gap } |
| 3173 | + top += _h(parts.title-block) |
| 3174 | + headers += 1 |
| 3175 | + } |
3158 | 3176 | if parts.subtitle-block != none { |
3159 | | - if parts.title-block != none { top += parts.inter-title-gap } |
| 3177 | + if headers > 0 { |
| 3178 | + top += if parts.title-block != none { parts.inter-title-gap } else { |
| 3179 | + parts.tag-gap |
| 3180 | + } |
| 3181 | + } |
3160 | 3182 | top += _h(parts.subtitle-block) |
| 3183 | + headers += 1 |
3161 | 3184 | } |
3162 | | - if parts.title-block != none or parts.subtitle-block != none { |
3163 | | - top += parts.above-gap |
3164 | | - } |
| 3185 | + if headers > 0 { top += parts.above-gap } |
3165 | 3186 | let bottom = parts.outer-pad.bottom + parts.inner-inset.bottom |
3166 | 3187 | if parts.caption-block != none { |
3167 | 3188 | bottom += parts.caption-gap + _h(parts.caption-block) |
|
3201 | 3222 | ), |
3202 | 3223 | ) |
3203 | 3224 | } else { content } |
| 3225 | + let tag-block = parts.tag-block |
3204 | 3226 | let title-block = parts.title-block |
3205 | 3227 | let subtitle-block = parts.subtitle-block |
3206 | 3228 | let caption-block = parts.caption-block |
3207 | 3229 |
|
3208 | 3230 | let items = () |
3209 | | - if title-block != none { items.push(title-block) } |
| 3231 | + if tag-block != none { items.push(tag-block) } |
| 3232 | + if title-block != none { |
| 3233 | + if items.len() > 0 { items.push(v(parts.tag-gap)) } |
| 3234 | + items.push(title-block) |
| 3235 | + } |
3210 | 3236 | if subtitle-block != none { |
3211 | | - if items.len() > 0 { items.push(v(parts.inter-title-gap)) } |
| 3237 | + if items.len() > 0 { |
| 3238 | + items.push(v(if title-block != none { parts.inter-title-gap } else { |
| 3239 | + parts.tag-gap |
| 3240 | + })) |
| 3241 | + } |
3212 | 3242 | items.push(subtitle-block) |
3213 | 3243 | } |
3214 | | - if title-block != none or subtitle-block != none { |
3215 | | - items.push(v(parts.above-gap)) |
3216 | | - } |
| 3244 | + if items.len() > 0 { items.push(v(parts.above-gap)) } |
3217 | 3245 | items.push(canvas) |
3218 | 3246 | if caption-block != none { |
3219 | 3247 | items.push(v(parts.caption-gap)) |
|
0 commit comments