VS Code
editor, рядки джерела для синхронної прокрутки, а також огляд і
вигляд доповідача). Воно встановлюється з go-slides-0.5.0.vsix, доданого до
його випуску на GitHub: публікацію на VS Code Marketplace та Open VSX
підготовлено, але її там ще немає.Розширення — це аналог Marp for VS Code для go-slides: презентація показується в попередньому перегляді Markdown VS Code як слайди, її помилки — на панелі Problems, а директиви, kinds і функції шаблонів доповнюються під час набору.
Встановлення
Завантажте go-slides-<version>.vsix зі сторінки
випусків, потім виконайте
Extensions: Install from VSIX… або:
code --install-extension go-slides-0.5.0.vsixДля попереднього перегляду більше нічого не потрібно. Для експорту потрібна
команда slides:
go install github.com/go-slides/slides/cmd/slides@latestПопередній перегляд
Відкрийте презентацію та Markdown: Open Preview to the Side. Презентація — це
файл Markdown, у front matter якого сказано slides: true:
---
slides: true
paginate: true
data:
who: World
---
# Hello {{ .who }}
---
<!-- _kind: title -->
# Page {{ page }} of {{ total }}Файли з marp: true також переглядаються, якщо не встановлено Marp for VS Code:
обидва розширення рендерили б один і той самий документ. Вирішує параметр
goSlides.preview.marpDocuments: auto (типово), always або never.
Попередній перегляд — це сам go-slides, скомпільований у WebAssembly і
завантажений розширенням: жодного бінарного файла, і він працює на
vscode.dev. Він читає те, що використовує презентація, з
робочого простору — slides.yaml або slides.hcl поруч із презентацією, файли
kinds, які вони називають, файли, що їх підключає
шаблон, CSS теми — і лише з теки робочого
простору презентації.
Синхронна прокрутка
Починаючи з v0.2.0 розширення (go-slides v0.7.0), редактор і попередній перегляд
прокручуються разом, в обидва боки, як це відбувається зі звичайним Markdown:
попередній перегляд слідує за слайдом і блоком під курсором редактора, а
прокрутка попереднього перегляду рухає редактор. Параметри — власні параметри
VS Code, markdown.preview.scrollPreviewWithEditor і
markdown.preview.scrollEditorWithPreview.
Рядки відстежуються крізь шаблони. Слайд, який генерує {{ range }}, слідує за
рядком свого шаблону, а те, що приносить {{ include }}, слідує за рядком
включення. Презентація, розбита за headingDivider, синхронізується за своїми
заголовками.
Показ
Починаючи з v0.4.0 розширення (go-slides v0.9.0), презентацію можна показувати,
не виходячи з VS Code. З презентацією в редакторі, з палітри команд або з меню
… редактора:
| Команда | Відкриває |
|---|---|
| go-slides: Open Overview | панель з усіма слайдами в сітці. Вибраний слайд показує своє джерело в редакторі; Esc закриває панель |
| go-slides: Start Presenter View | слайди, а поруч — вигляд доповідача: наступний крок, нотатки доповідача й таймер |
Панелі розташовуються поруч із редактором і слідують одна за одною: змініть
слайд в одній, і інші змінюються разом із нею. Вони також слідують за вашими
правками презентації. Клавіша p у слайдах відкриває вигляд доповідача.
Щоб показувати на іншому екрані, перемістіть панель слайдів туди через View: Move Editor into New Window.
Кожна панель запускає презентацію в ізольованому фреймі (без
allow-same-origin) під політикою default-src 'none': фрейм завантажує
зображення, медіа, стилі та шрифти й більше нічого, і запускає лише скрипти,
які go-slides вбудував у сторінку, названі за хешем. Скрипт, написаний
презентацією, не запускається.
Проблеми, автодоповнення, підказки
- Проблеми: помилки шаблонів, YAML і HCL — на рядку, де вони є, у презентації або у файлі kinds, з якого вони походять.
- Автодоповнення: ключі директив у front matter і в коментарях
<!-- -->(з_для spot-директиви), значенняkindі_kind(з тим, що встановлює кожен kind),theme,size,paginate,math,headingDivider; усередині{{ }}— функції шаблонів і поля даних. - Підказка при наведенні: що робить директива, що встановлює kind, аргументи функції шаблону. Починаючи з v0.16.0 довідка про директиви відповідає мові інтерфейсу редактора (мові відображення VS Code), 11 мовами.
Експорт
go-slides: Export Slide Deck… (також у заголовку редактора) записує HTML,
векторний PDF, редагований PPTX і ODP, PNG або JPEG командою slides, так само
як slides -o deck.pdf deck.md; див. Командний рядок.
Потрібен довірений робочий простір. Якщо slides не знайдено, розширення
пропонує виконати наведений вище go install у терміналі.
Починаючи з v0.5.0 розширення (go-slides v0.14.0), PDF, який воно записує,
доступний: з slides v0.12.0 або новішим векторний PDF тегований для
екранних читачів і оголошує PDF/UA-1, з title і lang презентації та секцією
на слайд. slides --pdf-tags=false записує нетегований файл. Оновіть команду
через наведений вище go install, щоб отримати це.
Параметри
| Параметр | Типово | |
|---|---|---|
goSlides.cliPath | "" | команда slides; порожньо: slides у PATH. Параметр машини: робочий простір не може його задати |
goSlides.exportType | pdf | формат, який діалог експорту пропонує першим |
goSlides.exportAutoOpen | true | відкрити експортований файл |
goSlides.html | false | дозволити весь сирий HTML замість білого списку Marp; враховується лише в довіреному робочому просторі |
goSlides.preview.marpDocuments | auto | переглядати презентації marp: true: auto, always, never |
Безпека
Презентація та робочий простір не є довіреними. Сирий HTML дотримується білого
списку Marp, якщо goSlides.html не ввімкнено в довіреному робочому просторі
(slides.yaml з html: true не вмикає його в попередньому перегляді), а
попередній перегляд VS Code не запускає жодного скрипта з презентації.
Попередній перегляд читає лише файли теки робочого простору презентації, не
йде за символічними посиланнями, а шаблони не бачать жодної змінної
середовища. Експорт запускає програму, тож чекає на довіру до робочого
простору, а програму ніколи не називає робочий простір.
Продуктивність
На еталонній презентації go-slides зі 100 слайдів, у VS Code 1.142 на Apple M4 Max, з Marp for VS Code 3.6.1, виміряним у тому самому сеансі:
| go-slides | Marp for VS Code | |
|---|---|---|
| активація (завантаження модуля WebAssembly) | 189 мс | — |
| перший попередній перегляд | 52 мс | 78 мс |
| попередній перегляд після правки (медіана) | 19 мс | 23–24 мс |
.vsix | 7,5 МБ | 36,3 МБ |
Показники — для розширення v0.3.0 (go-slides v0.8.0) на презентації зі 100 слайдів, з набором одного символу в слайді 50, з чергованих раундів при навантаженні за 1 хвилину нижче 8. Перший попередній перегляд швидший за Marp, і попередній перегляд після правки тепер теж швидший за Marp.
У v0.8.0 і розширенні v0.3.0
go-slides v0.8.0 зберігає відрендерені слайди кожної відкритої презентації та
після правки повторно рендерить лише ті, чиє джерело чи успадкований стан
змінилися (директиви, номер сторінки, підсумок, id заголовків, посилання,
рядки джерела); вивід такий самий, як при повному рендері, байт у байт. Набір
тексту в слайді 50 зі 100 повторно рендерить один слайд: 2,5 мс нативно, 11,5
мс у WebAssembly. Попередній перегляд VS Code тоді перетворює лише DOM
зміненого слайда, а димовий тест розширення набирає один символ у слайді 50
між вимірюваними рендерами, для обох розширень. Вигляд доповідача розширення
синхронізується через батьківське вікно (postMessage).
У v0.7.1 і розширенні v0.2.2
go-slides v0.7.1 кешує розібрані теми, запаковані таблиці стилів і
підсвічений код між рендерами, позначає рядки синхронної прокрутки без
проходу байт за байтом і повторно використовує свої writers: рендер
презентації зі 100 слайдів виділяє 5,7 МБ проти 52,7 МБ у розширенні v0.2.0.
З цим розширення v0.2.2 відмовляється від перевизначення GOGC=400. Для
порівняння, розширенню v0.2.1 знадобилося 72 мс для першого попереднього
перегляду і 44 мс після правки при типовому GOGC (36 мс з GOGC=400), а
v0.2.0 — 47–51 мс.
Розширення v0.2.2 виміряно: 52 мс для першого попереднього перегляду і 24 мс після правки, на рівні з 23 мс у Marp.
Created on by tannevaled
Modified on by tannevaled