slidev/skills/latex-handouts/SKILL.md
This skill should be used when the user asks to "create LaTeX handout", "compile handout", "generate presentation handout", "create PDF document from slides", or needs guidance on LaTeX document structure, formatting, embedding images, or creating comprehensive presentation materials.
npx skillsauth add rhuss/cc-slidev LaTeX HandoutsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
LaTeX provides professional typesetting for presentation handouts that combine slide images, presenter notes, and supplementary research into comprehensive reference documents.
Before generating handouts, check dependencies using:
${CLAUDE_PLUGIN_ROOT}/scripts/check-handout-deps.sh
Exit codes:
When LaTeX packages unavailable (exit code 2):
\usepackage{tcolorbox} and \usepackage{enumitem} in preambleWhen Playwright unavailable (exit code 3):
\begin{figure}...\end{figure} blocks for slide imagesWhen pdflatex unavailable (exit code 1):
Critical: Handouts should be comprehensive standalone documents, not just copies of slides.
✅ DO:
❌ DON'T:
For each slide, write:
Overview paragraph (2-4 sentences)
Key Considerations paragraph (2-4 sentences)
Technical Details paragraph (if applicable)
Further Reading list (3-5 URLs)
\documentclass[11pt,a4paper]{article}
% Essential packages
\usepackage[utf8]{inputenc}
\usepackage[margin=1in]{geometry}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{fancyhdr}
% Document metadata
\title{Presentation Title}
\author{Author Name}
\date{\today}
% Header/footer setup
\pagestyle{fancy}
\fancyhead[L]{Presentation Title}
\fancyhead[R]{\thepage}
\fancyfoot[C]{}
\begin{document}
\maketitle
\tableofcontents
\newpage
% Content sections
\section{Introduction}
Content here...
\end{document}
article - Standard documents
report - Longer documents
scrartcl/scrreprt - KOMA-Script alternatives
\usepackage{graphicx} % Include images
\usepackage{float} % Better float positioning
% Usage
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{slide-01.pdf}
\caption{Introduction Slide}
\label{fig:intro}
\end{figure}
\usepackage[margin=1in]{geometry} % Page margins
\usepackage{multicol} % Multiple columns
\usepackage{parskip} % Paragraph spacing
\usepackage{setspace} % Line spacing
% Multi-column sections
\begin{multicols}{2}
Content in two columns
\end{multicols}
\usepackage{hyperref}
% Configuration
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan,
citecolor=green
}
% Usage
\href{https://example.com}{Link text}
\url{https://example.com}
\usepackage{listings}
\usepackage{xcolor}
% Configuration
\lstset{
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{green},
stringstyle=\color{red},
frame=single,
breaklines=true
}
% Usage
\begin{lstlisting}[language=Python]
def hello():
print("Hello, World!")
\end{lstlisting}
\usepackage[backend=biber,style=apa]{biblatex}
\addbibresource{references.bib}
% In document
\cite{key}
% At end
\printbibliography
Use semantic heading levels rigorously and consistently:
\section{} - Major document divisions (Introduction, Presentation Content, Summary, Additional Resources)\subsection{} - Topic sections within presentation (matches slide deck sections/chapters)\subsubsection{} - Individual slide titles (each slide gets its own subsubsection heading)\paragraph{} - Content subdivisions within slides (Overview, Key Considerations, Technical Details, Further Reading)Rules:
\section{} to \subsubsection{})\subsubsection{} headingModern handout format with PNG slides and prose explanations:
\section{Topic Name}
\subsubsection{Specific Slide Title (Assertion Form)}
\begin{figure}[H]
\centering
\fbox{\includegraphics[width=0.72\textwidth]{exports/slide-005.png}}
\caption{Specific Slide Title}
\end{figure}
\paragraph{Overview:}
This section introduces the core concept of container orchestration in distributed systems.
Kubernetes provides declarative configuration management, allowing operators to specify desired
state rather than imperative commands. The reconciliation loop continuously monitors actual
state and makes adjustments to match the declared configuration, providing self-healing
capabilities automatically.
\paragraph{Key Considerations:}
The declarative approach fundamentally changes operational practices compared to traditional
imperative automation. When configuration drift occurs, the system automatically corrects it
without human intervention. This is particularly valuable in large-scale deployments where
manual intervention becomes impractical. However, it requires careful design of resource
specifications and understanding of reconciliation behavior during failures.
\paragraph{Technical Details:}
The control loop pattern uses three key components: controllers watch the API server for
changes, compare current state to desired state, and issue commands to reconcile differences.
Each controller operates independently, managing specific resource types. This distributed
control model provides scalability and fault tolerance, as controller failures don't cascade
across the system.
\paragraph{Further Reading:}
\begin{itemize}
\item \href{https://kubernetes.io/docs/concepts/architecture/controller/}{Kubernetes Controllers} -
Official documentation explaining control loop patterns and reconciliation
\item \href{https://www.oreilly.com/library/view/programming-kubernetes/9781492047094/}{Programming Kubernetes} -
In-depth guide to writing custom controllers and operators
\item \href{https://speakerdeck.com/thockin/kubernetes-what-is-reconciliation}{What is Reconciliation?} -
Tim Hockin's presentation on reconciliation patterns
\end{itemize}
\vspace{0.5cm}
\newpage
❌ Bad handout - just copies slide bullets:
\subsection{Slide Content}
\begin{figure}[H]
\includegraphics[width=0.9\textwidth]{slide.png}
\end{figure}
\subsection{Notes}
Key points:
\begin{itemize}
\item Declarative configuration
\item Reconciliation loops
\item Self-healing
\end{itemize}
Additional info:
\begin{itemize}
\item Useful for large deployments
\item See Kubernetes docs
\end{itemize}
Why this is bad:
Show multiple slides per page:
\begin{figure}[H]
\centering
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{slide-01.pdf}
\caption{Slide 1}
\end{minipage}
\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=\textwidth]{slide-02.pdf}
\caption{Slide 2}
\end{minipage}
\end{figure}
Content alongside images:
\begin{multicols}{2}
\noindent
\textbf{Key Concepts:}
\begin{itemize}
\item Concept 1
\item Concept 2
\end{itemize}
\columnbreak
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{diagram.pdf}
\end{figure}
\end{multicols}
IMPORTANT: All slide images in handouts should have black borders using \fbox{} to clearly delineate the slide boundaries.
Export slides as PNG for handouts:
% Single slide
\includegraphics[width=0.8\textwidth]{exports/slides.pdf}
% Specific page from multi-page PDF
\includegraphics[page=5,width=0.8\textwidth]{exports/slides.pdf}
% With black border (recommended for handouts)
\fbox{\includegraphics[width=0.72\textwidth]{slide.png}}
% By width (maintains aspect ratio)
\includegraphics[width=0.8\textwidth]{image.pdf}
% By height
\includegraphics[height=6cm]{image.pdf}
% Scale factor
\includegraphics[scale=0.5]{image.pdf}
% Exact dimensions (distorts if wrong ratio)
\includegraphics[width=10cm,height=6cm]{image.pdf}
% Centered
\begin{center}
\includegraphics[width=0.7\textwidth]{image.pdf}
\end{center}
% In figure environment (with caption)
\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\textwidth]{image.pdf}
\caption{Descriptive caption}
\label{fig:label}
\end{figure}
% Position codes:
% h - here
% t - top of page
% b - bottom of page
% p - separate page
% ! - override restrictions
% H - HERE (requires float package)
\begin{titlepage}
\centering
\vspace*{2cm}
{\Huge\bfseries Presentation Title\par}
\vspace{1cm}
{\Large Subtitle or Topic\par}
\vspace{2cm}
{\Large\itshape Author Name\par}
\vspace{1cm}
{\large\today\par}
\vfill
{\large Organization Name\par}
\vspace{0.5cm}
\includegraphics[width=0.3\textwidth]{logo.pdf}
\end{titlepage}
\tableofcontents
\newpage
% Depth control (default 3)
\setcounter{tocdepth}{2} % Show up to subsections
\usepackage{fancyhdr}
\pagestyle{fancy}
% Clear defaults
\fancyhf{}
% Left header
\fancyhead[L]{Presentation Title}
% Right header
\fancyhead[R]{Author Name}
% Center footer
\fancyfoot[C]{\thepage}
% Right footer
\fancyfoot[R]{\today}
% Line width
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\usepackage{titlesec}
% Customize section appearance
\titleformat{\section}
{\Large\bfseries\color{blue}}
{\thesection}
{1em}
{}
% Spacing around sections
\titlespacing*{\section}{0pt}{2ex}{1ex}
\usepackage{tcolorbox}
% Simple box
\begin{tcolorbox}[colback=blue!5,colframe=blue!40!black,title=Key Point]
Important information here
\end{tcolorbox}
% Warning box
\begin{tcolorbox}[colback=yellow!10,colframe=orange!80!black,title=Note]
Something to remember
\end{tcolorbox}
\begin{table}[H]
\centering
\begin{tabular}{|l|c|r|}
\hline
\textbf{Header 1} & \textbf{Header 2} & \textbf{Header 3} \\
\hline
Row 1 & Data & 123 \\
Row 2 & More data & 456 \\
\hline
\end{tabular}
\caption{Table caption}
\label{tab:example}
\end{table}
% Footnote
This is important\footnote{Additional details in footnote}.
% Margin note
\marginpar{Side note}
\newpage % Start new page
\clearpage % Start new page, flush floats
\pagebreak % Break page (if possible)
\nopagebreak % Prevent page break
\section{Introduction}
% Overview and objectives
\section{Main Content}
\subsection{Topic 1}
% Slide + notes + context
\subsection{Topic 2}
% Slide + notes + context
\section{Conclusion}
% Summary and takeaways
\section{Additional Resources}
% References, links, further reading
\section{Appendix}
% Extra materials, code samples
\section{References and Resources}
\subsection{Key Papers}
\begin{itemize}
\item Smith, J. (2023). \textit{Important Paper}. Journal Name.
\item Jones, A. (2022). \textit{Another Study}. Conference Proceedings.
\end{itemize}
\subsection{Online Resources}
\begin{itemize}
\item \href{https://example.com}{Resource Name} - Description
\item \href{https://tutorial.com}{Tutorial Site} - Learning materials
\end{itemize}
\subsection{Tools and Software}
\begin{itemize}
\item Tool Name - \url{https://tool.com}
\item Library Name - \url{https://github.com/user/repo}
\end{itemize}
pdflatex handout.tex
pdflatex handout.tex
bibtex handout
pdflatex handout.tex
pdflatex handout.tex
# Using latexmk (automatic)
latexmk -pdf handout.tex
# Clean auxiliary files
latexmk -c
Ensure correct path:
% Relative to .tex file
\includegraphics{./images/slide.pdf}
% Tell LaTeX where to look
\graphicspath{{./images/}{./exports/}}
Images not appearing where expected:
% Force HERE
\usepackage{float}
\begin{figure}[H] % Capital H
...
\end{figure}
% Or allow more flexibility
\begin{figure}[htbp!]
...
\end{figure}
Long URLs or code breaking margins:
% For URLs
\usepackage{url}
\url{https://very-long-url.com}
% For code
\begin{lstlisting}[breaklines=true]
long code here
\end{lstlisting}
LaTeX special characters need escaping:
% These need backslash
\$ \% \& \# \_ \{ \}
% Or use verb
\verb|$special_chars|
% For code, use lstlisting
REQUIRED:
\fbox{} for black borders\centering in figure environmentExample:
\begin{figure}[H]
\centering
\fbox{\includegraphics[width=0.72\textwidth]{exports/slide-001.png}}
\caption{Descriptive Slide Title}
\label{fig:slide1}
\end{figure}
REQUIRED:
\subsubsection{} heading\paragraph{} for content subdivisions within slidespresentation/
├── handout.tex # Main document
├── handout.pdf # Compiled output
├── references.bib # Bibliography
├── images/ # Diagrams, logos
├── slides/ # Individual slide PDFs
└── exports/ # Slide deck exports
Create reusable section templates:
% template.tex
\newcommand{\slideandnotes}[4]{
\subsection{#1}
\begin{figure}[H]
\centering
\includegraphics[width=0.9\textwidth]{#2}
\caption{#3}
\end{figure}
\subsubsection{Notes}
#4
\newpage
}
% Usage
\slideandnotes{Topic Name}{slides/slide-05.pdf}{Caption}{
Notes and additional context here.
}
Comment versions in document:
% Version 1.0 - 2024-01-15 - Initial draft
% Version 1.1 - 2024-01-20 - Added section 3
% Version 2.0 - 2024-01-25 - Final revision
% Or use git info
\usepackage{gitinfo2}
% PDF metadata
\hypersetup{
pdftitle={Presentation Handout},
pdfauthor={Author Name},
pdfsubject={Topic},
pdfkeywords={keyword1, keyword2},
pdfproducer={LaTeX},
pdfcreator={pdflatex}
}
% Alt text for images
\includegraphics{image.pdf}
% Described in caption or surrounding text
\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\title{Handout Title}
\author{Author}
\date{\today}
\begin{document}
\maketitle
\section{Introduction}
Content...
\end{document}
\section{Title} % Section
\subsection{Title} % Subsection
\textbf{bold} % Bold
\textit{italic} % Italic
\underline{text} % Underline
\newpage % Page break
\vspace{1cm} % Vertical space
\hspace{1cm} % Horizontal space
For comprehensive LaTeX documentation, consult The LaTeX Project (https://www.latex-project.org/) and Overleaf documentation (https://www.overleaf.com/learn).
data-ai
This skill should be used when the user asks to "create mermaid diagram", "add visuals to slides", "suggest stock photos", "generate AI image prompts", "create diagram for presentation", "design visual theme", or needs guidance on diagram types, color palettes, image selection, or AI image generation prompting for presentations.
development
This skill should be used when the user asks to "create slides with Slidev", "use Slidev syntax", "add Slidev components", "configure Slidev theme", "export Slidev presentation", or mentions Slidev-specific features like layouts, animations, Monaco editor, or code highlighting. Provides comprehensive Slidev expertise for markdown-based presentations.
testing
This skill should be used when the user asks to "analyze slide quality", "review slide", "check slide design", "optimize slide", "improve slide content", "assess slide clarity", or needs evidence-based quality evaluation using the 12-point checklist for presentation slides.
development
--- name: Slide Management description: **MANDATORY USE - ALWAYS INVOKE THIS SKILL** when the user mentions ANY of these actions: "delete slide", "remove slide", "add slide", "insert slide", "create new slide", "new slide between", "get rid of slide", "fix gaps", "renumber slides", OR when they confirm/answer questions about slide deletion/addition (e.g., "yes delete slide 6", "add a slide after 5"). **CRITICAL - NEVER manually edit slides.md or rename slide files yourself** - this skill uses th