#!/usr/bin/env python3 """ =============================================================== Script: init-all-courses.py Author: Kris Yotam (aka. khr1st) Date: 2025-09-29 License: MIT License Description: Initializes LaTeX note-taking course directories by creating `master.tex`, `master.tex.latexmain`, and ensuring `figures/` exists for each course. Inspiration: Adapted and extended from Gilles Castel's lecture note workflow. =============================================================== """ from courses import Courses def build_master_content(course_title: str) -> str: """ Return the LaTeX master.tex skeleton as a single string. """ lines = [ r'\documentclass[a4paper]{article}', r'\input{../preamble.tex}', fr'\title{{{course_title}}}', r'\begin{document}', r' \maketitle', r' \tableofcontents', r' % start lectures', r' % end lectures', r'\end{document}', ] return '\n'.join(lines) def init_course(course): """ Initialize one course directory with master.tex, .latexmain marker, and figures/ folder. """ lectures = course.lectures course_title = lectures.course.info["title"] # Write master.tex with minimal skeleton lectures.master_file.touch(exist_ok=True) lectures.master_file.write_text(build_master_content(course_title)) # Touch helper file for latexmk integration (lectures.root / 'master.tex.latexmain').touch(exist_ok=True) # Ensure figures directory exists (lectures.root / 'figures').mkdir(exist_ok=True) print(f"[ok] Initialized {course_title}") def main(): """ Iterate over all courses and initialize them. """ for course in Courses(): init_course(course) if __name__ == "__main__": main()