# \[ANN\] PlutoTeachingTools.jl: A collection of functions to use with Pluto for tutorials, presentations, lab assignments,

**URL:** <https://discourse.julialang.org/t/ann-plutoteachingtools-jl-a-collection-of-functions-to-use-with-pluto-for-tutorials-presentations-lab-assignments/86049>\
**Category:** Package Announcements\
**Tags:** package, announcement, teaching, pluto\
**Created:** [August 20, 2022, 2:09am UTC](https://discourse.julialang.org/t/ann-plutoteachingtools-jl-a-collection-of-functions-to-use-with-pluto-for-tutorials-presentations-lab-assignments/86049 "2022-08-20T02:09:28Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![eford](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eford/32/12990_2.png) [@eford](https://discourse.julialang.org/u/eford)\
**Post date:** [August 20, 2022, 2:09am UTC](https://discourse.julialang.org/t/ann-plutoteachingtools-jl-a-collection-of-functions-to-use-with-pluto-for-tutorials-presentations-lab-assignments/86049/1 "2022-08-20T02:09:28Z")

</div>

I’m happy to announce [PlutoTeachingTools.jl](https://github.com/JuliaPluto/PlutoTeachingTools.jl), a collection of small functions to make it quick and easy to enhance tutorials, lab/homework assignments, and presentations. The best way to see what it could do for you is to check out the **[example notebook](https://juliapluto.github.io/PlutoTeachingTools.jl/example.html)**.

## Examples of useful functions included:

- commons alert boxes (`correct()`, `almost(md)`, `keep_working()`, `still_missing()`, `hint(md)`)
- common error boxes (`var_not_defined(sym)`, `func_not_defined(sym)`)
- `Foldable(str,md)`, `protip(md)` and `aside(md)` for extra information or tangents
- `latexify_md(var)` and `wrap_tex(str)` for including \LaTeX-formatted expressions in markdown
- `TwoColumn(l,r)` and `ThreeColumn(l,c,r)` for comparing figures, equations, code blocks, etc.
- `ChooseDisplayMode()` providing checkboxes to enter/leave Full Width Mode and/or Presentation mode
- rexporting @ingredients from [PlutoLinks.jl](https://github.com/JuliaPluto/PlutoHooks.jl) for including include code from a local file, module.

## Why put these in a package?

By putting these functions into a package

- Students are less likely to be distracted by UI code that’s not intended to be part of the current lesson.
- Instructors don’t have to copy and paste so much.
- Notebooks are smaller and load more quickly (thanks to precompilation)
- Others can contribute to improving code and adding new functionality.
- If a new version of Pluto changes something that breaks one of the HTML/CSS hack, then it’s easier to update old notebooks by updating PlutoTeachingTools, than by manually updating code in notebook.

## Future

I found an earlier version of this package useful during a previous semester and hope it’s useful to others. I encourage others to improve and/or contribute new functions that are of value to other educators. PRs are welcome. I’ll aim to merge clean PRs that fix bugs, add/improve documentation and/or add new features on a rolling basis. However, I will try to hold off on any PRs that would result in breaking changes until mid-December (i.e., after my Fall semester ends) and again between mid-January and mid-May. In any case, please be patient, as this is merely a side project.

## Acknowledgements

A bit thanks to Fons and the other developers of [Pluto.jl](https://github.com/fonsp/Pluto.jl).  
Many functions are merely code borrowed from modules and/or homework assignments from the excellent MIT course, [Introduction to Computational Thinking  
Math (Spring 2021)](https://computationalthinking.mit.edu/Spring21/). Other functions were adapted from various open-source packages and discussions in various issues pull requests (see code comments for specific credits).
