Giter Club home page Giter Club logo

university-setup's Introduction

Managing LaTeX lecture notes

This repository complements my third blog post about my note taking setup.

File structure

ROOT
├── riemann-surfaces
│   ├── info.yaml
│   ├── master.tex
│   ├── lec_01.tex
│   ├── ...
│   ├── lec_13.tex
│   ├── figures
│   │   ├── analytical-continuation-algebraic-equations.pdf
│   │   ├── analytical-continuation-algebraic-equations.pdf_tex
│   │   ├── analytical-continuation-algebraic-equations.svg
│   │   └── ...
│   └── UltiSnips
│       └── tex.snippets
├── selected-topics
└── ...

Contents of info.yaml

title: 'Riemann Surfaces'
short: 'RSurf'
url: 'https://'

Contents of master.tex:

\documentclass[]{report}
\input{../preamble.tex}
\DeclareMathOperator{\Res}{Res}
...
\title{Riemann surfaces}
\begin{document}
    \maketitle
    \tableofcontents
    % start lecture
    \input{lec_01.tex}
    ...
    \input{lec_12.tex}
    % end lectures
\end{document}

Here % start lectures and % end lectures are important.

A lecture file contains a line

\lecture{1}{vr 14 feb 2020 16:04}{Introduction}

which is the lecture number, date an title of the lecture. Date format is configurable in config.py.

init-all-courses.py

This is the first file you should run, after creating the directory and the info.yaml file for each course. It creates all master.tex files.

config.py

This is where you configure what calendar to use for the countdown script, the root folder of the file structure, and similar stuff. You can also configure the date format used in some places (lecture selection dialog and LaTeX files). My university uses a system where we label the weeks in a semester from 1 to 13, and this is what the get_week function does: it returns the week number of the given date.

courses.py

This file defines Course and Courses. Courses is a list of Courses in the ROOT folder. A Course is a python object that represents a course. It has a name, a path, and some info (which reads from info.yaml). You can also access its lectures.

Courses also has a current property which points to the current course. When setting this property, the script updates the ~/current_course symlink to point to the current course (configurable in config.py) Furthermore, it writes the short course code to /tmp/current_course. This way, when using polybar, you can add the following to show the current course short code in your panel.

[module/currentcourse]
type = custom/script
tail = true
exec = echo '/tmp/current_course' | entr cat /tmp/current_course

countdown.py

This script hooks into your calendar, which you can configure in the config.py file. If you're using polybar, you can use the following config:

[module/calendar]
type = custom/script
exec = TZ='Europe/Brussels' python3 -u ~/scripts/uni/countdown.py
click-left = sensible-browser 'https://calendar.google.com/calendar/' -- &
tail = true

It activates the course if the title of the course can be found in the description of the calendar event:

course = next(
    (course for course in courses
     if course.info['title'].lower() in event['summary'].lower()),
    None
)

You can easily change this by for example adding a calendar_name to each info.yaml file and checking with if course.info['calendar_name'] == event['summary'] or something like that.

To get it working, follow step 1 and 2 of the Google Calendar Python Quickstart, and place credentials.json in the scripts directory.

lectures.py

This file defines Lectures, the lectures for one course and Lecture, a single lecture file lec_xx.tex. A Lecture has a title, date, week, which get parsed from the LaTeX source code. It also has a reference to its course. When calling .edit() on a lecture, it opens up lecture in Vim.

Lectures is class that inherits from list that represents the lectures in one course. It has a method new_lecture which creates a new lecture, update_lectures_in_master, which when you call with [1, 2, 3] updates master.tex to include the first three lectures, compile_master which compiles the master.tex file.

rofi-courses.py

When you run this file, it opens rofi allows you to activate a course.

rofi-lectures.py

When you run this file, it show you lectures of the current course. Selecting one opens up the file in Vim, pressing Ctrl+N creates a new lecture.

rofi-lectures-view.py

This opens up a rofi dialog to update which lectures are included in master.tex

rofi.py

Wrapper function for rofi

utils.py

Some utility functions

compile-all-masters.py

This script updates the master.tex files to include all lectures and compiles them. I use when syncing my notes to the cloud. This way I always have access to my compiles notes on my phone.

university-setup's People

Contributors

gillescastel avatar salmona avatar siemdejong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.