Org-Lectures provides a structured and automated system for taking and organizing lecture notes in Org mode. It streamlines the entire workflow, from creating new notes to finding old ones, letting you focus on the content.
- Effortless Organization: Automatically manages your notes in a clear
course -> lecturehierarchy. Create new courses and lectures on the fly. - Rapid Navigation: Interactively search and select courses and lectures through a dynamic, aligned minibuffer prompt. An efficient indexing system makes access nearly instantaneous.
- Smart Templates: New lecture files are automatically populated with relevant course data (Professor, Institution, etc.) from a customizable template.
- Live LaTeX Preview: Activate a minor mode to get a live-updating PDF of your notes. On every save, the Org file is exported to LaTeX and recompiled automatically in the background.
This package aims to simplify and automate the mundane task of creating, organizing, and finding your static notes, allowing you to focus on their actual content. Unlike other widely used packages, it does not alter your established workflow with Org files.
The package maintains a straightforward directory structure within the org-lectures-dir:
- Course Index File: Each course is represented by a
course_<name>.orgfile. This file serves as the central index for course-specific information and generic notes. It provides an overview of the course but does not automatically link to individual lectures. - Course Lecture Directory: Each course also has a dedicated directory where all lecture files for that course are placed.
You can install org-lectures using use-package. A minimal configuration is shown below.
(use-package org-lectures
:straight
(:host github :repo "chatziiola/org-lectures")
:config
(setq org-lectures-dir (expand-file-name "/your/path/to/lectures"))
;; Optional: For live LaTeX previews
(add-hook 'org-lectures-after-open-lecture-hook
(lambda (filename)
(ignore filename)
(org-lectures-latex-minor-mode 1)))
:general
;; Example keybindings using general.el
;; Use your own leader keys function
(lc/leader-keys
"ll" '(org-lectures-find-course :which-keys "lecture")
"lF" '(org-lectures-dired-course-folder :which-keys "Open course's folder"))
)For further customization, please refer to the available variables in the source code.
org-lectures provides hooks for you to add complementary actions. For example, a hook can be used to automatically start
org-lectures-latex-minor-mode for a continuous PDF preview using latexmk.
(add-hook 'org-lectures-after-open-lecture-hook
(lambda (filename)
(ignore filename)
(org-lectures-latex-minor-mode 1)))The main entry point is the interactive function org-lectures-find-course.
- Find or Create a Course:
- Call
org-lectures-find-course. - A minibuffer will prompt you to select a course. You can filter by short-title, title, professor, or institution.
- To create a new course, select the “New Course” option.
- Call
- Find or Create a Lecture:
- After selecting a course, a second minibuffer appears.
- You can filter the course’s lectures by date, professor, or title.
- To create a new lecture, select the “New Lecture” option.
The package allows you to easily organize notes, navigate between lectures, and quickly open a course’s directory.
This package is written using literate programming. The complete source code, including detailed explanations and implementation notes, is available in the OrgLectures.org file. We encourage you to explore it for a deeper understanding of the package’s inner workings.