|
3069 | 3069 | - outer-pad.right |
3070 | 3070 | - inner-inset.right |
3071 | 3071 | ) |
| 3072 | + let tag = _text-style(theme, "plot-tag") |
3072 | 3073 | let title = _text-style(theme, "plot-title") |
3073 | 3074 | let subtitle = _text-style(theme, "plot-subtitle") |
3074 | 3075 | let caption = _text-style(theme, "plot-caption") |
|
3093 | 3094 | ), |
3094 | 3095 | ) |
3095 | 3096 | } else { none } |
| 3097 | + let tag-block = if labs != none { |
| 3098 | + _chrome-block(labs.tag, tag, left, weight: tag.weight) |
| 3099 | + } else { none } |
3096 | 3100 | let title-block = if labs != none { |
3097 | 3101 | _chrome-block(labs.title, title, left, weight: title.weight) |
3098 | 3102 | } else { none } |
|
3109 | 3113 | _text-margin-cm(style, side, 0.6em) * 1cm |
3110 | 3114 | } |
3111 | 3115 |
|
| 3116 | + // Bottom margin of the lowest header block sets the gap above the canvas. |
3112 | 3117 | let above-canvas = if subtitle-block != none { |
3113 | 3118 | subtitle |
3114 | | - } else if title-block != none { title } else { none } |
| 3119 | + } else if title-block != none { |
| 3120 | + title |
| 3121 | + } else if tag-block != none { tag } else { none } |
3115 | 3122 |
|
3116 | 3123 | ( |
3117 | 3124 | plot-bg: plot-bg, |
3118 | 3125 | outer-pad: outer-pad, |
3119 | 3126 | inner-inset: inner-inset, |
| 3127 | + tag-block: tag-block, |
3120 | 3128 | title-block: title-block, |
3121 | 3129 | subtitle-block: subtitle-block, |
3122 | 3130 | caption-block: caption-block, |
| 3131 | + tag-gap: _gap-length(tag, "bottom"), |
3123 | 3132 | inter-title-gap: _gap-length(title, "bottom"), |
3124 | 3133 | above-gap: if above-canvas != none { |
3125 | 3134 | _gap-length(above-canvas, "bottom") |
|
3134 | 3143 | #let _decorate-extents(parts) = { |
3135 | 3144 | let _h(b) = if b == none { 0cm } else { measure(b).height } |
3136 | 3145 | let top = parts.outer-pad.top + parts.inner-inset.top |
3137 | | - if parts.title-block != none { top += _h(parts.title-block) } |
| 3146 | + let headers = 0 |
| 3147 | + if parts.tag-block != none { |
| 3148 | + top += _h(parts.tag-block) |
| 3149 | + headers += 1 |
| 3150 | + } |
| 3151 | + if parts.title-block != none { |
| 3152 | + if headers > 0 { top += parts.tag-gap } |
| 3153 | + top += _h(parts.title-block) |
| 3154 | + headers += 1 |
| 3155 | + } |
3138 | 3156 | if parts.subtitle-block != none { |
3139 | | - if parts.title-block != none { top += parts.inter-title-gap } |
| 3157 | + if headers > 0 { |
| 3158 | + top += if parts.title-block != none { parts.inter-title-gap } else { |
| 3159 | + parts.tag-gap |
| 3160 | + } |
| 3161 | + } |
3140 | 3162 | top += _h(parts.subtitle-block) |
| 3163 | + headers += 1 |
3141 | 3164 | } |
3142 | | - if parts.title-block != none or parts.subtitle-block != none { |
3143 | | - top += parts.above-gap |
3144 | | - } |
| 3165 | + if headers > 0 { top += parts.above-gap } |
3145 | 3166 | let bottom = parts.outer-pad.bottom + parts.inner-inset.bottom |
3146 | 3167 | if parts.caption-block != none { |
3147 | 3168 | bottom += parts.caption-gap + _h(parts.caption-block) |
|
3181 | 3202 | ), |
3182 | 3203 | ) |
3183 | 3204 | } else { content } |
| 3205 | + let tag-block = parts.tag-block |
3184 | 3206 | let title-block = parts.title-block |
3185 | 3207 | let subtitle-block = parts.subtitle-block |
3186 | 3208 | let caption-block = parts.caption-block |
3187 | 3209 |
|
3188 | 3210 | let items = () |
3189 | | - if title-block != none { items.push(title-block) } |
| 3211 | + if tag-block != none { items.push(tag-block) } |
| 3212 | + if title-block != none { |
| 3213 | + if items.len() > 0 { items.push(v(parts.tag-gap)) } |
| 3214 | + items.push(title-block) |
| 3215 | + } |
3190 | 3216 | if subtitle-block != none { |
3191 | | - if items.len() > 0 { items.push(v(parts.inter-title-gap)) } |
| 3217 | + if items.len() > 0 { |
| 3218 | + items.push(v(if title-block != none { parts.inter-title-gap } else { |
| 3219 | + parts.tag-gap |
| 3220 | + })) |
| 3221 | + } |
3192 | 3222 | items.push(subtitle-block) |
3193 | 3223 | } |
3194 | | - if title-block != none or subtitle-block != none { |
3195 | | - items.push(v(parts.above-gap)) |
3196 | | - } |
| 3224 | + if items.len() > 0 { items.push(v(parts.above-gap)) } |
3197 | 3225 | items.push(canvas) |
3198 | 3226 | if caption-block != none { |
3199 | 3227 | items.push(v(parts.caption-gap)) |
|
0 commit comments