Course Index

A template for writing a condensed course index leveraging LaTeX indexing

Category

Other

License

Free to use (MIT)

File

src/main.tex

main.texRead-only preview
% ********** NO NEED TO EDIT THIS FILE UNLESS MODIFYING THE LAYOUT ! **********
% If you want to edit the course title, code and date, please edit 'data.tex'
% *****************************************************************************
% TeX build command:
%   makeindex %.idx -s lib/std.ist|
%       pdflatex -synctex=1 -interaction=nonstopmode %.tex|
%       evince %.pdf|
%       rm %.ilg %.ind %.aux %.synctex.gz
\documentclass[a4paper,10pt]{article}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{makeidx}
\usepackage{vmargin}
\usepackage{pdfescape}
\usepackage{forloop}
\usepackage{graphicx}
\usepackage[document]{ragged2e}
\usepackage[hidelinks]{hyperref}
% setmarginsrb{1}{2}{3}{4}{5}{6}{7}{8}
%  1) Left margin       5) Header heigth
%  2) Top margin        6) Distance between header and text
%  3) Right margin      7) Footer heigth
%  4) Bottom margin     8) Distance between text and footer
\setmarginsrb{1.5cm}{.8cm}{1.5cm}{1cm}{1.2cm}{0.5cm}{1.2cm}{1cm}
% import commands from config.text for defining course's title, code and date for use hereafter
\input{data.tex}
% additional commands for the document
\newcommand{\comment}[1]{}						 % allows to write comments in the .idx file
\def\contextnotesize{\scriptsize}                % allows to set the size of text used to contextualize an entry
% additional commands for the index references
\newcommand{\blankline}[0]{\hspace{\linewidth}}  % fills the reference line with blank
\newcommand{\book}[2]{\coursecode.#1--#2}		 % displays a code when using \book
\newcommand{\lab}[1]{L#1}						 % displays a code when using \lab
\newcounter{i}
\newcommand{\rate}[1]{ \forloop{i}{0}{\value{i}<#1}{$\star$} }  % displays stars, e.g. for rating a tool
% additional commands for graphics in the index references
\DeclareGraphicsExtensions{.png}
\newcommand{\icon}[1]{\includegraphics[height=8pt]{lib/#1} }
\newcommand{\volume}[0]{\includegraphics[height=8pt]{lib/book} }
\newcommand{\linux}[0]{\includegraphics[height=8pt]{lib/linux} }
\newcommand{\mac}[0]{\includegraphics[height=8pt]{lib/mac} }
\newcommand{\win}[0]{\includegraphics[height=8pt]{lib/windows} }
\newcommand{\all}[0]{\includegraphics[height=9pt]{lib/cross-platform} }
\newcommand{\solar}[0]{\includegraphics[height=8pt]{lib/solaris} }
\newcommand{\script}[0]{\includegraphics[height=8pt]{lib/script} }
\newcommand{\python}[0]{\includegraphics[height=8pt]{lib/python} }
\newcommand{\ruby}[0]{\includegraphics[height=8pt]{lib/ruby} }
\newcommand{\powershell}[0]{\includegraphics[height=8pt]{lib/powershell} }
\newcommand{\dotnet}[0]{\includegraphics[height=8pt]{lib/dotnet} }
\newcommand{\go}[0]{\includegraphics[height=8pt]{lib/go} }
\newcommand{\perl}[0]{\includegraphics[height=8pt]{lib/perl} }
\newcommand{\portable}[0]{\includegraphics[height=8pt]{lib/portable} }
\newcommand{\option}[0]{\includegraphics[height=8pt]{lib/option} }
\newcommand{\app}[0]{\includegraphics[height=8pt]{lib/app} }
\newcommand{\tuto}[0]{\includegraphics[height=8pt]{lib/tuto} }
\newcommand{\web}[0]{\includegraphics[height=8pt]{lib/web} }
\newcommand{\cloud}[0]{\includegraphics[height=8pt]{lib/cloud} }
\newcommand{\coin}[0]{\includegraphics[height=6pt]{lib/dollar} }
\newcommand{\note}[0]{\includegraphics[height=8pt]{lib/note} }
\newcommand{\q}[0]{\includegraphics[height=6pt]{lib/question} }
\newcommand{\ios}[0]{\includegraphics[height=8pt]{lib/mac} }
\newcommand{\android}[0]{\includegraphics[height=8pt]{lib/android} }
\newcommand{\file}[0]{\includegraphics[height=8pt]{lib/file} }
\newcommand{\tool}[0]{\includegraphics[height=8pt]{lib/tool} }
\newcommand{\toolb}[0]{\includegraphics[height=8pt]{lib/tool_blue} }
\newcommand{\toolr}[0]{\includegraphics[height=8pt]{lib/tool_red} }
\newcommand{\malware}[0]{\includegraphics[height=8pt]{lib/malware} }
\newcommand{\individual}[0]{\includegraphics[height=8pt]{lib/individual} }
\newcommand{\group}[0]{\includegraphics[height=8pt]{lib/group} }
\newcommand{\executive}[0]{\includegraphics[height=8pt]{lib/executive} }
% licenses
\newcommand{\cc}[0]{\includegraphics[height=16pt]{lib/cc} }
\newcommand{\ccby}[0]{\includegraphics[height=16pt]{lib/cc-by} }
\newcommand{\ccbysa}[0]{\includegraphics[height=16pt]{lib/cc-by-sa} }
% miscellaneous additional commands and shortcuts
\newcommand{\bs}[0]{\textbackslash }               % shortcut for \textbackslash
\newcommand{\cmd}[1]{\texttt{\normalsize #1}}      % displays a text in command format (styled with Courrier New font)
\newcommand{\cmds}[1]{\texttt{\small #1}}		   % command in small format
\newcommand{\cmdxs}[1]{\texttt{\footnotesize #1}}  % command in extra small format
\newcommand{\goto}[0]{$\to$ }
% document definition
\ifdefined\indexauthor \author{\indexauthor} \fi
\title{\coursetitle}
\date{\coursedate}
\fancyhf{}
\fancyhead[C]{\LARGE\textbf{\coursetitle}}
\fancyfoot[L]{\vskip-7pt\ccbysa}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\scriptsize\coursedate\\\courseversion}
\pagestyle{fancy}
\makeatletter
\renewenvironment{theindex}{%
	\setlength{\columnseprule}{0cm}
	\setlength{\columnsep}{1cm}
	\setlength{\parindent}{0cm}
	\setlength{\parskip}{0cm}
	\thispagestyle{plain}
	\let\item\@idxitem
	\relax
	\begin{multicols}{2}}%
	{\end{multicols}}  
\let\ps@plain\ps@fancy
\makeatother
\begin{document}
	{\cc\hskip10pt\vbox{\scriptsize\raggedright %
			\hbox{This work is licensed under a Creative Commons Attribution 4.0 International License\ifdefined\indexauthor , by \indexauthor \fi}
			\hbox{Template available at \url{https://github.com/academic-templates/tex-course-index-template}}}
	\vskip20pt
	\printindex
\end{document}
Preview
Course Index preview
Course Index LaTeX Template | Bibby | Bibby AI