Как лучше всего определить новую выноску в кварто? Я могу изменить выноску по умолчанию следующим образом:
---
format:
html:
theme:
- custom.scss
---
::: {.callout-tip appearance = "minimal"}
Some wild callout
:::
а затем файл .scss вот так:
/*-- scss:defaults --*/
$callout-background: #ff5bbb;
/*-- scss:rules --*/
.callout {
background-color:$callout-background;
}
но применяется ко всем последующим выноскам. Как лучше определить новые?






Одним из вариантов создания нового блока выноски может быть переопределение классов css callout с желаемыми правилами.
Здесь я определил новый блок выноски callout-tweet, переопределив CSS-классы callout. Но этот переопределенный блок выноски не содержит значка выноски, даже с callout-appearance: default. Итак, чтобы получить значок, я добавил еще один класс .icon.
Поэтому callout-icon: false или true в yaml не повлияют на этот вновь определенный блок выноски (callout-tweet). По умолчанию он будет отображаться без значка, и чтобы получить значок, вам нужно использовать .icon с ним.
---
title: "New Callout Block"
format:
html:
theme: callout_tweet.scss
---
::: {.callout-tweet}
Tweet from the callout tweet
:::
::: {.callout-tweet .icon}
Tweet from the callout tweet with icon
:::
::: {.callout-tip}
Some wild callout
:::
::: {.callout-warning}
Some wild callout
:::
callout_tweet.scss
/*-- scss:defaults --*/
$border-color-left: #0dcaf0 !default;
$icon: url('data:image/svg+xml,<svg xmlns = "http://www.w3.org/2000/svg" width = "16" height = "16" fill = "currentColor" class = "bi bi-twitter" viewBox = "0 0 16 16"> <path d = "M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"/></svg>') !default;
$background-color: #bfe4eb !default;
/*-- scss:rules --*/
div.callout-tweet.callout {
border-left-color: $border-color-left;
}
div.callout-tweet.callout-style-default>.callout-header {
background-color: $background-color;
}
.callout-tweet.icon .callout-icon {
display: unset !important;
}
div.callout-tweet.icon.callout-captioned .callout-icon::before {
background-image: $icon;
}
.callout-tweet.icon.callout-style-default div.callout-icon-container {
padding-top: 0.1em;
padding-right: 0.35em;
}
Теперь остается проблема с недавно определенным блоком выноски: если вы используете с ним collapse=true, он становится сворачиваемым, но значок сворачивания не отображается. Чтобы решить эту проблему без лишних хлопот, просто добавьте уже определенные типы выноски после .callout-tweet в заголовке div.
---
title: "New Callout Block with collapse sign"
format:
html:
theme: callout_tweet.scss
---
::: {.callout-tweet collapse=true}
Tweet from the callout tweet with icon
:::
::: {.callout-tweet .callout-warning collapse=true}
Tweet from the callout tweet
:::
::: {.callout-tweet .icon .callout-note collapse=true}
Tweet from the callout tweet with icon
:::
Создание новой выноски в данный момент невозможно (но предусмотрено). В итоге я взломал наименее используемую выноску (callout-caution) в моем расширении quarto github.com/ginolhac/unilur . CSS вводится фильтром lua. Отрендеренный файл здесь: ginolhac.github.io/unilur/example.html
Это невероятно! Я шел по ложному следу в своем собственном устранении неполадок, пытаясь применить здесь фильтр lua. Но взаимодействие между lua-css-scss... немного сбивает с толку.