Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Professional resume generation using LaTeX + Jinja2 templating. Generate beautiful, ATS-friendly PDF resumes from structured data.

License

guitargnarr/texume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Texume

Professional resume generation using LaTeX + Jinja2 templating

Generate beautiful, ATS-friendly PDF resumes from structured data using the power of LaTeX typesetting and Python templating.

License: MIT Python 3.7+ LaTeX


πŸ“‹ Table of Contents


🎯 Why Texume?

Most resume builders use HTML/CSS β†’ PDF conversion, which produces inferior typography and inconsistent formatting. Texume uses LaTeX - the gold standard for professional document typesetting used in academic publishing and technical documentation.

Advantages:

βœ… Superior Typography - LaTeX's Knuth-Plass algorithm optimizes entire paragraphs, not just individual lines βœ… Consistent Formatting - Exact spacing, alignment, and professional appearance βœ… ATS-Friendly - Clean structure that applicant tracking systems can parse βœ… Version Control - Plain text templates = perfect for Git βœ… Automation - Generate multiple resume variants from structured data βœ… Open Source - Free, customizable, no vendor lock-in


✨ Features

  • Multiple Templates: Simple, advanced, and Jinja2-powered variants
  • LaTeX-Friendly Jinja2: Custom delimiters (\VAR{}, \BLOCK{}) avoid conflicts with LaTeX syntax
  • Pure Python: No complex dependencies beyond Jinja2
  • Structured Data: Define resume content as Python dictionaries or JSON
  • PDF Compilation: Automatic LaTeX β†’ PDF via pdflatex
  • Clean Output: Professional formatting with hyperlinked email/LinkedIn
  • Extensible: Easy to add custom sections, colors, and layouts

πŸš€ Quick Start

Prerequisites

  • Python 3.7+ (download)
  • TeX Distribution:
    • macOS: brew install --cask mactex
    • Linux: sudo apt-get install texlive-full
    • Windows: MiKTeX or TeX Live

Generate Your First Resume

# Clone the repository
git clone https://github.com/guitargnarr/texume.git
cd texume

# Install Python dependencies
pip install -r scripts/requirements.txt

# Generate example resume
cd scripts
python3 resume_generator.py

Output: output/resume.pdf (opens automatically)


πŸ“¦ Installation

1. Install TeX Distribution

macOS:

brew install --cask mactex

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install texlive-full

Linux (Fedora):

sudo dnf install texlive-scheme-full

Windows: Download and install MiKTeX or TeX Live

2. Install Python Dependencies

pip install -r scripts/requirements.txt

That's it! Only one dependency: Jinja2


πŸ“ Usage

Method 1: Direct LaTeX Editing

Best for: One-time resume creation, simple customization

cd templates
# Edit resume_simple.tex with your information
pdflatex resume_simple.tex

Method 2: Python Generator (Recommended)

Best for: Multiple resume variants, automation

  1. Edit resume data in scripts/resume_generator.py:
def get_example_data() -> dict:
    return {
        'name': 'YOUR NAME',
        'email': '[email protected]',
        'phone': '(555) 123-4567',
        'experience': [
            {
                'title': 'SOFTWARE ENGINEER',
                'company': 'Tech Corp',
                'dates': 'Jan 2020 -- Present',
                'bullets': [
                    'Built scalable APIs serving 1M users',
                    'Reduced latency by 60%',
                ]
            }
        ],
        # ... more sections
    }
  1. Generate PDF:
python3 resume_generator.py
  1. Find your resume in output/resume.pdf

🎨 Customization

Change Colors

Edit template header to customize color scheme:

\definecolor{headercolor}{RGB}{37, 99, 235}  % Blue
\definecolor{sectioncolor}{RGB}{30, 58, 138} % Navy

Add New Sections

In Jinja2 template (templates/resume_jinja2.tex):

\BLOCK{if certifications}
\resumesection{CERTIFICATIONS}
\BLOCK{for cert in certifications}
\textbf{\VAR{cert.name}} | \VAR{cert.issuer} | \VAR{cert.date}
\BLOCK{endfor}
\BLOCK{endif}

In Python data:

'certifications': [
    {'name': 'AWS Solutions Architect', 'issuer': 'Amazon', 'date': '2023'}
]

Fonts

Use XeLaTeX for custom fonts (requires fontspec package):

xelatex resume_simple.tex

πŸ”§ Technical Details

Architecture

Resume Data (Python dict/JSON)
    ↓
Jinja2 Template Engine
    ↓
LaTeX Document (.tex)
    ↓
pdflatex Compiler
    ↓
Professional PDF Resume

LaTeX-Friendly Jinja2 Delimiters

Problem: Standard Jinja2 uses {% and {{, but LaTeX uses % for comments and {} for grouping.

Solution: Custom delimiters that don't conflict with LaTeX:

Standard Jinja2 Texume (LaTeX-Friendly)
{{ variable }} \VAR{variable}
{% if condition %} \BLOCK{if condition}
{# comment #} \#{comment}

This allows LaTeX comments (%) to work normally in templates!

Files Overview

texume/
β”œβ”€β”€ templates/
β”‚   β”œβ”€β”€ resume_simple.tex      # Basic template (no Jinja2)
β”‚   └── resume_jinja2.tex      # Dynamic template with Jinja2
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ resume_generator.py    # Main generator script
β”‚   └── requirements.txt       # Python dependencies
β”œβ”€β”€ examples/
β”‚   └── jane_doe_resume.pdf    # Example output
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ ARCHITECTURE.md        # System design details
β”‚   └── CUSTOMIZATION.md       # Advanced customization guide
β”œβ”€β”€ .gitignore                 # Excludes personal data, aux files
β”œβ”€β”€ LICENSE                    # MIT License
└── README.md                  # This file

πŸ“Έ Examples

Simple Template

Clean, professional resume using standard LaTeX packages only.

Output: examples/jane_doe_resume.pdf

Advanced Template

Enhanced version with custom colors, fonts, and styling.

(Coming soon - requires additional LaTeX packages)


🀝 Contributing

Contributions welcome! Here's how you can help:

Ideas for Contributions:

  • Additional templates (academic CV, creative designs, etc.)
  • JSON/YAML data loading (instead of Python dict)
  • CLI tool with argparse
  • Multiple language support
  • Color scheme presets
  • Markdown β†’ LaTeX converter
  • Web UI for non-technical users
  • Docker container for easy deployment

How to Contribute:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“š Additional Resources


πŸ› Troubleshooting

pdflatex: command not found

Solution: Install TeX Live (see Installation)

LaTeX compilation errors

Solution: Check .log file in output directory:

cat output/resume.log | grep -i error

Common issues:

  • Missing packages: Install with tlmgr install <package-name>
  • Special characters: Escape &, %, $, #, _ with backslash

Python Jinja2 errors

Solution: Ensure delimiters match in template and generator:

# In resume_generator.py
block_start_string='\\BLOCK{',
variable_start_string='\\VAR{',

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

TL;DR: Free to use, modify, and distribute. No warranty provided.


πŸ’‘ Why "Texume"?

TeX (LaTeX) + Resume = Texume

A memorable portmanteau representing the fusion of professional typesetting and modern automation.


πŸ™ Acknowledgments

  • Donald Knuth - Creator of TeX typesetting system
  • Leslie Lamport - Creator of LaTeX
  • Jinja2 Team - Excellent templating engine
  • Open Source Community - For making tools like this possible

πŸ“§ Contact

Matthew Scott - @guitargnarr

Project Link: https://github.com/guitargnarr/texume


Built with ❀️ using LaTeX, Python, and Jinja2

⭐ Star this repo if you found it helpful!