diff options
| author | Douglas B. Rumbaugh <doug@douglasrumbaugh.com> | 2026-01-11 14:20:59 -0500 |
|---|---|---|
| committer | Douglas B. Rumbaugh <doug@douglasrumbaugh.com> | 2026-01-11 14:30:25 -0500 |
| commit | a9485e7458a2f23ee4805d926f45fc4908e3420a (patch) | |
| tree | 83f1ef621e39395176d4a4a3b7ae02c8c4ecd7fb | |
| parent | 83d1cc38f7462dfee1d174a2ae64528e49eb0331 (diff) | |
| download | weekschedule-a9485e7458a2f23ee4805d926f45fc4908e3420a.tar.gz | |
Organized as a proper git repo
| -rw-r--r-- | .gitignore | 43 | ||||
| -rw-r--r-- | LICENSE | 28 | ||||
| -rw-r--r-- | README.md | 80 | ||||
| -rw-r--r-- | doc/weekschedule-doc.pdf | bin | 0 -> 177611 bytes | |||
| -rw-r--r-- | doc/weekschedule-doc.tex | 372 | ||||
| -rw-r--r-- | events.txt | 10 | ||||
| -rw-r--r-- | examples/schedule_example.tex | 56 | ||||
| -rw-r--r-- | examples/schedule_example_fullweek.tex | 58 | ||||
| -rw-r--r-- | examples/schedule_example_mondaysunday.tex | 58 | ||||
| -rw-r--r-- | examples/weekly_schedule.tex (renamed from weekly_schedule.tex) | 4 | ||||
| -rw-r--r-- | weekschedule.cls | 32 |
11 files changed, 728 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6db5da --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# LaTeX build artifacts +*.aux +*.log +*.out +*.toc +*.lof +*.lot +*.fls +*.fdb_latexmk +*.synctex.gz +*.synctex(busy) +*.pdfsync +*.bbl +*.blg +*.idx +*.ilg +*.ind +*.hd +*.nav +*.snm +*.vrb +*.bcf +*.run.xml +*.figlist +*.makefile +*.figlist +*.fls + +# Compiled PDFs (optional - you may want to track these) +# Uncomment the next line if you want to ignore PDFs +# *.pdf + +# Editor/IDE files +*~ +*.swp +*.swo +.DS_Store +.vscode/ +.idea/ + +# Backup files +*.bak +*.backup @@ -0,0 +1,28 @@ +Copyright (c) 2026, Douglas B. Rumbaugh +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a97facf --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# weekschedule + +A LaTeX class for creating reasonably attractive (or at least not +hideously ugly) schedules. + +## Description + +I created the `weekschedule` class to make visual representations of my +semester schedule to post on the door of my office. It supports a small +range of options for configuring how the schedule renders, including +12 vs 24 hour time and 5 or 7 day weeks. It's based on TikZ and produces +a landscape, single page document ready for taping to any office door. + +This project was almost 100% vibe coded, so user beware. I seems to work +fine for my use cases, but I have not pushed it terribly hard. If you +do encounter any issues, feel free to reach out and I can take a look at +getting it fixed. If you're interested, it was made by first having Claude +Sonnet create a one-off, hard coded schedule, and then having Opus write a +class to emulate the schedule using an interface that I specified. It did +take a little iteration, but the whole thing went surprisingly smoothly. + +## Installation + +LaTex looks for class files within the working directory, as well as +within standardized directories (called a Tex tree) on your machine. The +easiest way to use this class is to simply dump it into the same +directory as the LaTex file you're working on, and use `weekschedule` +as the document class. You'll need to refer to the documentation for +your LaTex distribution for details on where to put the `.cls` file for +systemwide use. + +## Using Examples + +Example files are located in the `examples/` directory. They can be +compiled directory from the project root using, + +```bash +$ pdflatex examples/weekly_schedule.tex +``` + +## Quick Start + +```latex +\documentclass{weekschedule} + +\scheduletitle{My Weekly Schedule} +\timefrom{8:00} +\timeto{17:00} +\twelvehourtime + +\eventclass{Work}{255,200,200} +\event{Work}{Meeting}{Monday}{9:00}{10:00} + +\begin{document} +\printschedule +\end{document} +``` + +## Documentation + +Out of laziness, I AI generated some docs. I'll eventually get around +to writing "real" documentation, but for now this appears correct and +may be useful. The slop docs are available in the `doc/` directory. + + +## TODO + +There are a couple of specific features that are currently missing from +the class. + +- Support for overlapping events +- Actual documentation--the existing docs file was one-shot AI generated from the source code. + +## License + +Copyright (c) 2026, Douglas B. Rumbaugh + +This work is licensed under the Modified BSD License (3-clause BSD License). +See the `LICENSE` file for the full license text. + diff --git a/doc/weekschedule-doc.pdf b/doc/weekschedule-doc.pdf Binary files differnew file mode 100644 index 0000000..729ee9b --- /dev/null +++ b/doc/weekschedule-doc.pdf diff --git a/doc/weekschedule-doc.tex b/doc/weekschedule-doc.tex new file mode 100644 index 0000000..7b9d8cd --- /dev/null +++ b/doc/weekschedule-doc.tex @@ -0,0 +1,372 @@ +\documentclass{ltxdoc} +\usepackage{hyperref} +\usepackage{booktabs} +\usepackage{array} + +% Metadata +\title{The \texttt{weekschedule} Class\\ +\large A LaTeX Class for Creating Weekly Schedule Calendars} +\author{Douglas B. Rumbaugh} +\date{Version 1.0\\January 2026} + +\begin{document} +\maketitle + +\begin{abstract} +The \texttt{weekschedule} class provides a simple and flexible way to create +professional weekly schedule calendars in LaTeX. It supports customizable time +ranges, multiple event classes with color coding, and various display options +including 12-hour and 24-hour time formats. The class uses TikZ for rendering, +producing high-quality vector graphics suitable for both screen viewing and +printing. +\end{abstract} + +\tableofcontents +\newpage + +\section{Introduction} + +The \texttt{weekschedule} class is designed to create clean, professional +weekly schedule calendars. It automatically handles layout, time formatting, +and event placement, allowing you to focus on your schedule content rather +than formatting details. + +\subsection{Requirements} + +The class requires the following packages, which are automatically loaded: +\begin{itemize} +\item \texttt{geometry} (for page layout) +\item \texttt{tikz} (for drawing the schedule) +\item \texttt{xcolor} (for color definitions) +\item \texttt{pgfmath} (for mathematical calculations) +\end{itemize} + +\subsection{Installation} + +Place the \texttt{weekschedule.cls} file in the same directory as your +document, or in your local TeX tree. No additional installation steps are +required. + +\section{Quick Start} + +Here is a minimal example to get you started: + +\begin{verbatim} +\documentclass{weekschedule} + +\scheduletitle{My Weekly Schedule} +\timefrom{8:00} +\timeto{17:00} +\twelvehourtime + +\eventclass{Work}{255,200,200} +\event{Work}{Meeting}{Monday}{9:00}{10:00} + +\begin{document} +\printschedule +\end{document} +\end{verbatim} + +This creates a simple schedule with one event on Monday from 9:00 to 10:00. + +\section{Command Reference} + +\subsection{Basic Configuration} + +\DescribeMacro{\scheduletitle} +Sets the title that appears at the top of the schedule. +\begin{verbatim} +\scheduletitle{Weekly Schedule - Spring 2026} +\end{verbatim} +Default: \texttt{Weekly Schedule} + +\DescribeMacro{\scheduleauthor} +Sets the author name that appears below the title (optional). +\begin{verbatim} +\scheduleauthor{Douglas B. Rumbaugh} +\end{verbatim} +Default: empty (no author displayed) + +\DescribeMacro{\timefrom} +Sets the start time for the schedule display. The time should be in +\texttt{HH:MM} format (24-hour format). +\begin{verbatim} +\timefrom{8:00} +\end{verbatim} +Default: \texttt{8:00} + +\DescribeMacro{\timeto} +Sets the end time for the schedule display. The time should be in +\texttt{HH:MM} format (24-hour format). +\begin{verbatim} +\timeto{18:00} +\end{verbatim} +Default: \texttt{18:00} + +\subsection{Time Format} + +\DescribeMacro{\twelvehourtime} +\DescribeMacro{\twentyfourhourtime} +These commands control how times are displayed in the schedule. +\begin{verbatim} +\twelvehourtime % Display as 9:00 AM, 2:00 PM, etc. +\twentyfourhourtime % Display as 9:00, 14:00, etc. +\end{verbatim} +Default: 12-hour format + +\subsection{Week Configuration} + +\DescribeMacro{\weekworkweek} +\DescribeMacro{\weekfullsunday} +\DescribeMacro{\weekfullmonday} +These commands control which days of the week are displayed. + +\begin{verbatim} +\weekworkweek % Monday through Friday (default) +\weekfullsunday % Sunday through Saturday (Sunday first) +\weekfullmonday % Monday through Sunday (Monday first) +\end{verbatim} + +Default: work week (Monday--Friday) + +\subsection{Minute Lines} + +\DescribeMacro{\minutelinesoff} +\DescribeMacro{\minutelinesthirty} +\DescribeMacro{\minutelinesfifteen} +These commands control the display of dashed lines between hours. + +\begin{verbatim} +\minutelinesoff % No minute lines (default) +\minutelinesthirty % Half-hour lines (e.g., 9:30, 10:30) +\minutelinesfifteen % Quarter-hour lines (e.g., 9:15, 9:30, 9:45) +\end{verbatim} + +Default: no minute lines + +\subsection{Event Classes} + +\DescribeMacro{\eventclass} +Defines an event class with a name and RGB color. Event classes are used to +categorize events and appear in the legend. + +\begin{verbatim} +\eventclass{ClassName}{R,G,B} +\end{verbatim} + +The color is specified as three comma-separated RGB values (0--255). +Examples: +\begin{verbatim} +\eventclass{Courses}{173,216,230} % Light blue +\eventclass{Meetings}{255,218,185} % Peach +\eventclass{OfficeHours}{144,238,144} % Light green +\eventclass{Personal}{221,160,221} % Light purple +\end{verbatim} + +\subsection{Events} + +\DescribeMacro{\event} +Adds an event to the schedule. + +\begin{verbatim} +\event{ClassName}{Event Name}{Days}{Start}{End} +\end{verbatim} + +\begin{description} +\item[\texttt{ClassName}] The name of the event class (must be defined with + \texttt{\textbackslash eventclass} first). +\item[\texttt{Event Name}] The text to display in the event box. +\item[\texttt{Days}] Comma-separated list of days: \texttt{Monday}, + \texttt{Tuesday}, \texttt{Wednesday}, \texttt{Thursday}, \texttt{Friday}, + \texttt{Saturday}, \texttt{Sunday}. Days must match the capitalization + exactly. +\item[\texttt{Start}] Start time in \texttt{HH:MM} format (24-hour). +\item[\texttt{End}] End time in \texttt{HH:MM} format (24-hour). +\end{description} + +Examples: +\begin{verbatim} +\event{Courses}{MATH 220 01}{Tuesday,Thursday}{9:00}{10:30} +\event{Meetings}{Faculty Meeting}{Monday}{10:00}{10:30} +\event{OfficeHours}{Office Hours}{Tuesday,Thursday}{13:00}{14:30} +\end{verbatim} + +\subsection{Layout Customization} + +\DescribeMacro{\setpadding} +This command allows fine-tuning of the padding around events in the schedule. +It accepts a dimension in centimeters. + +\begin{verbatim} +\setpadding{0.08} % Padding around events (default: 0.08cm) +\end{verbatim} + +Note: The day column width and hour row height are automatically calculated +based on the page width and number of days displayed, so they cannot be +manually overridden. + +\subsection{Generating the Schedule} + +\DescribeMacro{\printschedule} +This command must be called within the \texttt{document} environment to +render the schedule. It draws the grid, places all events, and displays the +legend. + +\begin{verbatim} +\begin{document} +\printschedule +\end{document} +\end{verbatim} + +\section{Complete Example} + +Here is a complete example demonstrating many features: + +\begin{verbatim} +\documentclass{weekschedule} + +% Title and author +\scheduletitle{Weekly Schedule - Spring 2026} +\scheduleauthor{Douglas B. Rumbaugh} + +% Time range +\timefrom{8:00} +\timeto{18:00} + +% Display format +\twelvehourtime +\weekfullmonday +\minutelinesthirty + +% Define Event Classes +\eventclass{Courses}{173,216,230} % Light blue +\eventclass{Meetings}{255,218,185} % Peach +\eventclass{OfficeHours}{144,238,144} % Light green +\eventclass{Personal}{221,160,221} % Light purple + +% Define Events +\event{Meetings}{CIE Project Meeting}{Monday}{9:00}{9:30} +\event{Meetings}{Faculty Meeting}{Monday}{10:00}{10:30} +\event{Personal}{(Out of Office)}{Monday}{14:30}{17:00} + +\event{Courses}{MATH 220 01}{Tuesday,Thursday}{9:00}{10:30} +\event{Courses}{CISC 460 01}{Tuesday,Thursday}{11:15}{12:45} +\event{OfficeHours}{Office Hours}{Tuesday,Thursday}{13:00}{14:30} + +\event{Meetings}{Faculty Meeting}{Wednesday}{10:00}{11:00} +\event{Meetings}{Research Meeting}{Wednesday}{14:30}{15:30} + +\event{Courses}{CISC 225 01}{Monday,Wednesday,Friday}{11:00}{12:00} +\event{Courses}{GEND 112 01}{Monday,Wednesday,Friday}{13:30}{14:30} + +\begin{document} +\printschedule +\end{document} +\end{verbatim} + +\section{Notes and Tips} + +\subsection{Time Format} +\begin{itemize} +\item Times are always specified in 24-hour format when using + \texttt{\textbackslash timefrom}, \texttt{\textbackslash timeto}, and + \texttt{\textbackslash event}, regardless of the display format setting. +\item The display format (12-hour vs. 24-hour) only affects how times appear + in the schedule labels, not how you specify them. +\end{itemize} + +\subsection{Day Names} +\begin{itemize} +\item Day names are case-sensitive and must match exactly: \texttt{Monday}, + \texttt{Tuesday}, \texttt{Wednesday}, \texttt{Thursday}, \texttt{Friday}, + \texttt{Saturday}, \texttt{Sunday}. +\item When using \texttt{\textbackslash weekfullsunday} or + \texttt{\textbackslash weekfullmonday}, you can include weekends in your + events. +\item Days in the \texttt{\textbackslash event} command can be listed in any + order. +\end{itemize} + +\subsection{Event Placement} +\begin{itemize} +\item Events that extend beyond the time range specified by + \texttt{\textbackslash timefrom} and \texttt{\textbackslash timeto} are + automatically clipped to the visible range. +\item Events are drawn with rounded corners and padding for a clean + appearance. +\item Long event names will be automatically wrapped within the event box. +\end{itemize} + +\subsection{Layout} +\begin{itemize} +\item The document is automatically set to landscape orientation. +\item The schedule automatically adjusts column widths based on the number of + days displayed. +\item The class uses a minimal page style (no page numbers or headers). +\end{itemize} + +\section{Technical Details} + +\subsection{Class Options} +The class is based on the \texttt{article} class with landscape orientation +and 11pt font size. These are hardcoded and cannot be changed via class +options. + +\subsection{Internal Commands} +All internal commands use the \texttt{@} prefix and should not be called +directly by users. The class uses TikZ for all drawing operations and PGF +mathematics for layout calculations. + +\section{Version History} + +\begin{description} +\item[Version 1.0 (2026-01-11)] Initial release + \begin{itemize} + \item Basic schedule functionality + \item Support for 12-hour and 24-hour time formats + \item Multiple week configurations (work week, full week) + \item Event classes with custom colors + \item Minute line options + \item Layout customization options + \end{itemize} +\end{description} + +\section{License} + +Copyright \copyright{} 2026, Douglas B. Rumbaugh + +This work is licensed under the Modified BSD License (also known as the +3-clause BSD License). + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +\begin{enumerate} +\item Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +\item Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +\item Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. +\end{enumerate} + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +The full license text is also available in the \texttt{LICENSE} file +distributed with this package. + +\end{document} diff --git a/events.txt b/events.txt deleted file mode 100644 index bfbae92..0000000 --- a/events.txt +++ /dev/null @@ -1,10 +0,0 @@ -CIE Project Meeting Monday 9:00 - 9:30 -Faculty Meeting Monday 10:00 - 10:30 -CISC 225 01 Monday, Wednesday, Friday 11:00 - 12:00 -GEND 112 01 Monday, Wednesday, Friday 13:30 - 14:30 -Personal (OO) Monday 14:30 - 17:00 -MATH 220 01 Tuesday, Thursday 9:00 - 10:30 -CISC 460 01 Tuesday, Thursday 11:15 - 12:45 -Office Hours Tuesday, Thursday 13:00 - 14:30 -Research Meeting Wednesday 14:30 - 15:30 -Faculty Meeting Wednesday 10:00 - 11:00 diff --git a/examples/schedule_example.tex b/examples/schedule_example.tex new file mode 100644 index 0000000..0236066 --- /dev/null +++ b/examples/schedule_example.tex @@ -0,0 +1,56 @@ +% Example usage of the weekschedule class +\documentclass{weekschedule} + +% ============================================ +% Schedule Configuration +% ============================================ + +% Title and author +\scheduletitle{Weekly Schedule - Spring 2026} +\scheduleauthor{Dr. Rumbaugh} + +% Time range (use 24-hour format for input) +\timefrom{8:00} +\timeto{18:00} + +% Display format: \twelvehourtime (default) or \twentyfourhourtime +\twelvehourtime + +% ============================================ +% Define Event Classes (name and RGB color) +% ============================================ +\eventclass{Courses}{173,216,230} % Light blue +\eventclass{Meetings}{255,218,185} % Peach +\eventclass{OfficeHours}{144,238,144} % Light green +\eventclass{Personal}{221,160,221} % Light purple + +% ============================================ +% Define Events +% Usage: \event{Class}{Name}{Day(s)}{Start}{End} +% Days can be comma-separated: Monday,Wednesday,Friday +% ============================================ + +% Monday-only events +\event{Meetings}{CIE Project\\Meeting}{Monday}{9:00}{9:30} +\event{Meetings}{Faculty Meeting}{Monday}{10:00}{10:30} +\event{Personal}{(Out of Office)}{Monday}{14:30}{17:00} + +% Tuesday/Thursday events +\event{Courses}{MATH 220 01}{Tuesday,Thursday}{9:00}{10:30} +\event{Courses}{CISC 460 01}{Tuesday,Thursday}{11:15}{12:45} +\event{OfficeHours}{Office Hours}{Tuesday,Thursday}{13:00}{14:30} + +% Wednesday-only events +\event{Meetings}{Faculty Meeting}{Wednesday}{10:00}{11:00} +\event{Meetings}{Research Meeting}{Wednesday}{14:30}{15:30} + +% Monday/Wednesday/Friday events +\event{Courses}{CISC 225 01}{Monday,Wednesday,Friday}{11:00}{12:00} +\event{Courses}{GEND 112 01}{Monday,Wednesday,Friday}{13:30}{14:30} + +% ============================================ +% Generate the schedule +% ============================================ +\begin{document} +\printschedule +\end{document} diff --git a/examples/schedule_example_fullweek.tex b/examples/schedule_example_fullweek.tex new file mode 100644 index 0000000..708bd0f --- /dev/null +++ b/examples/schedule_example_fullweek.tex @@ -0,0 +1,58 @@ +% Example using the weekschedule class with full week (Sunday-Saturday) +\documentclass{weekschedule} + +% ============================================ +% Schedule Configuration +% ============================================ + +% Title and author +\scheduletitle{Weekly Schedule - Spring 2026} +\scheduleauthor{Douglas B. Rumbaugh} + +% Time range +\timefrom{8:00} +\timeto{18:00} + +% Display format +\twelvehourtime + +% Week configuration - show full week starting with Sunday +\weekfullsunday + +% ============================================ +% Define Event Classes (name and RGB color) +% ============================================ +\eventclass{Courses}{173,216,230} % Light blue +\eventclass{Meetings}{255,218,185} % Peach +\eventclass{OfficeHours}{144,238,144} % Light green +\eventclass{Personal}{221,160,221} % Light purple + +% ============================================ +% Define Events +% Usage: \event{Class}{Name}{Day(s)}{Start}{End} +% ============================================ + +% Monday events +\event{Meetings}{CIE Project Meeting}{Monday}{9:00}{9:30} +\event{Meetings}{Faculty Meeting}{Monday}{10:00}{10:30} +\event{Personal}{(Out of Office)}{Monday}{14:30}{17:00} + +% Tuesday/Thursday events +\event{Courses}{MATH 220 01}{Tuesday,Thursday}{9:00}{10:30} +\event{Courses}{CISC 460 01}{Tuesday,Thursday}{11:15}{12:45} +\event{OfficeHours}{Office Hours}{Tuesday,Thursday}{13:00}{14:30} + +% Wednesday events +\event{Meetings}{Faculty Meeting}{Wednesday}{10:00}{11:00} +\event{Meetings}{Research Meeting}{Wednesday}{14:30}{15:30} + +% Monday/Wednesday/Friday events +\event{Courses}{CISC 225 01}{Monday,Wednesday,Friday}{11:00}{12:00} +\event{Courses}{GEND 112 01}{Monday,Wednesday,Friday}{13:30}{14:30} + +% ============================================ +% Generate the schedule +% ============================================ +\begin{document} +\printschedule +\end{document} diff --git a/examples/schedule_example_mondaysunday.tex b/examples/schedule_example_mondaysunday.tex new file mode 100644 index 0000000..21e7f66 --- /dev/null +++ b/examples/schedule_example_mondaysunday.tex @@ -0,0 +1,58 @@ +% Example using the weekschedule class with full week (Monday-Sunday) +\documentclass{weekschedule} + +% ============================================ +% Schedule Configuration +% ============================================ + +% Title and author +\scheduletitle{Weekly Schedule - Spring 2026} +\scheduleauthor{Douglas B. Rumbaugh} + +% Time range +\timefrom{8:00} +\timeto{18:00} + +% Display format +\twelvehourtime + +% Week configuration - show full week starting with Monday +\weekfullmonday + +% ============================================ +% Define Event Classes (name and RGB color) +% ============================================ +\eventclass{Courses}{173,216,230} % Light blue +\eventclass{Meetings}{255,218,185} % Peach +\eventclass{OfficeHours}{144,238,144} % Light green +\eventclass{Personal}{221,160,221} % Light purple + +% ============================================ +% Define Events +% Usage: \event{Class}{Name}{Day(s)}{Start}{End} +% ============================================ + +% Monday events +\event{Meetings}{CIE Project Meeting}{Monday}{9:00}{9:30} +\event{Meetings}{Faculty Meeting}{Monday}{10:00}{10:30} +\event{Personal}{(Out of Office)}{Monday}{14:30}{17:00} + +% Tuesday/Thursday events +\event{Courses}{MATH 220 01}{Tuesday,Thursday}{9:00}{10:30} +\event{Courses}{CISC 460 01}{Tuesday,Thursday}{11:15}{12:45} +\event{OfficeHours}{Office Hours}{Tuesday,Thursday}{13:00}{14:30} + +% Wednesday events +\event{Meetings}{Faculty Meeting}{Wednesday}{10:00}{11:00} +\event{Meetings}{Research Meeting}{Wednesday}{14:30}{15:30} + +% Monday/Wednesday/Friday events +\event{Courses}{CISC 225 01}{Monday,Wednesday,Friday}{11:00}{12:00} +\event{Courses}{GEND 112 01}{Monday,Wednesday,Friday}{13:30}{14:30} + +% ============================================ +% Generate the schedule +% ============================================ +\begin{document} +\printschedule +\end{document} diff --git a/weekly_schedule.tex b/examples/weekly_schedule.tex index ec5376a..61def84 100644 --- a/weekly_schedule.tex +++ b/examples/weekly_schedule.tex @@ -7,7 +7,7 @@ % Title and author \scheduletitle{Weekly Schedule - Spring 2026} -\scheduleauthor{Dr. Douglas B. Rumbaugh} +\scheduleauthor{Douglas B. Rumbaugh} % Time range \timefrom{8:00} @@ -17,6 +17,8 @@ \twelvehourtime % \twentyfourhourtime % \weekfullmonday +% +\minutelinesthirty % ============================================ % Define Event Classes (name and RGB color) diff --git a/weekschedule.cls b/weekschedule.cls index 9b387ee..abc35be 100644 --- a/weekschedule.cls +++ b/weekschedule.cls @@ -1,4 +1,34 @@ % weekschedule.cls - A LaTeX class for creating weekly schedule calendars +% +% Copyright (c) 2026, Douglas B. Rumbaugh +% All rights reserved. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions are met: +% +% 1. Redistributions of source code must retain the above copyright notice, +% this list of conditions and the following disclaimer. +% +% 2. Redistributions in binary form must reproduce the above copyright notice, +% this list of conditions and the following disclaimer in the documentation +% and/or other materials provided with the distribution. +% +% 3. Neither the name of the copyright holder nor the names of its +% contributors may be used to endorse or promote products derived from this +% software without specific prior written permission. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +% POSSIBILITY OF SUCH DAMAGE. +% % Usage: % \documentclass{weekschedule} % \scheduletitle{Weekly Schedule - Spring 2026} @@ -95,8 +125,6 @@ } % Layout customization -\newcommand{\setdaywidth}[1]{\renewcommand{\@daywidth}{#1}} -\newcommand{\sethourheight}[1]{\renewcommand{\@hourheight}{#1}} \newcommand{\setpadding}[1]{\renewcommand{\@padding}{#1}} % Minute line configuration |