Skip to content

Yes—you can configure your project to be compiled using plain TeX by following the setup procedure described below.

  1. In the Overleaf editor, click on the Menu button and set the Compiler option to LaTeX—select LaTeX from the dropdown list as shown in the following video clip:
  2. Add a blank file to your project, and save it as latexmkrc—it should not have any file extension (you may not need to add this if your project already has a latexmkrc file).
  3. Add the following line to your latexmkrc file:
  4. $latex = 'tex %O %S';

What does this file latexmkrc actually do?

Without going into detail, Overleaf's servers use a program called latexmk to run and control TeX/LaTeX-based typesetting. The latexmk program allows Overleaf users to influence typesetting of their projects by adding a configuration file called latexmkrc. Readers wishing to further explore this can read about the latexmkrc configuration file on the latexmk web site.


The latexmk program is written in the Perl programming language which uses the hash character (#) as the comment character (much like TeX/LaTeX typically use the % character). If you wish to experiment with plain TeX using different TeX engines you can create a latexmkrc file and copy/paste the following text into it:

# $latex = 'tex %O %S'; # to use Knuth's original TeX engine
# $latex = 'pdftex %O %S'; # to use the pdfTeX engine
# $latex = 'luatex %O %S'; # to use the LuaTeX engine
# $latex = 'xetex %O %S';  # to use the XeTeX engine

To use a particular TeX engine, uncomment the line (delete the initial '#' character) for the TeX engine you want to use. For example, to run XeTeX you uncomment the last line so that your latexmkrc file looks like the following—note that the last line does not start with a '#' character, thus it gets executed/run to typeset your plain TeX document using XeTeX:

# $latex = 'tex %O %S'; # to use Knuth's original TeX engine
# $latex = 'pdftex %O %S'; # to use the pdfTeX engine
# $latex = 'luatex %O %S'; # to use the LuaTeX engine
$latex = 'xetex %O %S';  # to use the XeTeX engine

The following short video shows the above latexmkrc file being selectively edited to run each TeX engine in turn—starting with XeTeX. The plain TeX source code used in this example was borrowed from an article by D. R. Wilkins.

Further reading

We have two related help items which may be of interest to any reader wishing to better understand Overleaf's use of latexmk and latexmkrc:

Overleaf guides

LaTeX Basics


Figures and tables

References and Citations


Document structure





Field specific

Class files

Advanced TeX/LaTeX