Тема 3: Научно-издательская система Quarto

Лекция 6. Формирование и публикация документов в Quarto

Большие данные и аналитика
Бизнес-информатика 38.03.05 (бакалавриат)

Создание веб-документов

Создание веб-страниц

С технической точки зрения проект Quarto — это просто папка, содержащая файл _quarto.yml. Файлы вида _file.* не рендерятся!

С практической точки зрения использование проекта Quarto имеет два преимущества:

можно отобразить все документы Quarto в папке проекта

можно задать общие для документов параметры в одном месте.

Создание простейшего проекта:

Terminal
quarto create project website mysite

Файл _quarto.yml проекта содержит

_quarto.yml
project:
  type: default # либо manuscript, website, book

Простой пример _quarto.yml

_quarto.yml
project:
  type: website

website:
  title: "Заголовок"
  date: today
  author: Автор
  lang: ru
  navbar:
    left:
      - href: index.qmd
        text: Домашняя страница
      - about.qmd

format:
  html:
    theme: cosmo
    css: styles.css
    toc: true

Пример _quarto.yml веб-статьи

_quarto.yml
title: "Воспроизводимые научные исследования"
# пример: https://sample-site-itmo.netlify.app/
subtitle: "Прикладные исследования"
author:
  - name:
      given: Иван
      family: Иванов
      literal: И.И. Иванов
    orcid: 0000-0001-1111-1111
    email: email@yandex.ru
    affiliation: Университет ИТМО

date: today

format:
  html:
    theme: [cosmo, theme.scss]
    code-tools:
      source: true

lang: ru
toc: true
highlight-style: a11y
output-file: index

csl: "gost-r-7-0-5-2008-numeric.csl"

bibliography: references.bib

language:
  title-block-affiliation-single: "Организация"
  section-title-citation: "Ссылка для цитирования"
  appendix-attribution-cite-as: "На публикацию можно сослаться как"
  title-block-affiliation-plural: "Организация"
  section-title-references: "Список литературы"
  section-title-abstract: "Аннотация для сайта"
  title-block-modified: "Обновлено"

citation: 
  url: https://www.preprint.netlify.app
  citation-key: paper-prepint
  issued: "2025-05-09"

Блоги

Создание блогов

Создание блога на основе шаблона:

Terminal
quarto create project blog myblog


Пример _quarto.yml блога

_quarto.yml
project:
  type: website
  preview:
    port: 5555

website:
  title: "Результаты исследований"
  # пример: https://naukaidannye.netlify.app/blog/
  description: "наши наработки"
  repo-url: https://github.com/your_repo/publish/
  repo-actions: [edit, issue]
  navbar:
    search: true
    pinned: true
    right:
      - about.qmd
      - icon: github
        href: https://github.com/your_repo/publish/

format:
  html:
    toc: true
    toc-depth: 1
    theme: flatly

Примеры тем для веб-страниц

Брендирование

Элементы _brand.yml

В Quarto можно использовать брендирование — простой, переносимый файл YAML, который кодирует информацию по “бренду”: логотипу, цвету, шрифтам и типографскому выбору Unified branding with a simple YAML file.

  • meta: идентифицирующая информация, например, название компании, URL-адреса и т.д.
  • logo: файлы или ссылки на логотипы бренда
  • color: цвета в цветовой палитре бренда
  • typography: шрифты для различных элементов
  • defaults: дополнительные настройки, зависящие от контекста

Пример _brand.yml

_brand.yml
meta: 
  name: Example Company
  link: 
    github: https://github.com/example-company

logo: 
  medium: logos/logo.png

color:
  palette:
    black: "#1C2826"
    blue: "#0C0A3E" 
    neutral: "#F9F7F1" 
    red: "#BA274A"
    violet: "#4D6CFA"
  background: neutral
  foreground: black
  primary: blue
  secondary: violet
  danger: red

typography:
  fonts:
    - family: Nunito Sans
      source: google
    - family: Montserrat
      source: google
    - family: Fira Code
      source: google

  base: Nunito Sans
  headings:
    family: Montserrat
    weight: 700
    color: primary
  monospace: Fira Code
  link:
    color: danger
    decoration: underline

Презентации

Создание Reveal.js-презентаций

---
title: "Заголовок"
subtitle: "Подзаголовок"

format:
  revealjs: 
    controls: true
    hash-type: number
    output-file: index
    slide-number: c/t
    chalkboard: 
      buttons: true
    transition: fade
---

## Слайд 1

Содержание первого слайда

## Слайд 2

Список:

- первый элемент
- второй элемент

Пример презентации

Дэшборды

Дэшборды

---
title: "Palmer Penguins"
format: dashboard
---
    
## Row {height=70%}

```{r}
```

## Row {height=30%}

```{r}
```

```{r}
```

Dashboard Layout, пример: сайт с примером

Quarto Manuscripts

Quarto Manuscripts

Пример: A personal history of the tidyverse

Дополнения

Параметры в документах

---
params:
  alpha: 0.3
  beta: 0.1
---

Обращение к параметрам:

```{r}
params$alpha
```

Переменные

_variables.yml
version: 1.1
author: Author

course:
  title: "Большие данные и аналитика"
  semester: "весенний семестр 2025 года"
  lectures: "16ч"
  practice: "32ч"

Пример использования:

Quarto
Курс **{{< var course.title >}}** содержит {{< var course.lectures >}} лекций.

В документе:

Курс Большие данные и аналитика содержит 16ч лекций.

Рабочий процесс

VS Code + расширения: GitLens + Project Manager + проверка правописания = 🔥

Публикация веб-документов

Сервисы для веб-публикации

Вы можете опубликовать Quarto документы в самых различных местах, включая популярные издательские сервисы:

Сервис Описание
Netlify Используйте Netlify, если вам нужна поддержка пользовательских доменов, аутентификации, предварительного просмотра ветвей и других более продвинутых возможностей.
GitHub Pages Публикуйте контент на основе исходного кода, управляемого в репозитории GitHub. Используйте страницы GitHub, когда исходный код вашего документа или сайта размещен на GitHub.
Quarto Pub Служба публикации документов, веб-сайтов и книг Quarto. Используйте Quarto Pub, если вам нужен бесплатный, простой в использовании сервис для общедоступного контента.
другие сервисы Контент, отображаемый с помощью Quarto, использует стандартные форматы (HTML, Pdf, MS Word и т.д.), которые могут быть опубликованы где угодно. Используйте это, если один из описанных выше методов не соответствует вашим требованиям.

Netlify Drop - самый простой сервис

https://app.netlify.com/drop

Публикация в QuartoPub

https://quartopub.com/

QuartoPub страница

_publish.yml

В процессе публикации при исполнении команды quarto publish будет создан _publish.yml-файл, который выглядит примерно так:

_publish.yml
- source: project
  quarto-pub:
    - id: 1a854318-ad2d-4564-acbf-d9d3927181fb
      url: 'https://quarto-publishing-book.quarto.pub/blogexample'

Замечание

Перед каждой публикацией необходимо сделать рендер всего проекта внутри IDE либо командой

Terminal
quarto render

Posit Connect Cloud

https://connect.posit.cloud/ (если есть интерактив)

Публикация на Posit Connect Cloud

Проект на Posit Connect Cloud

GitHub-проекты

Git-интеграция

GitHub репозиторий

Пример репозитория

Клонируем в GitHub Desktop, GitKraken или в чем-то еще.

Push на GitHub

Terminal
git commit -m "новый блог! :tada:"
git push

Содержимое проекта на GitHib

Публикация проекта на GitHub Pages

Этапы подготовки проекта

  • Сконфигурируем директорию docs для публикации материалов
_quarto.yml
project:
  type: website
  output-dir: docs
  • Добавляем файл .nojekyll в корневой каталог
Terminal
touch .nojekyll
  • Делаем рендер проекта
Terminal
quarto render
git add docs

Настройки публикации на GH Pages

Публикация проекта на Netlify

Netlify

Страница Netlify

Вход и регистрация на Netlify

Проекты и настройки на Netlify

Этапы публикации на Netlify

Этапы публикации на Netlify

Этапы публикации на Netlify

Этапы публикации на Netlify

Что еще?

Дополнительные возможности

Возможно публиковать документы с помощью плагинов на GitHub Pages и Netlify таким образом, что рендер полностью выполняется в облаке.


Веб-страницы можно улучшать с помощью CSS и Sass элементов, например, как на странице Slidecraft 101.


В Quarto можно создавать интерактивные книги, ShinyLive — это новый способ полностью запустить Shiny в браузере, Closeread — scrollytelling в Quarto.


Расширения Quarto позволяют существенно улучшить качество веб-страниц, например, как на Awesome Quarto Extensions Listing.

Что мы изучили?

Рассмотренные вопросы

  • Создание документов в Quarto
  • Возможности публикации веб-документов в Quarto
  • Некоторые дополнительные возможности при создании Quarto документов

Спасибо за внимание!