A professional LaTeX CV template based on the Friggeri CV class, customized for software engineering resumes.
.
├── Dung_Huynh/
│ ├── cv.tex # Main CV file (updated)
│ ├── cv_ai_lead.tex # AI Lead version
│ ├── friggeri-cv.cls # CV class definition
│ ├── dtklogos.sty # Logo style package
│ ├── img/ # Profile and images
│ └── *.ttf, *.otf # Font files
├── scripts/
│ └── optimize_pdf.sh # PDF optimization script
└── README.md
Install LaTeX distribution and required tools:
# Install MacTeX (full LaTeX distribution) - recommended
brew install --cask mactex
# Or install BasicTeX (smaller, ~100MB)
brew install --cask basictex
# Then install required packages
tlmgr install latexmk fontspec fontawesome smartdiagram textpos biblatex biber xstring
# Install Ghostscript for PDF optimization
brew install ghostscript
sudo apt-get install texlive-xetex texlive-fonts-recommended texlive-latex-extra ghostscript
# textpos is included in texlive-latex-extra
# Install all required packages (macOS)
make install
# Build cv_2026.tex
make build
# View available commands
make help
# Build cv_2026.tex (default)
./scripts/build.sh
# Build specific file
./scripts/build.sh cv
# Build and clean auxiliary files
./scripts/build.sh cv_2026 clean
cd Dung_Huynh
xelatex cv.tex
# Main CV (original)
xelatex Dung_Huynh/cv.tex
# Updated 2026 version
./scripts/build.sh cv_2026
# AI Lead version
xelatex Dung_Huynh/cv_ai_lead.tex
# Install all required packages (macOS)
make install
# Check if requirements are met
make check
# Build cv_2026.tex (default)
make build
# Build all CV files
make build-all
# Optimize PDF for size
make optimize
# Clean auxiliary files
make clean
# Remove all generated files
make clean-all
# View PDF in default viewer
make view
# Show all available commands
make help
Reduce PDF size for uploads (e.g., job applications with 2MB limit).
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH \
-sOutputFile=cv_optimized.pdf cv.pdf
./scripts/optimize_pdf.sh Dung_Huynh/cv.pdf Dung_Huynh/cv_optimized.pdf
| Preset | DPI | Use Case |
|---|---|---|
/screen |
72 | Web upload, smallest size |
/ebook |
150 | Email, applications (recommended) |
/printer |
300 | Printing, high quality |
/prepress |
300 | Professional printing |
Edit Dung_Huynh/cv.tex:
% Header (line 54)
\header{First}{Last}{Title}
% Sidebar (lines 58-82)
\begin{aside}
\includegraphics[scale=0.15]{img/your-photo.jpg}
\section{Address}
Your Address
\section{Contact}
Phone, Skype, etc.
\end{aside}
Projects are auto-fetched from GitHub. To update:
cv.tex (lines 89-111)gh repo view jellydn/resume-latex --json name,description
Update the entrylist sections in cv.tex (lines 116-173):
\begin{entrylist}
\entry
{MM/YYYY - Now}
{Job Title}
{Company Name}
{Description and achievements\\\\}
\end{entrylist}
This template uses custom fonts included in the project:
To change fonts, modify the fontspec configuration in your .tex file.
Error: File 'textpos.sty' not found
# macOS
tlmgr install textpos biblatex biber xstring
# Linux
sudo apt-get install texlive-latex-extra biber
Error: fontspec feature requires XeLaTeX or LuaLaTeX
# Use xelatex instead of pdflatex
xelatex cv.tex
Error: Missing packages
# macOS
tlmgr install <package-name>
# Linux
sudo apt-get install texlive-<package>
If PDF is still too large after optimization:
img/ folder/screen preset for aggressive compression# Track LaTeX changes but ignore build artifacts
git add cv.tex
git commit -m "Update experience section"
# .gitignore already excludes:
# *.aux, *.log, *.out, *.pdf, *.toc
This template is based on the Friggeri CV class. Modify and use freely for your personal CV.