Skip to content

chatziiola/org-lectures

Repository files navigation

Org-Lectures

Core Features

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 -> lecture hierarchy. 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.

Introduction

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:

  1. Course Index File: Each course is represented by a course_<name>.org file. 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.
  2. Course Lecture Directory: Each course also has a dedicated directory where all lecture files for that course are placed.

Installation & Configuration

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.

Utilizing hooks

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)))

How to Use It

The main entry point is the interactive function org-lectures-find-course.

  1. 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.
  2. 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.

Literate Source Code

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.

About

Lecture notetaking package in Elisp for Emacs and Org-Mode

Topics

Resources

License

Stars

Watchers

Forks