Определить новую выноску в кварто

Как лучше всего определить новую выноску в кварто? Я могу изменить выноску по умолчанию следующим образом:

---
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-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
0
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Одним из вариантов создания нового блока выноски может быть переопределение классов 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
:::


Это невероятно! Я шел по ложному следу в своем собственном устранении неполадок, пытаясь применить здесь фильтр lua. Но взаимодействие между lua-css-scss... немного сбивает с толку.

boshek 02.12.2022 21:42

Создание новой выноски в данный момент невозможно (но предусмотрено). В итоге я взломал наименее используемую выноску (callout-caution) в моем расширении quarto github.com/ginolhac/unilur . CSS вводится фильтром lua. Отрендеренный файл здесь: ginolhac.github.io/unilur/example.html

aurelien 27.01.2023 09:45

Другие вопросы по теме