diff --git a/workshops/latex/beamer/.gitignore b/workshops/latex/beamer/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f49ae09b0ab6649937ec3a0dddbd9127a5099415
--- /dev/null
+++ b/workshops/latex/beamer/.gitignore
@@ -0,0 +1,6 @@
+image.jpg
+movie.mp4
+pgf-img/
+*.auxlock
+*.figlist
+*.makefile
diff --git a/workshops/latex/beamer/Makefile b/workshops/latex/beamer/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..95d4e9d57c4fe74e8f44e9d58fd95098f6a2840b
--- /dev/null
+++ b/workshops/latex/beamer/Makefile
@@ -0,0 +1,27 @@
+LUALATEX := lualatex
+
+
+all: beamer.pdf
+
+beamer.pdf: image.jpg movie.mp4 beamer.makefile pgf beamer.tex
+	mkdir -p pgf-img/
+	$(LUALATEX) $(patsubst %.pdf,%.tex,$@)
+
+image.jpg: animation.py
+	python animation.py
+movie.mp4: animation.py
+	python animation.py
+
+pgf: $(wildcard pgf-img/*.md5)
+	make beamer.makefile
+
+beamer.makefile:
+	mkdir -p pgf-img/
+	$(LUALATEX) $(patsubst %.makefile,%.tex,$@)
+	make -f $@
+
+clean:
+	-$(RM) -f *.{aux,nav,out,log,makefile,figlist,auxlock,snm,toc}
+realclean: clean
+	-$(RM) -f movie.mp4 image.jpg
+	-$(RM) -rf beamer.pdf pgf-img/
diff --git a/workshops/latex/beamer/osak-logo.pdf b/workshops/latex/beamer/osak-logo.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..ed0d4a74841faa4258a979be17c6f67ae85e492a
--- /dev/null
+++ b/workshops/latex/beamer/osak-logo.pdf
@@ -0,0 +1 @@
+../osak-logo.pdf
\ No newline at end of file