Transform any arXiv papers into slides using Large Language Models (LLMs)! This tool is useful for quickly grasping the main ideas of research papers.
Some examples of generated slides are: word2vec, GAN, Transformer, ViT, Chain-of-Thought, STaR, DPO, and The AI Scientist. See many other examples of generated slides in Demo.
The script will download files from the internet (arXiv), send information to the OpenAI API, and compile locally. Please be cautious about the content being shared and the potential risks. If you have a specific Arxiv ID that you are interested in and do not want to run the code yourself, let me know in "Discussions" and I would be happy to add the slides to the demo list.
The process begins by downloading the source files of an arXiv paper. The main LaTeX file is identified and flattened, merging all input files into a single document (FLATTENED.tex
). We preprocess this merged file by removing comments and the appendix. This preprocessed file, along with instructions for creating good slides, forms the basis of our prompt.
One key idea is to use Beamer for slide creation, allowing us to stay entirely within the LaTeX ecosystem. This approach essentially turns the task into a summarization exercise: converting a long LaTeX paper into concise Beamer LaTeX. The LLM can infer the content of figures from their captions and include them in the slides, eliminating the need for vision capabilities.
To aid the LLM, we create a file called ADDITIONAL.tex
, which contains all necessary packages, \newcommand definitions, and other LaTeX settings used in the paper. Including this file with \input{ADDITIONAL.tex}
in the prompt shortens it and makes generating slides more reliable, particularly for theoretical papers with many custom commands.
The LLM generates Beamer code from the LaTeX source, but since the first run may have issues, we ask the LLM to self-inspect and refine the output. Optionally, a third step involves using a linter to check the generated code, with the results fed back to the LLM for further corrections (this linter step was inspired by The AI Scientist). Finally, the Beamer code is compiled into a PDF presentation using pdflatex.
The all.zsh
script automates the entire process, typically completing in less than a few minutes with GPT-4o for a single paper.
Requirements are:
- Python 3.10 or higher
requests
libraryarxiv
libraryopenai
libraryarxiv-latex-cleaner
library- OpenAI API key
- A working installation of
pdflatex
- Optional: chktex (for linter) and pdfcrop
Steps for installation:
-
Clone this repository:
git clone https://github.com/takashiishida/paper2slides.git cd paper2slides
-
Install the required Python packages:
pip install requests arxiv openai arxiv-latex-cleaner
-
Ensure
pdflatex
is installed and available in your system's PATH. Optionally check if you can compile the sampletest.tex
bypdflatex test.tex
. Check iftest.pdf
is genereated correctly. Optionally checkchktex
andpdfcrop
are working. -
Set up your OpenAI API key:
export OPENAI_API_KEY='your-api-key'
This script automates the process of downloading an arXiv paper, processing it, and converting it to a Beamer presentation.
bash all.sh <arxiv_id>
Replace <arxiv_id>
with the desired arXiv paper ID.
The ID can be identified from the URL: the ID for https://arxiv.org/abs/xxxx.xxxx
is xxxx.xxxx
.
You can also run the Python scripts individually for more control.
-
Download and Process arXiv Source Files
python arxiv2tex.py <arxiv_id>
This script downloads the source files of the specified arXiv paper, extracts them, and processes the main LaTeX file. Results will be saved in
source/<arxiv_id>/FLATTENED.tex
andsource/<arxiv_id>/ADDITIONAL.tex
. -
Convert LaTeX to Beamer
python tex2beamer.py --arxiv_id <arxiv_id>
This script reads the processed LaTeX files and prepares Beamer slides. This is where we are using the OpenAI API. We call twice, first to generate the beamer code, and then to self-inspect the beamer code. Optionally use the following flags:
--use_linter
and--use_pdfcrop
. The prompts sent to the LLM and the response from the LLM will be saved intex2beamer.log
. The linter log will be saved insource/<arxiv_id>/linter.log
. -
Convert Beamer to PDF
python beamer2pdf.py <arxiv_id>
This script compiles the beamer file into a PDF presentation.
The prompts are saved in prompt_initial.txt
, prompt_update.txt
, and prompt_revise.txt
but feel free to adjust them to your needs. They contain a placeholder called PLACEHOLDER_FOR_FIGURE_PATHS
. This will be replaced with the figure paths used in the paper. We want to make sure the paths are correctly used in the beamer code. The LLM often make mistakes, so we explicitly include this in the prompt.
The success rate is around 90 percent in my experience (compile may fail or image path may be wrong in some cases). If you encounter any issues or have any suggestions for improvements, please feel free to let me know!