Post

IEEE Citations and BibTeX: Academic References Done Right (Part 3 of 6)

IEEE Citations and BibTeX: Academic References Done Right (Part 3 of 6)

The Thesis Series

This is Part 3 of a 6-part series on learning LaTeX and writing my Masters thesis at Oakland University.

  1. Starting a Thesis: Why I Chose LaTeX Over Word
  2. Formatting Hell: 19 University Templates and Why LaTeX Wins
  3. IEEE Citations and BibTeX: Academic References Done Right (you are here)
  4. LyX: The WYSIWYG Path to LaTeX
  5. Writing IsoMob: A Cross-Platform Game Engine Thesis
  6. LaTeX Templates, Final Formatting, and Lessons Learned
  7. The Finished Thesis: 150 Pages Later

Comparison table from the thesis

The Citation Problem

Today I gathered the IEEE formatting reference documents – four PDFs covering citation style, class files, and the IEEE style manual. As an electrical and computer engineering thesis, my references need to follow IEEE format strictly.

IEEE citation style uses numbered references in square brackets: [1], [2], [3]. The reference list at the end is ordered by first appearance in the text. Each reference follows a precise format depending on whether it’s a book, journal article, conference paper, or web resource.

Here’s what an IEEE reference looks like for a book:

[1] M. Buckland, “Programming Game AI by Example.” Jones & Bartlett, 2005.

And for a web resource:

[9] Twin-Motion. “HaXe.” [Online]. Available: http://haxe.org/

Formatting these manually is tedious and error-prone. You have to track the order of first appearance, maintain consistent formatting across different source types, and update numbering whenever you add or remove a citation. For a thesis with 17+ references across 9 chapters, this becomes a maintenance headache.

Enter BibTeX

BibTeX is LaTeX’s answer to bibliography management. Instead of formatting references by hand, you maintain a .bib file – a database of all your sources – and let the compiler handle the rest.

Here’s what my thesis bibliography looks like as a BibTeX database:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@book{GameAI,
  author    = {Matt Buckland},
  title     = {Programming Game AI by Example},
  publisher = {Jones \& Bartlett},
  year      = {2005}
}

@book{AdvAs3Anim,
  author    = {Keith Peters},
  title     = {AdvancED Actionscript 3.0 Animation},
  publisher = {Apress},
  year      = {2008}
}

@book{AdvGameDesignFlash,
  author    = {Rex Spuy},
  title     = {AdvancED Game Design with Flash},
  publisher = {Apress},
  year      = {2010}
}

@book{3DMathPrimer,
  author    = {Fletcher Dunn and Ian Parberry},
  title     = {3D Math Primer for Graphics and Game Development},
  publisher = {Jones \& Bartlett},
  year      = {2002}
}

@misc{cocos2d,
  author       = {Cocos2d},
  title        = {cocos 2d},
  howpublished = {\url{http://cocos2d.org/}}
}

@inproceedings{steeringBehaviors,
  author       = {Craig Reynolds},
  title        = {Steering Behaviors for Autonomous Characters},
  organization = {Sony Computer Entertainment America},
  year         = {1999},
  url          = {http://www.red3d.com/cwr/steer/gdc99/}
}

@misc{onFilmation,
  author       = {Neil Walker},
  title        = {On Filmation},
  year         = {2004},
  howpublished = {\url{http://retrospec.sgn.net/users/nwalker/filmation/}}
}

Each entry has a type (@book, @misc, @inproceedings) and a citation key (GameAI, steeringBehaviors, onFilmation). The fields vary by type, but BibTeX knows what each type needs and formats accordingly.

Using Citations in the Document

In the thesis, citing a source is one command:

1
2
3
4
The Axonometric projection is based on the very first isometric game
"Knight Lore" \cite{onFilmation}, AI is based on steering
behaviors \cite{steeringBehaviors}, the physics is a mix of Euler
and Verlet Integration.

That’s it. \cite{onFilmation} becomes [16] (or whatever the number is based on order of appearance). The reference list at the end of the document automatically includes only the sources you actually cited, formatted in IEEE style.

To tell LaTeX to use IEEE formatting:

1
2
\bibliographystyle{IEEEtran}
\bibliography{references}

Two lines. The IEEEtran style handles all the formatting rules – author name order, title quotation marks, publisher formatting, URL handling. You never hand-format a reference again.

Why This Matters

Adding References

In Word: type the reference in the correct format, manually number it, update all subsequent numbers if it appears before existing references, check formatting matches IEEE style.

In BibTeX: add an entry to the .bib file, use \cite{key} in the text. Done. Numbering, ordering, and formatting are automatic.

Removing References

In Word: delete the in-text citation, find and remove the reference from the list, renumber all subsequent references, update all in-text citations that pointed to renumbered references.

In BibTeX: remove the \cite{key} from the text. The reference disappears from the bibliography on the next compile. Everything renumbers automatically.

Changing Citation Style

Need to switch from IEEE to APA? In Word: reformat every single reference by hand. In BibTeX:

1
2
% Change this one line:
\bibliographystyle{apalike}

Recompile. Every reference reformats itself.

The IEEE Reference Files

The four documents I downloaded today cover the IEEE formatting specifics:

File Purpose
ieeecitationref.pdf Citation and reference formatting guide
ieeecls.pdf IEEE LaTeX class file documentation
stylemanual.pdf IEEE Editorial Style Manual
auinfo03.pdf Author information and guidelines

The IEEEtran class file and bibliography style are the standard LaTeX packages for IEEE-formatted documents. They handle everything from the citation numbering scheme to the exact punctuation in reference entries. For a thesis, I’m using the bibliography style (IEEEtran.bst) rather than the full document class, since the thesis has its own formatting requirements from the university.

The Compile Cycle

One thing that trips up LaTeX beginners: BibTeX requires multiple compilation passes. The workflow is:

1
2
3
4
pdflatex thesis.tex    # First pass: identifies \cite commands
bibtex thesis          # Processes .bib file, generates .bbl
pdflatex thesis.tex    # Second pass: inserts bibliography
pdflatex thesis.tex    # Third pass: resolves cross-references

Four commands to get a fully resolved document. Most editors automate this, but it’s worth understanding why – LaTeX resolves references in passes, writing intermediate data to .aux files that subsequent passes read. The BibTeX step sits in the middle, reading the citation keys from the .aux file and generating formatted references.

My Reference Collection

For the IsoMob thesis, my bibliography spans several categories:

Game Development:

  • Matt Buckland’s “Programming Game AI by Example” – the bible for game AI
  • Keith Peters’ AS3 animation book – rendering and animation techniques
  • Rex Spuy’s Flash game design – isometric game patterns

Academic/Technical:

  • Fletcher Dunn’s 3D Math Primer – the math behind isometric transforms
  • Craig Reynolds’ Steering Behaviors paper (GDC 1999) – AI movement
  • Neil Walker’s “On Filmation” – history of isometric game projection

Frameworks and Tools:

  • Cocos2d, Moai SDK, HaXe – the competing cross-platform solutions
  • Corona SDK, PhoneGap, Titanium – alternatives I evaluated
  • GameSalad – HTML5-based game development

Industry Context:

  • GigaOM on how the iPhone changed everything
  • CNN on why most people don’t finish video games
  • Bill Gatliff on Google Android architecture

Having these in a structured .bib file means I can cite any of them with a single command and trust the formatting. As I write new chapters, I just \cite and move on. The bibliography builds itself.

Up Next

The theory is solid. The tools are chosen. But staring at raw LaTeX markup when you’re trying to think about game engine architecture can be a cognitive tax. Next up: discovering LyX, the WYSIWYG editor that lets you write LaTeX without constantly seeing backslashes.


This post is part of a series documenting my Masters thesis journey at Oakland University. The thesis describes IsoMob, an open-source cross-platform isometric game engine written in HaXe.

This post is licensed under CC BY 4.0 by the author.