{"id":31933349,"url":"https://github.com/sfeir-open-source/sfeir-school-theme","last_synced_at":"2025-10-14T05:57:26.453Z","repository":{"id":35028520,"uuid":"162136832","full_name":"sfeir-open-source/sfeir-school-theme","owner":"sfeir-open-source","description":"Theme for Sfeir School for RevealJS","archived":false,"fork":false,"pushed_at":"2025-10-02T15:43:43.000Z","size":215505,"stargazers_count":10,"open_issues_count":23,"forks_count":4,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-10-02T16:36:28.446Z","etag":null,"topics":["deck","presentation","presentation-slides","reveal","revealjs","slides","theme"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sfeir-open-source.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-12-17T13:43:49.000Z","updated_at":"2025-10-02T15:43:21.000Z","dependencies_parsed_at":"2025-09-09T16:17:36.753Z","dependency_job_id":null,"html_url":"https://github.com/sfeir-open-source/sfeir-school-theme","commit_stats":{"total_commits":107,"total_committers":11,"mean_commits":9.727272727272727,"dds":0.1869158878504673,"last_synced_commit":"e34961c2370a201e7017d8b3adf90631ba97cf3f"},"previous_names":["jefbinomed/sfeirschooltheme"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sfeir-open-source/sfeir-school-theme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfeir-open-source%2Fsfeir-school-theme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfeir-open-source%2Fsfeir-school-theme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfeir-open-source%2Fsfeir-school-theme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfeir-open-source%2Fsfeir-school-theme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sfeir-open-source","download_url":"https://codeload.github.com/sfeir-open-source/sfeir-school-theme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfeir-open-source%2Fsfeir-school-theme/sbom","scorecard":{"id":514899,"data":{"date":"2025-08-11","repo":{"name":"github.com/sfeir-open-source/sfeir-school-theme","commit":"b896dafc239281e4b8075a5b84f059779d412fd6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 8/28 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-9vvw-cc9w-f27h","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-w9mr-4mfr-499f","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T01:34:02.965Z","repository_id":35028520,"created_at":"2025-08-20T01:34:02.965Z","updated_at":"2025-08-20T01:34:02.965Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017978,"owners_count":26086237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deck","presentation","presentation-slides","reveal","revealjs","slides","theme"],"created_at":"2025-10-14T05:57:21.113Z","updated_at":"2025-10-14T05:57:26.448Z","avatar_url":"https://github.com/sfeir-open-source.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![npm version](https://badge.fury.io/js/sfeir-school-theme.svg)](https://badge.fury.io/js/sfeir-school-theme)\n\n# SFEIR School Theme\n\nThis repository is an Open Source theme for RevealJS presentations. It respect the graphical theme of [@SFEIR](https://github.com/sfeir) company.\n\nYou can preview it here : https://sfeir-school-theme.netlify.app/\n\n- [Releases Notes](https://github.com/sfeir-open-source/sfeir-school-theme/wiki/Releases-Notes)\n\n# How to use it:\n\n## Npm\n\n```sh\n# run\n$npm install sfeir-school-theme\n```\n\n## Cloning the repo\n\nLet's consider that the path to reveal engine is at `$LIBS_PATH`\n\nClone the repository in your project (`$SFEIR_THEME_PATH`)\n\n## Link\n\nYou should have a folder `web_modules/sfeir-school-theme`. In this folder you should have the bundled sfeir theme (either copy the demo web_modules or build it with `npm run build`).\n\nIn your index.html add the following lines:\n\n```html\n...\n\u003chead\u003e\n    ...\n    \u003c!-- SFEIR Theme includes --\u003e\n    \u003cscript type=\"module\" src=\"./scripts/slides.js\"\u003e\u003c/script\u003e\n    \u003clink\n        rel=\"stylesheet\"\n        type=\"text/css\"\n        href=\"./web_modules/sfeir-school-theme/dist/sfeir-school-theme.css\"\n        id=\"theme\" /\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003c!-- Any section element inside of this container is displayed as a slide --\u003e\n        \u003cdiv class=\"slides\" data-type-show=\"prez\"\u003e\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n...\n```\n\nand a basic `slides.js`:\n\n```JavaScript\nimport { SfeirThemeInitializer } from \"../web_modules/sfeir-school-theme/dist/sfeir-school-theme.mjs\";\n\n// One method per module\nfunction schoolSlides(typeShow) {\n  return [\n    \"00_intro.md\",\n    \"01_speaker.md\",\n    \"10_chapter1.md\",\n    \"11_layouts.md\",\n    \"15_vertical.md\",\n    \"20_specifics_slides.md\",\n    \"30_code_slides.md\",\n    \"40_helpers.md\",\n    \"50_modes.md\",\n  ];\n}\n\nfunction formation(typeShow) {\n  return [\n    //\n    ...schoolSlides(typeShow),\n  ].map((slidePath) =\u003e {\n    return { path: slidePath };\n  });\n}\n\nSfeirThemeInitializer.init(formation);\n```\n\nEnjoy!\n\n# RevealJS\n\nThis theme use target for [RevealJS](https://revealjs.com/#/) so all you can do with RevealJS is available with theme.\n\nYou can still use RevealJS API by importing `Reveal` object in `import { Reveal } from \"../web_modules/sfeir-school-theme/dist/sfeir-school-theme.mjs\";`\n\n## Features availables:\n\nThere is too many features to list them all, but here somes usefull:\n\n- Code Higlighting (sequential highlighting will come after)\n    - Choice of Dark code or Light code\n    - Choice of font\n    - Progess Highlithing\n- As it's controlled by class, it's compatible with markdown syntax or html\n- Fragment management to have progress display of elements\n- Print the slides (see bellow)\n\nLook at revealJS Site to see what is possible\n\n# TalkControl\n\nThe theme use [TalkControl RevealJS extensions](https://github.com/TalkControl/talk-control-revealjs-extensions/) so all you can do with this extension is available in the theme\n\n## Features availables:\n\n- Specifics slides management:\n    - Speaker slide\n    - Transition Slides\n    - I18N for your slides mechanism\n    - Multiple Columns layout\n    - Copy/paste for code slides\n    - Configurations for slides\n    - Helpers for positionning / images size / credits notes\n    - Admonition\n    - Quotes slides\n    - QrCodes\n    - Font icons (material / feather / fontawesome)\n    - UI\n        - Slide selector\n        - Define theme\n        - Define data-type\n        - Define language\n\nSee the documentation about all thoses features [here](https://github.com/TalkControl/talk-control-revealjs-extensions/blob/main/docs/how-to.md)\n\n# Features add to Sfeir School theme\n\n- Specifics slides management:\n    - First Slide\n    - Speaker Slide (rework)\n    - Transitions Slides (some configurations)\n    - Three theme mode available : institute, school or conf\n    - Blur slide\n    - Exercices Slides\n\n## Play with mode theme\n\nLots of trainings given by SFEIR School program are also available with the paid program SFEIR Institute (training organism of SFEIR company). The program SFEIR School has a main theme color which is green whereas SFEIR Institute has a main theme color which is blue. To use the same support for both programs, V3 makes it possible to switch easily from one theme to another.\n\nTo this end, you have two possibilities:\n\n- Use HTML attribute `data-theme`;\n- Use URL parameter `data-theme`.\n\nBelow are `index.html` and URL examples for the available themes.\n\n1. **[Institute](https://sfeir-school-theme.netlify.app?data-theme=institute)**\n\n```html\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003cdiv class=\"slides\" data-theme=\"institute\"\u003e...\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n```\n\nhttps://sfeir-school-theme.netlify.app/index.html?data-theme=institute#/\n\n2. **[School](https://sfeir-school-theme.netlify.app/index.html#/)** (default theme)\n\n```html\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003cdiv class=\"slides\" data-theme=\"school\"\u003e...\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n```\n\nhttps://sfeir-school-theme.netlify.app/index.html?data-theme=school#/\n\n3. **[Conf](https://sfeir-school-theme.netlify.app?data-theme=conf)**\n\n```html\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003cdiv class=\"slides\" data-theme=\"conf\"\u003e...\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n```\n\nhttps://sfeir-school-theme.netlify.app/index.html?data-theme=conf#/\n\nThe default value is \"school\" mode -\u003e Green theme.\n\nHere is an example of first slide according to if you set mode to institute or not.\n\n### Institute mode :\n\n![](./docs/images/first-slide-institute.png)\n\n### Conf mode :\n\n![](./docs/images/first-slide-conf.png)\n\n### Normal mode (or school mode):\n\n![](./docs/images/first-slide.png)\n\nHere are the impacts of the mode :\n\n- Change the first slide\n- If you use SFEIR background (`transition-bg-sfeir-1` to `transition-bg-sfeir-3`), the background use will be green or blue\n- The underline of titles in transitions slides\n- The exercice slide\n- The color of feather icons\n- The header of tables\n\n## I18N your slides\n\nIf you want to translate your slides, you simply have to add the extension corresponding to the translate langage : `XX-slide.EN.md`.\n\nThe default langage used is French, so by default a file with no extension or when you ask french slides, the engine provides you the markdown files without lang suffix.\n\nIf your asking a slide that is not available in the asked langage, the engine will provide you the \"default\" langage slide.\n\nTo resume, asking `FR` langage will serve you default markdown files.\n\nTo specify the langage you want to use, you have two options :\n\n- define the langage in the index.html\n- adding a parameter specifying the langage\n\n### Configuration in the index.html\n\n```html\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003cdiv class=\"slides\" data-lang=\"EN\"\u003e...\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n```\n\n### Configuration by URL\n\nSimply add a query parameter in the URL `data-lang` with the wanted langage after.\n\n## Specifics Slides\n\n### First slide\n\n```md\n\u003c!-- .slide: class=\"first-slide\" sfeir-level=\"1\" sfeir-techno=\"pwa\" --\u003e\n\n# **Welcome to SFEIR School**\n\n## **PWA 100**\n```\n\n![](./docs/images/first-slide.png)\n\n- Attribute: `sfeir-level` could change from 1 to 3\n- Attribute: `sfeir-techno` display the technology of the SFEIR school in the badge of SFEIR school.\n\n### Speaker Slide\n\n```md\n\u003c!-- .slide: class=\"speaker-slide\" --\u003e\n\n\u003cdiv class=\"speaker-slide\"\u003e\n\n# Hello ! @SFEIR\n\n## Jean-François \u003cb\u003eGarreau\u003c/b\u003e\n\n### CTO Front\n\n### fake.email@sfeir.com\n\n### @jefbinomed\n\n![](./assets/images/jf.jpg 'speaker')\n\n![](./assets/images/logo-sfeir-blanc.png 'company')\n\n![](./assets/images/gde.png 'badge')\n\n![](./assets/images/GDG-Logo-carre.png 'badge')\n\n![](./assets/images/mts.png 'badge')\n\n\u003c/div\u003e\n```\n\n![](./docs/images/speaker-slide.png)\n\nYou can have up to 4 sub information (here CTO Front \u0026 @jefbinomed).\n\nYou can also have up to 6 badge\n\n### Transitions slides\n\n```md\n\u003c!-- .slide: class=\"transition\" --\u003e\n\n# Management of custom slides\n```\n\n![](./docs/images/transition-slide.png)\n\nYou can use those class for transitions slides :\n\n- `blue`: the text underline of transition will be set to blue\n- `green`: the text underline of transition will be set to blue\n- `left`: the text will be left aligned\n- `right`: the text will be right aligned\n- `top`: the text will be stick to the top\n- `bottom`: the text will be stick to the bottom\n- `bg-white` / `bg-blue` / `bg-green` : the background will be in a different color\n- `transition-bg-sfeir-1` -\u003e `transition-bg-sfeir-3` : different background images linked to theme mode (school or institute)\n- `transition-bg-green-1` -\u003e `transition-bg-green-6` : different green backgrounds images\n- `transition-bg-blue-1` -\u003e `transition-bg-blue-3` : different blue backgrounds images\n\n## Transition with background text in blue or green\n\n```md\n\u003c!-- .slide: class=\"transition blue\" --\u003e\n\n# Transition blue\n```\n\n![](./docs/images/transition-blue.png)\n\nor in `green`\n\n![](./docs/images/transition-green.png)\n\n## Transition with text left aligned\n\n```md\n\u003c!-- .slide: class=\"transition left\" --\u003e\n\n# Transition left\n```\n\n![](./docs/images/transition-left.png)\n\n- `transition right` for right text aligned\n\n![](./docs/images/transition-right.png)\n\n- `transition top` for top text aligned\n\n![](./docs/images/transition-top.png)\n\n- `transition bottom` for bottom text aligned\n\n![](./docs/images/transition-bottom.png)\n\n## Specifics Colors Backgrounds\n\nHere is the list of possible backgrounds:\n\n```md\n\u003c!-- .slide: class=\"transition bg-white\" --\u003e\n\n# Transition\n```\n\n- `bg-white`\n  ![](./docs/images/sfeir-bg-white.png)\n\n- `bg-blue`\n  ![](./docs/images/sfeir-bg-blue.png)\n\n- `bg-green`\n  ![](./docs/images/sfeir-bg-green.png)\n\n## Transition background SFEIR and green and blue\n\nHere is the list of possible grey background\n\n- bg-sfeir-1 = bg-green-1 or bg-blue-1\n- bg-sfeir-2 = bg-green-2 or bg-blue-2\n- bg-sfeir-3 = bg-green-3 or bg-blue-3\n\n```md\n\u003c!-- .slide: class=\"transition-bg-sfeir-1\" --\u003e\n\n# SFEIR bg SFEIR 1\n```\n\n- `transition-bg-sfeir-1`\n  ![](./docs/images/sfeir-bg-sfeir-1.png)\n\n- `transition-bg-green-1`\n  ![](./docs/images/sfeir-bg-green-1.png)\n\n- `transition-bg-green-2`\n  ![](./docs/images/sfeir-bg-green-2.png)\n\n- `transition-bg-green-3`\n  ![](./docs/images/sfeir-bg-green-3.png)\n\n- `transition-bg-green-4`\n  ![](./docs/images/sfeir-bg-green-4.png)\n\n- `transition-bg-green-5`\n  ![](./docs/images/sfeir-bg-green-5.png)\n\n- `transition-bg-green-6`\n  ![](./docs/images/sfeir-bg-green-6.png)\n\n- `transition-bg-blue-1`\n  ![](./docs/images/sfeir-bg-blue-1.png)\n\n- `transition-bg-blue-2`\n  ![](./docs/images/sfeir-bg-blue-2.png)\n\n- `transition-bg-blue-3`\n  ![](./docs/images/sfeir-bg-blue-3.png)\n\n### Blur area slides\n\nThere is a way to show content in a blur area for introducing pause in your training\n\n```md\n\u003c!-- .slide: class=\"bg-blur\" --\u003e\n\n\u003cbr\u003e\n\n### C'est l'heure de la pause\n\n\u003cbr\u003e\n\n![](pause-circle 'tc-icons feather')\u003c!-- .element: style=\"--tc-icon-size:300px; --tc-icon-color:var(--light-grey);\" --\u003e\n\n\u003cbr\u003e\n\nOn se retrouve à\n\n\u003c!-- .element: class=\"center\" --\u003e\n\u003cbr\u003e\n\n![](clock 'tc-icons feather tc-big')\u003c!-- .element: style=\"--tc-icon-color:var(--light-grey);\" --\u003e 10h\n```\n\n![](./docs/images/blur-slide.png)\n\n## Exercices\n\nTo produce exercices slides:\n\n```md\n\u003c!-- .slide: class=\"exercice\" --\u003e\n\n# Exercice Title\n\n## Exercice\n\n\u003cbr\u003e\n1. First step\n2. Second step\n3. Third step\n\u003cbr\u003e\nAdditionnal Advice\n### Step: push-1\n```\n\n![](./docs/images/exercice-slide.png)\n\n### Create content for the restitution only\n\nWith this configuration option you can easily create content that is different between, what you will play on stage and what you will give to your attendees without a complete rewrite of your slides. This configuration is a pair between a key specified in your index.html or URL parameters and a key present in your slides.\n\n**Index.html Configuration**\n\n```html\n\u003cbody\u003e\n    \u003cdiv class=\"reveal\"\u003e\n        \u003cdiv class=\"slides\" data-type=\"prez\"\u003e...\u003c/div\u003e\n    \u003c/div\u003e\n\u003c/body\u003e\n```\n\nhttps://sfeir-school-theme.netlify.app/index.html?data-type=prez#/\n\n**Slides configuration**\n\n```markdown\n\u003c!-- .slide: data-type-show=\"prez\" --\u003e\n\n## A slide for prez only\n\nA few words !\n```\n\nThe slide 'A slide for prez only' will be visible only if the attribute `data-type-show` on index.html is set to \"prez\" or if the type URL parameter is set to prez.\nNote that as for the themes described above, the URL parameter takes precedence over the HTML attribute.\n\nWith this technique, you can easily create 2 versions of your index.hml, one with `data-type-show` to **prez** and one with `data-type-show`to **full** and in your slides, you have something like that\n\n```markdown\n\u003c!-- .slide: data-type-show=\"prez\" --\u003e\n\n## A slide for prez only\n\nA few words !\n\n##==##\n\n\u003c!-- .slide: data-type-show=\"full\" --\u003e\n\n## A slide for publication only\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nec risus leo. Vestibulum condimentum orci in urna auctor aliquet. Quisque mi erat, placerat non porttitor ut, gravida eu erat. Fusce semper ipsum vel nibh porttitor aliquam. Cras sed porttitor est, id scelerisque odio. Pellentesque sit amet imperdiet ex. Aliquam erat.\n```\n\nIf nothing is set in the markdown, the slide will be available for both versions.\n\nYou can also set multiples data-type-show in the same slide (separated by a space) to create kind of specifics configurations for your slides.\n\n```markdown\n\u003c!-- .slide: data-type-show=\"prez other\" --\u003e\n```\n\n## Print the slides\n\nTo print your presentation, simply follow the reveal.js tutorial : [Pdf Export](https://revealjs.com/pdf-export/)\n\n| Configuration                                                   | Description                                                   |\n| --------------------------------------------------------------- | ------------------------------------------------------------- |\n| `index.html?print-pdf\u0026show-notes`                               | Show the notes in the exported page.                          |\n| `\u003cdiv class=\"slides\" data-show-notes/\u003e`                         | Show the notes in the exported page.                          |\n| `\u003cdiv class=\"slides\" data-show-notes=\"separate-page\"/\u003e`         | Show the notes of the exported page in a separate page.       |\n| `\u003cdiv class=\"slides\" data-pdf-max-pages-per-slide=\"1\"/\u003e`        | Ensures that one slide is printed as one page.                |\n| `index.html?print-pdf\u0026pdf-max-pages-per-slide=1`                | Ensures that one slide is printed as one page.                |\n| `\u003cdiv class=\"slides\" data-pdf-max-pages-per-slide=\"\u003cnumber\u003e\"/\u003e` | Ensures that one slide is printed as `\u003cnumber\u003e` page maximum. |\n| `\u003cdiv class=\"slides\" data-pdf-dont-separate-fragments/\u003e`        | Ensure that fragments are not separated in multiple pages.    |\n| `index.html?print-pdf\u0026pdf-dont-separate-fragments`              | Ensure that fragments are not separated in multiple pages.    |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfeir-open-source%2Fsfeir-school-theme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsfeir-open-source%2Fsfeir-school-theme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfeir-open-source%2Fsfeir-school-theme/lists"}