{"version":3,"kind":"Article","sha256":"4b2e489fde899f8f9762b69b916de0c08345cdb6bf75dae0b57b05df10c0f233","slug":"a-plugins","location":"/content/lessons/2a_plugins.md","dependencies":[],"frontmatter":{"title":"Plugins 🌶","numbering":{"title":{"offset":1,"enabled":true}},"content_includes_title":false,"authors":[{"nameParsed":{"literal":"Freek Pols","given":"Freek","family":"Pols"},"name":"Freek Pols","id":"contributors-myst-generated-uid-0"},{"nameParsed":{"literal":"Luuk Fröling","given":"Luuk","family":"Fröling"},"name":"Luuk Fröling","id":"contributors-myst-generated-uid-1"},{"nameParsed":{"literal":"Robert Lanzafame","given":"Robert","family":"Lanzafame"},"name":"Robert Lanzafame","id":"contributors-myst-generated-uid-2"},{"nameParsed":{"literal":"Kirstie Whitaker","given":"Kirstie","family":"Whitaker"},"name":"Kirstie Whitaker","id":"contributors-myst-generated-uid-3"},{"nameParsed":{"literal":"Jim Madge","given":"Jim","family":"Madge"},"name":"Jim Madge","id":"contributors-myst-generated-uid-4"}],"date":"2025-11-02","license":{"content":{"id":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/","name":"Creative Commons Attribution 4.0 International","free":true,"CC":true}},"github":"https://github.com/jupyter-book/workshop-template","edit_url":null,"abbreviations":{"JB2":"Jupyter Book 2","CI/CD":"Continuous Integration/Continuous Deployment","GHA":"GitHub Actions","GH":"GitHub","IDE":"Integrated Development Environment","VSC":"Visual Studio Code","CLI":"commmand line interface"},"source_url":"https://github.com/jupyter-book/workshop-template/blob/main/content/lessons/2a_plugins.md","enumerator":"4.1","exports":[{"format":"md","filename":"2a_plugins.md","url":"/build/2a_plugins-4cb7c3d70274e592d2021dfe1f49615a.md"}]},"mdast":{"type":"root","children":[{"type":"div","class":"font-light text-sm mb-4 updated-date-container","children":[{"type":"text","value":"Updated: 30 Oct 2025","key":"R2og5naWxf"}],"key":"SI4HWTymoC"},{"type":"block","children":[{"type":"paragraph","position":{"start":{"line":9,"column":1},"end":{"line":10,"column":1}},"children":[{"type":"text","value":"Plugins allow you to extend the functionality of Jupyter Book.\nIn this workshop-template, we make use of a single plugin:","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"tHGz7DpfZa"}],"key":"ZOYHvZ8ogJ"},{"type":"include","file":"../../myst.yml","literal":true,"caption":[{"type":"text","value":"We make use of plugins in this workshop-template.","position":{"start":{"line":16,"column":1},"end":{"line":16,"column":1}},"key":"l5fnXZYQir"}],"filter":{"startAt":"plugins:","endBefore":"# exports and downloads"},"children":[{"type":"container","kind":"code","children":[{"type":"code","value":"  plugins:\n    - https://github.com/TUD-JB-Templates/JB2_plugins/releases/download/experiment/experiment.mjs\n    - https://github.com/jupyter-book/myst-plugins/releases/download/page-last-updatedv1.1/page-last-updated.mjs\n  ","lang":"yaml","showLineNumbers":true,"startingLineNumber":24,"filename":"myst.yml","key":"kgZhOcHkvy"},{"type":"caption","children":[{"type":"paragraph","children":[{"type":"captionNumber","kind":"code","label":"less2_code_plugins","identifier":"less2_code_plugins","html_id":"less2-code-plugins","enumerator":"1","children":[{"type":"text","value":"Program ","key":"oB4SJSjvI8"},{"type":"text","value":"1","key":"CPhf8ds8hK"},{"type":"text","value":":","key":"MPopVoZXJK"}],"template":"Program %s:","key":"oDgIldEEI6"},{"type":"text","value":"We make use of plugins in this workshop-template.","position":{"start":{"line":16,"column":1},"end":{"line":16,"column":1}},"key":"l5fnXZYQir"}],"key":"qDWybId9Ym"}],"key":"CZAS8YPFV0"}],"label":"less2_code_plugins","identifier":"less2_code_plugins","enumerator":"1","html_id":"less2-code-plugins","key":"H61XJ2YN8A"}],"key":"OxNCC0q9qf"},{"type":"paragraph","position":{"start":{"line":20,"column":1},"end":{"line":20,"column":1}},"children":[{"type":"text","value":"This plugin allows you to create a custom admonition:","position":{"start":{"line":20,"column":1},"end":{"line":20,"column":1}},"key":"wxpYRS4Y0G"}],"key":"i816wHgEt6"},{"type":"mystDirective","name":"experiment","args":"Let's do a fun physics experiment!","value":"Have two coins A and B touching and a third coin (C) lengthwise at a few cm distance.\nThen shoot coin C towards B while pressing B down with your finger.\nIf coin A and coin B touch, then the momentum transfers very well to coin A even though B is not able to move.\nThe transmission mechanism inside coin B must be a wave.\nCoin A can also be put such that it is not quite in line with coin B but still touching B.\nAlso then momentum transfer takes place and A is launched under an angle.","position":{"start":{"line":22,"column":1},"end":{"line":29,"column":1}},"key":"tcKpHKhu29"},{"type":"admonition","kind":"tip","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Tip","key":"LDVVb2vYSE"}],"key":"oUAWwCepbR"},{"type":"paragraph","position":{"start":{"line":32,"column":1},"end":{"line":32,"column":1}},"children":[{"type":"text","value":"Plugins are shared in a ","position":{"start":{"line":32,"column":1},"end":{"line":32,"column":1}},"key":"nmlsoJHNHZ"},{"type":"link","url":"https://github.com/jupyter-book/myst-plugins/","position":{"start":{"line":32,"column":1},"end":{"line":32,"column":1}},"children":[{"type":"text","value":"GitHub repo","position":{"start":{"line":32,"column":1},"end":{"line":32,"column":1}},"key":"JQEJEfWiIf"}],"urlSource":"https://github.com/jupyter-book/myst-plugins/","error":true,"key":"Gq3KW37UxG"}],"key":"HDNWusNVUZ"}],"key":"iaT8sTKdjl"},{"type":"exercise","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Include a plugin","position":{"start":{"line":35,"column":1},"end":{"line":35,"column":1}},"key":"vMQmFflISE"}],"key":"zePbChI1iR"},{"type":"paragraph","position":{"start":{"line":36,"column":1},"end":{"line":38,"column":1}},"children":[{"type":"text","value":"Look at the different plugins available in the ","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"YNFdDnPp5x"},{"type":"link","url":"https://github.com/jupyter-book/myst-plugins/","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"children":[{"type":"text","value":"myst-plugins GitHub repo","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"nXn2ciZsrV"}],"urlSource":"https://github.com/jupyter-book/myst-plugins/","error":true,"key":"piQgGumQ8S"},{"type":"text","value":".\nInclude one of them in your own ","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"Bpc6o9fByY"},{"type":"inlineCode","value":"myst.yml","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"juUojmT3Xj"},{"type":"text","value":" file and use it in a page of your book.\nRebuild the book and look at your changes.","position":{"start":{"line":36,"column":1},"end":{"line":36,"column":1}},"key":"Ypmg3ftkgu"}],"key":"ysMOqByXxA"}],"enumerated":true,"label":"exercise-LxjsGj8zjT","identifier":"exercise-lxjsgj8zjt","enumerator":"1","html_id":"exercise-lxjsgj8zjt","key":"XcmyYoQ2Im"}],"key":"nbPLhIkCow"}],"key":"dSQYh70UAa"},"references":{"cite":{"order":[],"data":{}}},"footer":{"navigation":{"prev":{"title":"More content","url":"/nextstep","group":"Jupyter Book 2 Workshop Template"},"next":{"title":"Reusing and sharing content","url":"/reuse","group":"Jupyter Book 2 Workshop Template"}}},"domain":"http://localhost:3000"}