Writing an IEEE research paper in LaTeX comes down to one class file, a dozen commands, and a compile sequence that most first time authors get wrong. This guide walks through the entire process: installing a LaTeX environment, loading the official IEEEtran template, building the title block, typesetting equations, placing figures and tables, formatting references with BibTeX, and passing the final submission checks. Every screenshot below comes from a demo conference paper compiled specifically for this tutorial, so each code sample is shown next to the exact output it produces
What the IEEE Paper Format Requires?
IEEE publishes thousands of conference proceedings and journals, and nearly all of them share one visual standard. A compliant manuscript uses a two column layout on US letter paper, a centered title with author blocks beneath it, a bold single paragraph abstract, index terms, Roman numbered sections in small caps, numbered equations, captioned floats, and bracketed citations such as [1] that map to a numbered reference list.
The point of LaTeX here is that none of this is formatted by hand. The IEEEtran document class applies every rule automatically, which is why IEEE distributes LaTeX templates for authors and why conference organizers point submitters to them. The annotated page below labels each structural element that the class lays out on the first page.
Anatomy of an IEEE first page: title, author blocks, abstract, index terms, two text columns, and floats.
Why LaTeX Instead of Word for IEEE Papers?
IEEE accepts both Word and LaTeX submissions, so the choice is practical rather than mandatory. LaTeX wins for papers that carry heavy mathematics, large reference lists, or figures that must sit in a strict two column grid. Word wins for authors who need tracked changes from non technical co-authors. The table below summarizes the trade-offs that matter for an IEEE manuscript.
| Concern | LaTeX with IEEEtran | Word with the IEEE template |
| Layout compliance | Enforced by the class file; margins and fonts cannot drift | Manual; styles break easily when text is pasted in |
| Mathematics | Native, publication grade, numbered automatically | Equation editor; renumbering is manual |
| References | Generated by BibTeX in exact IEEE style | Typed by hand or managed through plugins |
| Figure and table numbering | Automatic, updates on every compile | Field codes that need manual refresh |
| Collaboration | Overleaf real time editing, Git friendly plain text | Tracked changes, familiar to all reviewers |
| Learning curve | Steeper in the first week | Minimal for anyone who uses Word |
Step 1: Set Up a LaTeX Environment
There are two sensible routes: an online editor or a local installation. Pick one and move on; the LaTeX source is identical in both.
Option A: Overleaf (Fastest Start)
Overleaf is a browser based LaTeX editor with the official IEEE templates preloaded in its gallery. Nothing gets installed, projects compile on Overleaf’s servers, and co-authors edit the same project in real time. Create a free account at overleaf.com, open the template gallery, and search for the IEEE official templates. This is the right choice for a first paper.
Option B: Local Installation
A local toolchain compiles offline and works with any editor. Install one distribution and one editor:
- TeX Live for Windows and Linux, or MacTeX for macOS. The full install includes the IEEEtran class and every package this guide uses.
- MiKTeX as a lighter Windows alternative that downloads packages on demand.
- An editor such as TeXstudio or VS Code with the LaTeX Workshop extension, both free.
On Debian or Ubuntu servers, the IEEEtran class ships in the texlive-publishers package rather than the base install. A missing class shows up as the error File ‘IEEEtran.cls’ not found, and the fix is installing that package or dropping IEEEtran.cls into the project folder next to the .tex file.
Step 2: Download the Official IEEE LaTeX Template
Always start from the official template, never from a random blog copy. Three sources are current:
- The IEEE Template Selector at template-selector.ieee.org, which asks for the publication type and serves the correct files for a specific conference or journal.
- The conference template ZIP on the IEEE templates page, which contains IEEEtran.cls, a conference sample, and the bibliography style files.
- The Overleaf gallery under the ieee-official tag, which opens the same template as an editable online project in one click.
One warning repeated on the IEEE templates page deserves emphasis: the template files contain guidance text, and that text must be removed before submission. Papers that still contain template instructions can be rejected from the proceedings. Strip every placeholder sentence before the final upload.
A working project needs only four files in one folder:
ieee-paper/
paper.tex % the manuscript source
refs.bib % BibTeX reference database
IEEEtran.cls % class file (skip if the LaTeX install provides it)
fig_accuracy.pdf % one file per figure, vector PDF preferred
Step 3: Choose the Document Class and Preamble
The first line of the manuscript selects IEEEtran and its mode. For a conference paper:
\documentclass[conference]{IEEEtran}
The class options control everything from font size to column count. The ones that matter in practice:
| Option | Effect | When to use it |
| conference | Conference layout: compact title area, Roman section numbers in small caps | Conference and symposium submissions |
| journal | Transactions layout with running headers and author footnotes | Journal and Transactions papers |
| technote | Correspondence layout at 9pt | Short technical notes |
| 9pt / 10pt / 11pt / 12pt | Base font size; 10pt is the default | Only change when the venue says so |
| letterpaper / a4paper | Paper size; letterpaper is the IEEE standard | Keep letterpaper for submission |
| draftcls | Double spaced single column draft for review and markup | Internal drafts and supervisor review |
| onecolumn / twocolumn | Column count; twocolumn is the default for final papers | onecolumn only for drafts |
| compsoc | IEEE Computer Society variant styling | Computer Society venues that ask for it |
Below the class line sits the preamble, where packages load. This set covers a typical paper and matches what the official conference sample uses, with booktabs added for cleaner table rules:
\documentclass[conference]{IEEEtran}
\usepackage{cite} % merges citations: [1]-[3] instead of [1][2][3]
\usepackage{amsmath,amssymb,amsfonts} % equation environments and symbols
\usepackage{graphicx} % \includegraphics for figures
\usepackage{algorithm} % floating algorithm environment
\usepackage{algorithmic} % pseudocode markup inside it
\usepackage{booktabs} % \toprule, \midrule, \bottomrule
\begin{document}
…
\end{document}
Resist the urge to load packages that change margins or fonts. Packages such as geometry and fullpage override the layout that IEEE requires, and a paper compiled with them fails the format check even though it looks fine on screen.
Step 4: Build the Title and Author Block
The title is declared with \title{} and the authors with \author{}, using two commands specific to IEEEtran: \IEEEauthorblockN{} for names and \IEEEauthorblockA{} for affiliations. Separate authors with \and. The official template is blunt about one rule: no symbols, special characters, footnotes, or math in the title or abstract.
\title{Lightweight Anomaly Detection for IoT Sensor
Networks Using Depthwise Separable Convolutions}
\author{\IEEEauthorblockN{First A. Author}
\IEEEauthorblockA{\textit{Dept. of Computer Science} \\
\textit{Example Institute of Technology}\\
New Delhi, India \\
first.author@example.edu}
\and
\IEEEauthorblockN{Second B. Author}
\IEEEauthorblockA{\textit{Dept. of Electrical Engineering} \\
\textit{Example University}\\
Stockholm, Sweden \\
second.author@example.edu}}
\maketitle
\maketitle renders the block. Long titles can be balanced across lines with \\ inside the title. For journal mode, IEEE membership grades are marked with \IEEEmembership{Member, IEEE} after the name, and funding notes go in \thanks{}. The code above produces this output:
Compiled title and author block. IEEEtran centers the title and arranges author blocks side by side.
Step 5: Write the Abstract and Index Terms
The abstract sits in an abstract environment directly after \maketitle, and keywords go in IEEEkeywords. IEEEtran sets both in bold at a smaller size, so no manual styling is needed.
\begin{abstract}
Resource constraints on Internet of Things (IoT) edge devices
limit the depth of neural networks that can run on the device
itself. This paper presents a lightweight anomaly detection
model… (150 to 250 words)
\end{abstract}
\begin{IEEEkeywords}
anomaly detection, edge computing, Internet of Things,
neural networks, sensor networks
\end{IEEEkeywords}
Compiled abstract and index terms. The class renders both in bold with the standard lead-in labels.
Keep the abstract self contained: no citations, no equation references, no footnotes, no abbreviations that the reader has not seen. A reliable structure in four moves: the problem, the approach, the headline result with a number, and the implication. List four to six index terms in alphabetical order, matching terms researchers would search for.
Step 6: Structure the Sections
Sections use the standard LaTeX commands, and IEEEtran handles the Roman numerals and small caps automatically. Never number headings by hand.
\section{Introduction}
\section{Related Work}
\section{Proposed Method}
\subsection{Network Architecture}
\subsubsection{Depthwise Blocks}
\section{Experimental Setup}
\section{Results and Discussion}
\section{Conclusion}
\section*{Acknowledgment} % starred: no section number
A typical engineering paper runs Introduction, Related Work, Method, Experimental Setup, Results, Conclusion, in that order, with the acknowledgment unnumbered before the references. Appendices, when needed, come from \appendices followed by ordinary \section commands. Define every abbreviation at first use in the body even when it already appeared in the abstract; the official template calls this out explicitly.
Step 7: Typeset Equations the IEEE Way
Inline math goes between dollar signs, and displayed equations go in the equation environment, which numbers them on the right. Give each equation a \label and reference it with \eqref, which prints the number in parentheses.
The detection score for a window is the reconstruction residual
\begin{equation}
\label{eq:score}
s(\mathbf{X}) = \frac{1}{Td}\sum_{t=1}^{T}\sum_{j=1}^{d}
\left(x_{t,j} – \hat{x}_{t,j}\right)^{2},
\end{equation}
where $\hat{\mathbf{X}}$ is the autoencoder output.
The compiled equation, numbered automatically and referenced in the text as (1).
Two conventions from the official template are easy to miss. Refer to equations as plain \eqref{eq:score}, which gives (1), rather than writing Eq. (1), except at the start of a sentence where Equation (1) is correct. And punctuate equations as part of the sentence, which is why the sample above ends with a comma before the where clause. For multi line derivations use align from amsmath, and for grouped variants use subequations.
Step 8: Insert Figures That Survive Two Columns
Figures are floats: LaTeX decides their final position, and IEEE style places them at the top of a column. Use [t] placement, size the image to \columnwidth, and put the caption below the figure. The caption label prints as Fig. 1 automatically.
\begin{figure}[t]
\centering
\includegraphics[width=\columnwidth]{fig_accuracy}
\caption{Classification accuracy by training epoch for the
proposed model and two baselines on the benchmark test split.}
\label{fig:acc}
\end{figure}
Fig.~\ref{fig:acc} plots classification accuracy over training.
For a wide figure that must span both columns, switch to the starred environment figure*, which always lands at the top of a page and never on the page where it was written; plan for it to appear one page after its source position. The \label must come after the \caption, or every reference to the figure resolves to the wrong number.
Preparing Figure Files
- Export plots as vector PDF from matplotlib or MATLAB; vectors stay sharp at any zoom and keep the file small.
- Use raster formats only for photographs, at 300 dpi or better.
- Set figure fonts near 8pt at final size so labels remain legible in a 3.5 inch column.
- Make series distinguishable without color: pair each color with a distinct marker and line style, since many readers print in grayscale.
A column ready plot: serif fonts near 8pt, distinct markers plus line styles per series, light grid, no chartjunk.
The plot above was produced in matplotlib at a figure size of 3.45 by 2.3 inches, which drops into a column at full width with no scaling distortion. Matching the figure size to the column at export time is the single best habit for clean IEEE figures.
Step 9: Build Tables With the Caption on Top
Tables invert the figure convention: the caption goes above the table, and IEEEtran renders it in small caps with a Roman numeral, as in TABLE I. The booktabs package provides the horizontal rules; IEEE tables avoid vertical lines.
\begin{table}[t]
\caption{Compared Models and Their Resource Footprint}
\label{tab:models}
\centering
\begin{tabular}{lccc}
\toprule
Model & Parameters & MFLOPs & Size (KB)\\
\midrule
SVM baseline & — & 0.4 & 310\\
Baseline CNN & 412{,}000 & 9.6 & 1{,}610\\
Proposed & 91{,}000 & 2.1 & 356\\
\bottomrule
\end{tabular}
\end{table}
The compiled table float. Caption above in small caps, booktabs rules, no vertical lines.
Reference tables in the text as Table~\ref{tab:models}, which prints Table I. The tilde is a non breaking space that stops LaTeX from splitting the reference across lines. Wide tables follow the same starred rule as figures: table* spans both columns.
Step 10: Add Algorithms and Code Listings
Pseudocode lives in an algorithm float wrapping an algorithmic block. Line numbers come from the [1] option, and the float gets a caption and label like any figure.
\begin{algorithm}[t]
\caption{Threshold calibration}
\label{alg:calib}
\begin{algorithmic}[1]
\REQUIRE validation windows $\mathcal{V}$, trained model $f$
\ENSURE threshold $\tau$
\STATE $S \leftarrow \emptyset$
\FOR{each window $\mathbf{X} \in \mathcal{V}$}
\STATE $S \leftarrow S \cup \{s(\mathbf{X})\}$ using (\ref{eq:score})
\ENDFOR
\STATE $\tau \leftarrow \mathrm{percentile}(S, 99.5)$
\RETURN $\tau$
\end{algorithmic}
\end{algorithm}
The compiled algorithm float with numbered lines, produced by the algorithm and algorithmic packages.
For actual source code rather than pseudocode, the listings package with a small monospaced font works well, though many venues prefer code in a repository link rather than in the paper body.
Step 11: Manage References With BibTeX
IEEE citation format is numeric: bracketed numbers in citation order, with a reference list formatted to a precise comma and quote pattern that nobody should type by hand. BibTeX automates all of it. Keep every source in a .bib file as structured entries:
@article{lecun2015,
author = {Y. LeCun and Y. Bengio and G. Hinton},
title = {Deep learning},
journal = {Nature},
volume = {521},
number = {7553},
pages = {436–444},
year = {2015}
}
@inproceedings{he2016,
author = {K. He and X. Zhang and S. Ren and J. Sun},
title = {Deep residual learning for image recognition},
booktitle = {Proc. IEEE Conf. Computer Vision and
Pattern Recognition (CVPR)},
pages = {770–778},
year = {2016}
}
Two lines at the end of the document select the IEEE bibliography style and pull in the database:
\bibliographystyle{IEEEtran}
\bibliography{refs}
Cite in the text with \cite{lecun2015}, which prints [1]. The cite package loaded in the preamble compresses runs of citations into ranges. Only cited entries appear in the output, so the .bib file can hold an entire research library. The result:
The compiled reference list in IEEE style: initials before surnames, quoted titles, abbreviated venues.
The template ZIP also ships IEEEabrv.bib, a database of official journal abbreviations; including it before the personal database as \bibliography{IEEEabrv,refs} swaps full journal names for IEEE standard abbreviations. Sort order is citation order, never alphabetical, and IEEEtran.bst handles that.
Step 12: Compile in the Right Order
BibTeX papers need four passes, because each pass writes files the next one reads. The first pdflatex run records the citations, bibtex builds the formatted list, and two more pdflatex runs insert the references and settle the cross reference numbers.
The four pass compile sequence. Overleaf and latexmk run the whole chain automatically.
pdflatex paper
bibtex paper
pdflatex paper
pdflatex paper
Question marks in place of citation numbers mean the sequence stopped early; run it to the end and they resolve. Local setups can replace the chain with a single latexmk -pdf paper, which reruns tools until everything is stable. Overleaf does the same on every recompile, which is one reason it suits first time authors.
Common LaTeX Errors in IEEE Papers and Their Fixes
Error messages in LaTeX point at symptoms rather than causes. These are the failures that account for most lost evenings, with the fix for each:
| Error or symptom | Cause | Fix |
| File ‘IEEEtran.cls’ not found | Class not installed or not in the project folder | Install texlive-publishers or copy IEEEtran.cls next to the .tex file |
| Undefined control sequence | Typo in a command, or a package not loaded | Check the spelling; confirm the \usepackage line exists |
| Missing $ inserted | Math symbol used in normal text | Wrap the symbol in $…$, including underscores in file names |
| Citations print as [?] | bibtex pass missing or entry key misspelled | Run the full four pass sequence; match \cite keys to the .bib file |
| References all show wrong numbers | \label placed before \caption | Move every \label after its \caption |
| Overfull \hbox warnings | A long word or URL sticks into the margin | Add hyphenation points or use the url package for links |
| figure* never appears where expected | Starred floats go to the top of the next page | Plan wide floats a page early; stop forcing them with [h] |
| Paper compiles but margins look wrong | A layout package such as geometry overrode the class | Delete margin changing packages; the class controls layout |
Pre-Submission Checklist and IEEE PDF eXpress
Most IEEE conferences require the camera ready PDF to pass IEEE PDF eXpress, the compliance checker for the IEEE Xplore digital library. The service accepts either a finished PDF for checking or the source files for conversion into a compliant PDF, and conferences hand out a conference ID that unlocks it. The flow: create an account at ieee-pdf-express.org with the conference ID, upload the PDF or source, wait for the email verdict, fix what failed, and submit the approved file to the conference system rather than a locally exported copy.
Run through this list before the upload:
- Every piece of template guidance text is deleted; papers containing template instructions can be pulled from the proceedings.
- The page count respects the venue limit, including references.
- letterpaper mode is set, not a4paper.
- All fonts are embedded in the PDF; pdflatex does this by default, and PDF eXpress rejects files that break the rule.
- No [?] citations, no ?? cross references, no overfull boxes pushing into margins.
- Figures remain readable in grayscale print.
- The abstract and title contain no math, symbols, or footnotes.
- The copyright notice matches what the conference asked for, and the copyright form is filed.
Conference Paper vs Journal Paper in IEEEtran
The same class serves both worlds through its mode option, and the differences run deeper than page count:
| Aspect | Conference mode | Journal mode |
| Class option | \documentclass[conference]{IEEEtran} | \documentclass[journal]{IEEEtran} |
| Author block | Boxed blocks under the title via IEEEauthorblock commands | Names in one line, affiliations in a \thanks footnote |
| Membership grades | Rarely shown | Shown via \IEEEmembership after each name |
| Running headers | None | Journal name and paper title alternate by page |
| Review workflow | Submit the final two column PDF | Many venues review a draftcls single column version first |
| Biography section | Not used | \begin{IEEEbiography} blocks with author photos |
Field Notes From Building the Demo Paper
Every screenshot in this guide comes from a two page demo paper compiled while writing it, and the build surfaced the same traps that catch real authors. Four observations worth passing on:
The class file is the most common missing piece. The compile environment for this article had a full LaTeX toolchain yet still failed on the first run with the IEEEtran.cls not found error, because the distribution shipped without the publishers bundle. Dropping the class file into the project folder fixed it in seconds. Keeping IEEEtran.cls inside the project also pins the version, so the paper compiles identically on any machine years later.
The compile order is invisible until it bites. The first full build of the demo produced [?] for every citation, which looks like a broken .bib file but is just the missing bibtex pass. Nothing was wrong with the entries. One bibtex run and two more pdflatex passes later, the reference list appeared fully formatted. Error free single passes are the exception for BibTeX papers, not the rule.
Figures sized at export need no fiddling in LaTeX. The accuracy plot was exported from matplotlib at 3.45 inches wide with 8pt serif fonts, and it dropped into the column at width=\columnwidth with every label readable on the first compile. Figures exported at slide size and shrunk by LaTeX are the ones with unreadable axis text.
Floats go where the algorithm wants, not where the source says. In the demo, the algorithm and the table landed at the top of the right column even though both were written mid-section, and the figure moved to page two. That is correct IEEE behavior. Fighting float placement with [h] specifiers wastes more time than any other formatting habit; write the content, reference every float by label, and let the class place them.
Frequently Asked Questions
Is LaTeX mandatory for IEEE papers?
No. IEEE provides both Word and LaTeX templates, and either produces an acceptable submission. LaTeX is the stronger tool for papers with heavy mathematics or long reference lists because formatting and numbering are automatic.
Is Overleaf free for IEEE papers?
Overleaf’s free tier compiles IEEE templates without restriction for a single author. Paid tiers add longer compile timeouts, track changes, and shared projects with multiple collaborators.
Which font does the IEEE format use?
The IEEEtran class sets a Times like serif at 10 point for standard papers. The font comes from the class, so nothing should be changed manually; altering fonts is a common reason papers fail format checks.
How many pages can an IEEE conference paper have?
Each conference sets its own limit in the call for papers, and many charge per page beyond it. Check the venue page rather than relying on a general rule; the class does not enforce any limit.
How do citations work in IEEE format?
Sources are numbered in order of first citation and cited as bracketed numbers such as [1]. With \cite plus BibTeX and the IEEEtran bibliography style, both the numbering and the reference list formatting happen automatically.
What is the difference between IEEEtran and ieeeconf?
IEEEtran is the current official class for IEEE conferences and journals. ieeeconf is an older conference class that some robotics venues still distribute; use whichever class the target venue links from its author instructions.
Can a Word manuscript be converted to LaTeX?
Partially. Pandoc converts the text structure, but equations, tables, figures, and references need manual rebuilding. For a paper already drafted in Word, finishing in Word is often faster than converting mid-stream.
Why do question marks appear instead of citation numbers?
The bibliography passes have not completed. Run pdflatex, then bibtex, then pdflatex twice more, and the [?] markers resolve into numbers. Overleaf runs this sequence automatically on each recompile.