# LaTeX Classes or Styles for Schedules and/or Calendars?

Maybe TeX isn't the best for this particular problem, but any teachers out there use a particular class or package to plan lessons? Right now I'm just using a spreadsheet, but I always find myself wishing there was a 'lessonplan.sty' or 'classschedule.sty' file out there somewhere so I could still use the LaTeX for equations, tables, lists etc.

A bit of searching yielded a few results, but there doesn't seem to be a consensus. Anyone used any of these:

http://www.ctan.org/tex-archive/macros/latex/contrib/calendar/

http://www.sultanik.com/LaTeX_calendar_style

http://tug.ctan.org/tex-archive/macros/latex/contrib/termcal/

Any recommendations from anyone on best way to make calendar-based class schedules and/or lesson plans?

I use termcal for planning lessons and creating syllabi. I usually start by creating a blank calendar for one semester for just specific days of the week, with holidays marked etc. When I finish the plan, I fill in topics, quizzes and exams, homework info and other details for individual days.

A great advantage is that when I teach the same class again, usually I just need to change the starting day and the holidays, and can keep everything else pretty much unchanged.

This is my typical schedule (parts omitted to make it shorter):

\documentclass{article}
\usepackage{termcal}

% Few useful commands (our classes always meet either on Monday and Wednesday
% or on Tuesday and Thursday)

\newcommand{\MWClass}{%
\calday[Monday]{\classday} % Monday
\skipday % Tuesday (no class)
\calday[Wednesday]{\classday} % Wednesday
\skipday % Thursday (no class)
\skipday % Friday
\skipday\skipday % weekend (no class)
}

\newcommand{\TRClass}{%
\skipday % Monday (no class)
\calday[Tuesday]{\classday} % Tuesday
\skipday % Wednesday (no class)
\calday[Thursday]{\classday} % Thursday
\skipday % Friday
\skipday\skipday % weekend (no class)
}

\newcommand{\Holiday}[2]{%
\options{#1}{\noclassday}
\caltext{#1}{#2}
}

\begin{document}
\paragraph*{Tentative Schedule:}
\begin{center}
\begin{calendar}{1/11/2010}{16} % Semester starts on 1/11/2010 and last for 16
% weeks, including finals week
\setlength{\calboxdepth}{.3in}
\TRClass
% schedule
\caltexton{1}{1.1, 1.2 Review}
\caltextnext{1.3, 1.4 Review}
\caltextnext{2.1, 2.2 Linear Equations}
% ... and so on

% Holidays
\Holiday{1/18/2010}{Martin Luther King Day}
\Holiday{3/8/2010}{Spring Break}
% ... and so on

\options{4/26/2010}{\noclassday} % finals week
\options{4/27/2010}{\noclassday} % finals week
\options{4/28/2010}{\noclassday} % finals week
\options{4/29/2010}{\noclassday} % finals week
\options{4/30/2010}{\noclassday} % finals week
\caltext{4/27/2010}{\textbf{Final Exam}}
\end{calendar}
\end{center}
\end{document}

• Jan, I love your calendar. I was wondering if you know how to make the width of the calendar boxes wider? I am teaching a M-F class and the boxes are too small. Thanks, Tricia – user17253 Aug 3 '12 at 23:23
• @user17253 This post is old, but I had the same question. The answer is: \setlength{\calwidth}{X in} where "X" is replaced by the amount of inches you wish for the width of the calendar. This may put your calendar off-center. You can adjust the margins by using the geometry package: \usepackage[margin=Yin]{geometry} You can tinker with the X and Y until your calendar is wide enough and centered. – user2205916 Feb 6 '14 at 9:45

TikZ/PGF has a nice Calendar library and an example of using it to produce a course schedule.

http://www.diyplanner.com/node/6270

Requires Python to generate the calendar data for the selected year.

I wanted something to look 'modern' 'light' and 'open plan'.

Can be easily internationalized to most European languages (e.g. French, German, Spanish, etc.)

I don't know of one, but a few years' back I developed a layout for a scheme-of-work. It's a bit long to cut-and-paste here so I've put the tex file and pdf file on my website.

It's not very sophisticated: at heart, it's simply a big table and a load of wrapper commands to make it obvious how to put the right pieces in to the right places. If it's of any use, you're welcome to use it!

• This looks great for lesson planning, I will certainly use it. (I wish there was also a way to integrate this with a calendar view). Thanks for the links! – crlane Aug 3 '10 at 19:37
• @PolyCode, Leo: Leo's answer reminded me of the TikZ calendar library (which I've never used before) so I thought I'd give it a go to see if it could be integrated with my scheme of work. All I can say is: TikZ is awesome! I don't know exactly what you (PolyCode) want, but I've added a calendar view to my layout and updated the above links. Take a look - it may not be pretty, but it does work. – Loop Space Aug 4 '10 at 11:56

Just found this question. There is also a very nice ConTeXt module; also, Emacs can export a calendar view to LaTeX (an old feature - it produces LaTeX2.09 code - but works quite nicely. I usually print a month view and stick it to my fridge;).

• Link is dead :( – Arun Debray Nov 13 '18 at 17:33
• Could you please update the link to a working one or include the model here directly? As it is now, this answer is not very useful. – schtandard Jul 29 at 20:56
• @schtandard, thanks for pointing this out, done. – mbork Jul 30 at 11:38

OS: Ubuntu 18.04
TeXlive: texlive 2019, using tlmgr in command line

I saw the link http://www.diyplanner.com/node/6270 in another answer, however it does not offer much explanation of how to use it. I have used that script many times to make different calendars, and it took some time to figure out how it works.

First, you have to run the python script. In Ubuntu 18.04, the default python is python3. So, you can run

cd ~/Downloads/DIY_Organizer/


to go to that directory. In case you extracted the zip file in another location, change the command correspondingly. Then run

python3 gen_Current_Macros.py


. After that, you can run

make


to start compiling the tex files. If there are errors, you can check them in the .log files. Run

ls -laS *.log


to find them. You can change the .tex files to obtain the design you want.