Compiling a body of scientific work into a comprehensible document is one part of scientist’s work that just needs to be done. What follows is a compilation of tools used by researchers to achieve this goal.

This post focuses on methods used in Theoretical Computer Science where LaTeX ↗ is the standard way to write a paper.


Mainly, we need to consider how to get the text from our brain to the computer. However, it is important to make sure we do not lose our work due to technical or human errors. Also, it is essential that the process allows for an effective coauthor collaboration.

Version control & Collaboration

This facet is dominated by two approaches. An easy-to-use online editing tool Overleaf and a dedicated system for version control used by programmers Git.

Overleaf ↗ is a popular online editing tool. It handles both version control and collaboration well.

  • Allows authors to edit the text all at once - This is very useful when working intensly but comes with a caveat that the project may not compile correctly due to coauthor being mid-edit. As we can see coauthors editing in real-time, there is no problem editing the same part of the text.
  • Saves progress online - Advanced work with history is hidden behind paywall. We can edit only when we are online. (To overcome this, download the sources before you go offline and upload it once you get back online but beware of overwriting progress your co-authors made in the meantime.)
  • Note that paid Overleaf has Git integration ↗.

Git ↗ is a version control tool usually used by programmers. Note that a project in Git (folder and also its online mirror) is called repository.

  • Entry barrier - Even basic usage requires the user to learn how to use the tool.
  • User saves progress - As synchronization happens only when user says so, it is possible to work online. Users need to know how to resolve conflicts (edits of two authors in the same place).
  • Fail safe - Even if the server fails each author have his own copy. It is not difficult to redirect a repository to a different server.
  • Free - Using and hosting this service is free (e.g. repository servers GitHub ↗, GitLab ↗, or Bitbucket ↗) and universities usually host their own repository servers.
  • Advanced features - This tool comes with many advanced features for free but because it was not built with paper authors in mind it requires advanced technical knowledge to use them.

We do not mention approaches to version control that require passing an “editing token” via direct communication of authors.

Input method

Again, one of the major tools for editing text is the default Overleaf editor. Other tools use Git together with local editing software.

Overleaf ↗ provides a basic editor with several nice features. The following assumes we use the default on-website editing.

  • Zero setup - User does not need to install anything.
  • Familiar & Accessible - For many users this editing tool suffices.
  • Completion - Hints on possible command completions.
  • Forward and Inverse search in PDF - Having the two views (text and PDF) clicking on the middle arrows jumps one windows to the pace where the other window is.
  • Paper templates - One may create a project by using on of the prepared templates.
  • Weak spell check - The in-window spell checking underlines wrong words by red. This can be significantly improved by using Grammarly ↗ web browser extension.
  • Editing PDF figures - If the figures are created in a different software than due to being online we need to download the picture, edit it, and upload it again.
  • Clunky folder management - It is quite tedious to set up the folder structure as you want and then upload files to the correct folders.

From now on we assume use of Git ↗. Local software means we install it on our computer and the files locally (within the Git repository). Let us go in order from the most accessible ones.

TeXstudio ↗ basic editor prepared for latex.

  • Made for LaTeX - Very reminiscent of Overleaf, but local. All the usual features such as completion, PDF compilation, and highlighting.

VS Code ↗ is one of the most favourite developer text editors.

  • Well established - Has one of the biggest userbases among the mentioned programs.
  • Needs plugin - Install LaTeX plugin ↗ to have the usual LaTeX support.

In truth, the biggest difference between Emacs and Vim is the input method. Some may argue one is better than other but the customizability, community support, and plugin availability is good for both.

Emacs ↗ a highly configurable editor.

  • Highly extensible and configurable - Though VS Code may be getting closer Emacs with is long history is one of the most configurable text editors. It may demand at least some technical knowledge to setup some of the plugins but ultimately if you are able to invest some time Emacs may be the editor you can mold into any shape you want.
  • Needs plugin - Install LaTeX plugin ↗ to have the usual LaTeX support.

Neovim ↗ (or Vim ↗) an scent of a different world.

  • Steep learning curve - Even writing in Vim is not easy as writing is just one of the modes it contains, and does not start in. User needs to learn how to switch modes first to start writing.
  • Different focus - Dedicated modes allow user to focus on the task at hand and makes it easy to perform slightly more complex edits.
  • Needs plugin - Install LaTeX plugin ↗ to have the usual LaTeX support.

Images & figures

Whenever possible we aim to use vector graphics ↗ instead of raster graphics ↗. We observe two main groups of tools for creating figures. Editors based on graphical interface and the other based on code. Let us mention only free software.

Graphical interface

Ipe ↗ extensible drawing editor.

  • simple - Easy to install, open, and get started with drawing.
  • edit PDFs - Result can be edited directly as PDF which can be imported to the paper. Note that this PDF contains custom comments that hint Ipe on meaning so this PDF should not be edited via other software as it will be impossible to open it in Ipe later.
  • LaTeX support - Texts are translated using LaTeX so it is easy to create mathematical equations etc.
  • deep - There are many options that are hidden or quite hard to set, which makes the editor quite powerful when we learn these advanced parts. ↗ diagram online editor.

  • online editor - No need to install. Works only online.
  • made for diagrams - It is very easy to create flow-charts, org charts, network layouts, UML diagrams, etc. This means it is quite hard to create nice combinatorial graphs.
  • LaTeX support - Enable “Mathematical Typesetting” in extras and enclose math in double dollar sign.

GeoGebra ↗ downloadable and online apps.

  • interactive - Can be used to create diagrams that can be changed (e.g. via sliders) by the user.
  • export to code - App has TikZ export.

Inkscape ↗ general vector editor.

  • general - Can open, edit, and save many vector graphic formats.
  • low level - Compared to other editors Inkscape can (only) edit the low-level objects of vectors like individual points, lines, curves, individual fill colors. It may be quite difficult to create a scientific graphic in it, but it is very useful when creating custom graphics – it is used e.g. by Felix Reidl ↗ for “fancy pictures”.

Coded pictures

TikZ ↗ latex package.

  • LaTeX Native - Due to TikZ being a LaTeX package, it connects directly to the paper’s compilation. Hence, all the fonts have correct style and size. Also, we can create references to e.g. theorems form within the figure.
  • Steep learning curve - Although it is quite easy to copy some code form the internet TikZ system remains quite hard to learn. When user does not stpe over the initial obstacles he finds himself googling every small detail without understanding how TikZ works. (my tutorial & quick reference)

Matplotlib ↗ python library.

  • plotting - Focused on taking data and plotting it in graphs, diagrams, etc.

NetworkX ↗ python library.

  • plotting - Focused on taking data and plotting it in graphs, diagrams, etc.

Auxiliary approaches

  • ChatGPT ↗ to kick-start code in TikZ that is then edited by hand.

Other approaches that I did not review yet.


Beamer ↗ LaTeX package.

  • LaTeX Native - By being a LaTeX package we can simply take parts of our paper and transform them easily into a presentation.
  • Themes - There are quite a few existing styles to choose from. Default theme and plain one are quite popular.

System’s presentation suite, for example Libreoffice ↗ on Linux, PowerPoint ↗ on Windows, Keynote ↗ on Mac.

  • Easy to use - As these tools are tailor-made to be presentation WISIWIGs ↗ they are quite easy to use. They often come with possibility of fancy transitions.
  • Custom format - These editors use custom formats to save the presentation but can export to PDFs (losing the animation).

Ipe ↗ extensible drawing editor.

  • Convenient - As one of the options to create paper figures it is easy to pick up this tool also for creating presentations if you are already familiar with it.
  • Style - Adding a custom stylesheet ↗ can change the default layout of Ipe to have the presentation aspect ratio. And some custom things that are present on each slide.

Hand-made with tablet.

  • Handwriting - Make sure your handwriting is legible.

Other fancy tools - some individuals use custom setups or exotic tools to prepare presentations. Those can be nice refreshment for the crowd but we do not mention them as they often require significantly more effort or familiarity with the tool than can be expected from a normal speaker.