# Gemini invokes latexmk on every make

> Gemini is a beamerposter LaTeX theme that ships as a handful of files you copy into your own directory, with three built-in colour themes and eleven community ones. Its Makefile declares poster.pdf as depending on a FORCE target, so latexmk runs on every invocation whether or not anything changed.

**anishathalye/gemini** — Gemini is a modern LaTex beamerposter theme 🖼

- Repository: https://github.com/anishathalye/gemini
- Website: https://anishathalye.com/gemini-a-modern-beamerposter-theme/
- Stars: 1,281 · Forks: 320
- Language: TeX
- License: MIT
- Published: 2026-10-17 · Updated: 2026-10-17 · Language: en
- Canonical page: https://hysenlabs.com/projects/anishathalye-gemini

## The repository is eleven files and no package manager

The top-level entries describe the whole project: `.editorconfig`, `.gitignore`, `.latexmkrc`, `LICENSE.md`, `Makefile`, `README.md`, `beamerthemegemini.sty`, a `colorthemes/` directory, `poster.bib` and `poster.tex`.

There is no LaTeX package to install and no registry entry. The usage instructions are to copy the files in the repository, or clone it, then edit `poster.tex` to set paper size, column layout and content scale, and run `make`.

That shape has an obvious consequence. Because you copy the files, you own them. There is no version to track, no upgrade path, and no compatibility question between your poster and someone else's release. When the author improves the theme, you take the diff or you do not, and the poster still builds either way.

It also means the repository doubles as the worked example. `poster.tex` is a real poster using the theme, and `poster.bib` is its bibliography, so both the theme's intended usage and a bibliography workflow are visible rather than described. The primary language of the repository is recorded as TeX, which matches the content.

The one piece of documentation outside the repository is the wiki FAQ, which the README points to for questions such as how to add an institution logo. That is a reasonable division for a LaTeX project, since questions about adapting a poster are numerous and mostly independent of the code.

## The Makefile rebuilds unconditionally, on purpose

The Makefile is three targets and one of them changes the behaviour you would expect from `make`.

```make
main: poster.pdf

poster.pdf: FORCE
	latexmk -pdflatex='lualatex -interaction nonstopmode' -pdf poster.tex

clean:
	latexmk -pdf -C
```

`poster.pdf` depends on a `FORCE` target rather than on `poster.tex`, and `FORCE` is declared in the `.PHONY` line. A phony target never exists on disk, so its timestamp is always considered out of date, so the recipe always runs. The practical effect is that `make` invokes latexmk every time, whether or not you edited a file.

The recipe has two details worth noting. The engine is passed as `lualatex -interaction nonstopmode`, so LuaTeX compiles in nonstop mode and does not stop on the first error waiting for input, which is what you want for a build you may run headlessly. And the build command is `latexmk -pdflatex=... -pdf poster.tex`, which keeps latexmk's dependency tracking across passes even though make's own tracking is bypassed. latexmk decides what to rerun; make always hands the job to it.

There is a `.latexmkrc` in the repository as well, which is where latexmk-specific configuration belongs if a project needs to set an output directory or pass options.

The consequence for anyone automating this is the one worth flagging. There is no incremental build at the make level, so a CI job that calls `make` on an unchanged tree still pays a full LaTeX run. `latexmk` will skip work internally, so the cost depends on how much latexmk decides it must redo, but the make-level contract is that nothing is cached.

The `clean` target is `latexmk -pdf -C`, which cleans generated files recognised by latexmk, so cleanup follows whatever the build produced rather than a hand-maintained list.

## One style file and a directory of colour themes

The theming mechanism is a Beamer colour theme, and the README's third usage step describes it as optional but highly recommended: make a copy of `beamercolorthemegemini.sty`, update the `\usecolortheme` line in `poster.tex`, and theme the poster to your liking.

That instruction is the key to the design goal the project states as easy theming. The style file is copied rather than edited in place, so the theme stays a clean starting point and your colours are a separate file. Changing one line in `poster.tex` switches the palette, and the `colorthemes/` directory holds the alternatives.

Three themes are built in. `gemini` is the default. `mit` is credited to the Massachusetts Institute of Technology and `labsix` to LabSix, and both have preview images in the README, as does the default.

Eleven more are contributed by the community, and the list is instructive because the themes map to institutions: `bristol` for the University of Bristol, `czu` for the Czech University of Life Sciences, `dart` for Dartmouth College, `iitgn` for the Indian Institute of Technology Gandhinagar, `rochester` for the University of Rochester, `snu` for Seoul National University, `soton` for the University of Southampton, `stetson` for Stetson University, `umich` for the University of Michigan and `warwick` for the University of Warwick. One is not institutional: `beluga`, which is based on Beamer's own `whale` colour theme, which is the clearest example of a community theme that starts from stock Beamer rather than from a brand.

The README asks contributors to keep the list in sorted order by theme name, which tells you the list is maintained by hand and is expected to stay tidy.

Three design goals are stated: minimal, so the emphasis is on the content; batteries included, so it works and looks good out of the box; and easy theming. The theme set is evidence for the third, and the existence of the wiki FAQ is a reminder that the first goal has a documented escape valve when you need an institutional logo.

## Dependencies are four things, and two of them are fonts

The dependency list is short and specific, which is a good sign for a document project.

First, a TeX installation that includes LuaTeX. The build command confirms this is not optional: the engine passed to latexmk is `lualatex`, not `pdflatex`, and the README links to the LuaTeX project for that requirement.

Second, `latexmk`, and only if you want to use the provided Makefile. That qualifier matters: if you are wiring Gemini into an existing build system or compiling through your editor's recipe, the Makefile is optional and so is latexmk.

Third, LaTeX package dependencies including beamerposter, with the note that these usually come with a TeX installation but can be fetched from CTAN otherwise. The theme is built on the `latex-beamerposter` package rather than implementing poster layout itself, so that package is the real dependency underneath and its absence is the most likely cause of a first-build failure.

Fourth, two fonts: Raleway and Lato, both stated to be available under the Open Font License. Requiring specific fonts is the one dependency class that tends to cause quiet rather than loud failure, since a font manager on a desktop often substitutes something plausible. Both are linked to Font Squirrel, so the README treats obtaining them as your job rather than something the TeX distribution provides.

The design decisions follow from these four. Using LuaTeX rather than pdfLaTeX is a deliberate choice for font handling and Unicode. Depending on beamerposter rather than rolling the layout keeps the geometry work in a package that already solved it. Requiring two specific fonts is what makes the theme look the same on every machine, and it is also the requirement most likely to break on a machine that does not have them.

## One author's constraint is stated as a warning

The repository is not archived, and the last push was on 2026-10-08, nine days before today. There are no GitHub releases, so the poster's PDF in the README is the reference artefact rather than a tagged version.

The contribution guidance carries a clause worth repeating because it applies beyond this project. Contributions such as bug reports, new themes and new poster components are welcomed, and then there is the instruction that given the subjective nature of design, you are encouraged to open an issue or pull request early to get feedback before investing a lot of time in implementing a new feature.

That is an unusual and sensible thing for a design project to say. Poster design has no correct answer, so a fully built pull request can be unusable and still be good faith. Asking first converts that into a conversation instead of a rejected patch.

Licensing is MIT, with `LICENSE.md` at the repository root and copyright held by Anish Athalye. The font situation is separate and worth not confusing: Raleway and Lato are under the Open Font License, which the README states, so the theme file and the typefaces carry different licences and both permit use in a poster you distribute. An institutional colour theme contributed by someone at that institution raises the question of whether the institution claims any rights in its own colour scheme, which is a question for that theme's contributor rather than for this repository.

One pointer in the README belongs in any evaluation. If what you need is a Beamer presentation theme rather than a poster theme, the author directs you to Auriga instead. The two are separate projects by the same author, and mistaking one for the other means editing the wrong kind of file.

## Conclusion

Gemini fits a conference author who wants a poster that looks finished on the first build and is willing to edit `poster.tex` rather than configure a tool, since the whole project is a `.sty` file, a colour theme directory and a Makefile you own. Do not adopt it for a beamer slide deck, because the author points to a separate theme for that, and do not adopt it inside a CI job that expects incremental builds, even though latexmk may skip work internally. Verify first that your TeX distribution includes beamerposter and that Raleway and Lato resolve, because missing fonts may change the poster's appearance.

## FAQ

### How do I use the Gemini beamerposter theme?

Copy the repository files or clone it, then edit `poster.tex` to set paper size, column layout and content scale, optionally copy `beamercolorthemegemini.sty` and point the `\usecolortheme` line at your copy, and run `make` to build the poster.

### What does Gemini require before it will build?

A TeX installation including LuaTeX, the latexmk program if you use the provided Makefile, LaTeX packages including beamerposter which usually ship with a TeX installation, and the Raleway and Lato fonts, both under the Open Font License.

### Which colour themes does Gemini include?

Three built in: gemini as the default, mit for the Massachusetts Institute of Technology and labsix for LabSix. Eleven community themes are listed, including beluga, bristol, czu, dart, iitgn, rochester, snu, soton, stetson, umich and warwick.

### Why does make rebuild my poster every time?

The Makefile declares `poster.pdf: FORCE` with FORCE in the `.PHONY` list, so the target is always considered out of date and latexmk runs on every invocation. latexmk still does its own dependency tracking internally.

### Is there a Gemini theme for Beamer presentations rather than posters?

No. Gemini is a beamerposter theme. The README directs anyone looking for a Beamer presentation theme to Auriga, a separate project by the same author.

### What license is the Gemini theme released under?

MIT, with copyright held by Anish Athalye and the licence text in LICENSE.md at the repository root. The Raleway and Lato fonts it depends on are separately stated to be under the Open Font License.

## Sources

- [anishathalye/gemini on GitHub](https://github.com/anishathalye/gemini)
- [Issues](https://github.com/anishathalye/gemini/issues)
- [License: MIT](https://github.com/anishathalye/gemini/blob/master/LICENSE)
- [Project website](https://anishathalye.com/gemini-a-modern-beamerposter-theme/)
- [README](https://github.com/anishathalye/gemini/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/anishathalye-gemini
