diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex | 537 |
1 files changed, 431 insertions, 106 deletions
diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex index 77c58a8cbc7..60d9a49e7f4 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex +++ b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex @@ -1,7 +1,7 @@ \documentclass[english]{article} -\usepackage{charter} -\usepackage[scaled=0.87]{beramono} +\usepackage[osf]{libertine} +\usepackage[scaled=0.7]{beramono} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \usepackage{url} @@ -13,65 +13,104 @@ \newcommand*\jfmacro[1]{\texttt{#1}} \newcommand*\jfcsmacro[1]{\jfmacro{\textbackslash{#1}}} +% macros +\newcommand*\jslp{\textsf{jslectureplanner}} +\newcommand*\jsmt{\textsf{jsmembertable}} + +% improve layout +\tolerance 1414 +\hbadness 1414 +\emergencystretch 1.5em +\hfuzz 0.3pt +\widowpenalty = 10000 +\vfuzz \hfuzz +\raggedbottom + +\usepackage{microtype} + \usepackage{babel} + \usepackage{listings} \lstset{language={[LaTeX]TeX}, basicstyle={\small\ttfamily}, frame=single} -\renewcommand{\lstlistingname}{Listing} \setcounter{tocdepth}{2} \begin{document} -\title{The jslectureplanner package} +\title{The \jslp\ bundle} \author{Jürgen Spitzmüller% \thanks{Please report issues via \protect\url{https://github.com/jspitz/jslectureplanner}.}} -\date{Version 1.0.2, 2015/07/07} +\date{Version 1.1, 2015/07/15} \maketitle +\begin{abstract} +\noindent The \jslp\ bundle provides a collection of packages +I have written in order to facilitate, and somewhat systematize, +the planning of my university courses and the generation of course material +(and thus, ultimately, to relieve me from some of the more boring and +time-consuming part of teaching work). +Currently, the bundle consists of the main, title-giving package \jslp\ +that provides an interface to central, partly dynamically generated course +metadata as well as routines to generate programs, bibliographies etc., and one +smaller companion package: \jsmt, a package that can construct course +member and presence tables. This manual documents these packages. +\end{abstract} + \tableofcontents +\clearpage + +\part{The \jslp\ package} + +This part of the manual describes the basic user interface of the +\jslp\ package. +Please also refer to the example files included in the bundle in order to +see how \jslp\ is supposed to be used ``in practice''. + \section{Aim of this package} -I have written this package in order to facilitate (and somewhat systematize) -the planning of my university courses. The basic idea of this package -is that you record all general data of a course (date, semester, type, -course title, session titles, general information etc.) in a central -tex file and then input this file to all documents related to the -course (such as the course program, bibliography, scripts, handouts, beamer -presentations, exercises etc.), in order to re-use the recorded data. +The basic idea of the \jslp\ package is that you record +all general data of a course (date, semester, type, course title, session titles, +general information etc.) in a central tex file and then input this +file to all documents related to the course (such as the course program, +bibliography, scripts, handouts, beamer presentations, exercises etc.), +in order to re-use the recorded data. This is particularly helpful if you have standard courses which are held every other semester: instead of changing the data in every single file, you just need to change it once, in the metadata file. -To further facilitate the planning, the package is able to calculate -the session dates of a whole semester, if the sessions of the course -follow at regular intervals. +To further facilitate the planning, the \jslp\ package +is able to calculate the session dates of a whole semester, if the sessions +of the course follow at regular intervals. You only need to set the date of the first session, the package does the rest. Moreover, the package can be used to generate a sectioned bibliography for the course via \textsf{biblatex}. -Since the package was written for my own needs, it is somewhat tied +Since the package has been written for my own needs, it is somewhat tied to my workflow. Particularly, it is tied to my context: teaching in the Humanities at a German-speaking university. Hence, the categorization of the package draws on this context. In particular, all strings and -formats are German. However, it is possible add new categories as well as -to customize and translate the strings. +formats are German. However, it is possible to add new categories as +well as to customize and translate the strings. This is described later in this manual. -This manual describes the basic user interface of the package. Please -also refer to the example files included in the package in order to -see how it is supposed to be used ``in practice''. - +\section{Requirements of \jslp}\label{sec:req-jslp} -\section{Requirements} - -The following packages are required: \textsf{etoolbox}, \textsf{advdate}, -\textsf{xkeyval}, \textsf{datetime}, \textsf{calc}. +The following packages are required and loaded by \jslp: +\begin{itemize} + \setlength\itemsep{2pt} + \item \textsf{advdate} + \item \textsf{calc} + \item \textsf{datetime} + \item \textsf{etoolbox} + \item \textsf{ifthen} + \item \textsf{xkeyval} +\end{itemize} \section{General idea} @@ -107,72 +146,81 @@ or via specific macros (see sec.~\ref{sec:via-macros}). \subsubsection{Course classification\label{sec:lecture-classification}} -The default course classification draws on the conventions at German universities -(or those where I have worked, for that matter). Each type is connected -to a verbose string (such as ``Seminar''), a short form (such as -``SE'') and a form that is used to denote individual sessions (as +The default course classification draws on the conventions at German-speaking +universities (or those where I have worked, for that matter). Each type is +connected to a verbose string (such as \emph{Seminar}), a short form (such as +\emph{SE}) and a form that is used to denote individual sessions (as in ``the second \emph{session} of this course''). \begin{description} -\item [{type=<type>}] Defines the course type. Preset values: +\item [\joption{type=<type>}] defines the course type. Predefined values are: \begin{itemize} -\item \joption{vl}: A lecture (verbose form: ``Vorlesung''\footnote{Sec.~\ref{sec:customizing-strings} -explains how to customize these strings.}, short form: ``VL'', session form: ``Vorlesung'') -\item \joption{ps}: Undergraduate seminar (verbose form: ``Proseminar'', -short form: ``PS'', session form: ``Sitzung'') -\item \joption{se}: Seminar (verbose form: ``Seminar'', short form: ``SE'', -session form: ``Sitzung'') -\item \joption{ue}: Practical course (verbose form: ``Übung'', short -form: ``UE'', session form: ``Sitzung'') -\item \joption{ko}: Colloquium (verbose form: ``Kolloquium'', short form: -``KO'', session form: ``Sitzung'') -\item \joption{pv}: Research seminar (verbose form: ``Privatissimum'', -short form: ``PV'', session form: ``Sitzung'') +\item \joption{vl}: A lecture (verbose form: \emph{Vorlesung}, short form: + \emph{VL}, session form: \emph{Vorlesung}) +\item \joption{ps}: Undergraduate seminar (verbose form: \emph{Proseminar}, + short form: \emph{PS}, session form: \emph{Sitzung}) +\item \joption{se}: Seminar (verbose form: \emph{Seminar}, short form: + \emph{SE}, session form: \emph{Sitzung}) +\item \joption{ue}: Practical course (verbose form: \emph{Übung}, short + form: \emph{UE}, session form: \emph{Sitzung}) +\item \joption{ko}: Colloquium (verbose form: \emph{Kolloquium}, short form: + \emph{KO}, session form: \emph{Sitzung}) +\item \joption{pv}: Research seminar (verbose form: \emph{Privatissimum}, + short form: \emph{PV}, session form: \emph{Sitzung}) \end{itemize} -Sec.~\ref{sec:customizing-strings} explains how to customize and extend this list. -Also cf. sec.~\ref{sec:styles} on the concept of ``styles''. +Section~\ref{sec:customizing-strings} explains how to extend this list and how +to customize the strings. +Please also cf. sec.~\ref{sec:styles} on the concept of ``styles''. \end{description} \subsubsection{Course title} \begin{description} -\item [{title=<title>}] Main title of the course -\item [{titlesep=<separator>}] Separator between title and subtitle -\item [{subtitle=<subtitle>}] Subtitle of the course -\item [{shorttitle=<shorttitle>}] Short title of the course (for headings etc.) +\item [\joption{title=<title>}] Main title of the course +\item [\joption{titlesep=<separator>}] Separator between title and subtitle +\item [\joption{subtitle=<subtitle>}] Subtitle of the course +\item [\joption{shorttitle=<shorttitle>}] Short title of the course (for headings etc.) \end{description} \subsubsection{Date and place\label{sec:date-and-place}} \begin{description} -\item [{semester=<term>,}] where \joption{<term>} is one of +\item [\joption{semester=<term>,}] where \joption{<term>} is one of \begin{itemize} -\item \joption{fs}: Spring term (``Frühjahrssemester'', short form: ``FS'') -\item \joption{hs}: Fall term (``Herbstsemester'', short form: ``HS'') -\item \joption{ss}: Summer term (``Sommersemester'', short form: ``SoSe'') -\item \joption{ws}: Winter term (``Wintersemester'', short form: ``WS'') +\item \joption{fs}: Spring term (\emph{Frühjahrssemester}, short form: \emph{FS}) +\item \joption{hs}: Fall term (\emph{Herbstsemester}, short form: \emph{HS}) +\item \joption{ss}: Summer term (\emph{Sommersemester}, short form: \emph{SoSe}) +\item \joption{ws}: Winter term (\emph{Wintersemester}, short form: \emph{WS}) \end{itemize} Sec.~\ref{sec:customizing-strings} explains how to customize and extend this list. Also cf. sec.~\ref{sec:styles}. -\item [{year=<year>}]~ -\item [{uni=<university>}]~ -\item [{institute=<institute>}]~ -\item [{room=<room>}]~ -\item [{startdate=<startdate>}] Date of the first session (argument\emph{ -must} have the form DD/MM/YYYY). If no startdate is given, \jfcsmacro{today} is used. -\item [{interval=<interval>}] Interval (in days) between two sessions. +\item [\joption{year=<year>}] Year of the term +\item [\joption{uni=<university>}] Your university +\item [\joption{institute=<institute>}] Your institute/department +\item [\joption{room=<room>}] The room where the course generally takes place. + It is possible to specify diverging rooms for individual sessions + (see sec. \ref{sec:lecplan}). +\item [\joption{startdate=<startdate>}] The date of the first session (the argument + \emph{must} have the form DD/MM/YYYY). If no startdate is given, + \jfcsmacro{today} is used. +\item [\joption{interval=<interval>}] The interval (in days) between two sessions. The preset interval is 7 (=~weekly courses). \end{description} \subsubsection{Additional information} \begin{description} -\item [{instructor=<name>}] Instructor's name -\item [{platform=<data>}] Information (e.\,g., URL) of the e-learning platform -\item [{officehours=<data>}] Date of your office hours -\item [{officenumber=<data>}] Your office number +\item [\joption{instructor=<name>}] (General) course instructor's name. + It is possible to specify different or specific instructors for individual sessions + (see sec. \ref{sec:lecplan}). +\item [\joption{platform=<data>}] Information of the e-learning platform + (such as the URL) +\item [\joption{officehours=<data>}] Date of your office hours +\item [\joption{officenumber=<data>}] Your office (room) number \end{description} +\clearpage + \subsection{Via macros\label{sec:via-macros}} The following macros provide an alternative way to set up the course metadata. @@ -199,8 +247,8 @@ description.} \joption{<package options>} might be any set of package options described in sec.~\ref{sub:package-options}, so this macro can actually be used to record all metadata. -\item \jcsmacro{LecTitleSep\{<title separator>\}}: Specify course -title-subtitle separator (e.\,g., ``. '' or `` -- '') +\item \jcsmacro{LecTitleSep\{<title separator>\}}: Specify a separator between course +title and subtitle (e.\,g., ``. '' or `` -- '') \item \jcsmacro{LecSubTitle\{<subtitle>\}}: Record course subtitle \end{itemize} @@ -218,10 +266,10 @@ description.} \end{itemize} \item \jcsmacro{LecUni\{<university>\}}: Record the name of your university -\item \jcsmacro{LecInstitute\{<institute>\}}: Record your institute's name -\item \jcsmacro{LecRoom\{<room>\}}: Record the room where the course takes place -\item \jcsmacro{LecStartDate\{<startdate>\}}: Set date of -the first session (argument\emph{ must} have the form DD/MM/YYYY) +\item \jcsmacro{LecInstitute\{<institute>\}}: Record your institute's/department's name +\item \jcsmacro{LecRoom\{<room>\}}: Record the room where the course (generally) takes place +\item \jcsmacro{LecStartDate\{<startdate>\}}: Set the date of +the first session (the argument \emph{must} have the form DD/MM/YYYY) \item \jcsmacro{LecInterval\{<interval>\}}: Adjust the interval (in days) between two sessions. The preset interval is 7 (=~weekly courses). \item \jcsmacro{SetAutoOffset\{<n>\}\{<days>\}}: Automatically shift all subsequent sessions @@ -232,16 +280,16 @@ the first session (argument\emph{ must} have the form DD/MM/YYYY) also be a negative integer value. \end{itemize} -\subsubsection{Additional information} +\subsubsection{Additional information}\label{ses-add} \begin{itemize} -\item \jcsmacro{LecInstructor\{<name>\}}: Record the instructor's name +\item \jcsmacro{LecInstructor\{<name>\}}: Record the (general) instructor's name \item \jcsmacro{SetOfficeHours\{<office hours>\}}: Record date of your office hours -\item \jcsmacro{SetOfficeNumber\{<office number>\}}: Record your office number +\item \jcsmacro{SetOfficeNumber\{<office number>\}}: Record your office (room) number \item \jcsmacro{SetPlatform\{<platform information>\}}: Record information (such as URL) of the e-learning platform \end{itemize} -\section{Setting up a course schedule\label{sec:lecplan}} +\section{Setting up a course schedule}\label{sec:lecplan} In the metadata file, you can set up a schedule for the course by entering session information in chronological order. This is done via the following @@ -250,7 +298,7 @@ macro: \item \jcsmacro{NewSession[<options>]\{Session title\}} -Valid \joption{<options>}: +Valid \joption{<options>} include: \begin{itemize} \item \joption{titlesep=<separator>}: Separator between session title and subtitle @@ -260,6 +308,7 @@ Valid \joption{<options>}: \item \joption{instructor=<name>}: Specific instructor for this session (if it differs from the usual course instructor) \item \joption{presstudents=<names>}: Students presenting in this session + (used for student presentation lists, see below sec.~\ref{sec:preslists}) \item \joption{room=<room>}: Specific room for this session (if it differs from the usual course room) \item \joption{bibsec=<keyword>}: Session keyword for the bibliography @@ -299,7 +348,7 @@ an optional argument \joption{<span>}, the macro will expand to \textbf{(<span>: Break)} \par\end{center} -E.\,g., \jcsmacro{SetBreak[28.05.-{}-3.06.]\{Whitsun holidays\}} +So for instance, \jcsmacro{SetBreak[28.05.-{}-3.06.]\{Whitsun holidays\}} expands to @@ -331,8 +380,8 @@ Possible \jmacro{<options>} are: the beamer program at this position (more precisely, start a new frame). This also increments the frame counter which is used for subsequent program frame titles. Note that you can insert maximally 3 breaks. -\item \jcsmacro{SetBeamerHook\{<code>\}}: Add arbitrary \LaTeX{} -code to the beamer program +\item \jcsmacro{SetBeamerHook\{<code>\}}: Add arbitrary LaTeX code to the +beamer program \item \jcsmacro{begin\{SessionBlock\}\{<Block title>\}}\\ \ldots{} \\ \jcsmacro{end\{SessionBlock\}}:\\ @@ -369,20 +418,20 @@ of the course title \item \jcsmacro{lecsemshort}: Outputs the short version of the term type (e.\,g., ``WS'') \item \jcsmacro{lecsemverb}: Outputs the verbose version -of the term type (e.\,g., ``Wintersemester'') +of the term type (such as ``Winter\-semester'') \item \jcsmacro{lecyear}: Outputs the year \item \jcsmacro{lecsemester}: Outputs the short version of the semester (e.\,g., ``WS 2014'') \item \jcsmacro{lecsemesterverb}: Outputs the verbose version -of the semester (e.\,g., ``Wintersemester 2014'') +of the semester (such as ``Winter\-semester 2014'') \item \jcsmacro{lecuniversity}: Outputs the university's name -\item \jcsmacro{lecinstitute}: Outputs the institute's name -\item \jcsmacro{lecinstructor}: Outputs the instructor's name -\item \jcsmacro{lecroom}: Outputs the course room +\item \jcsmacro{lecinstitute}: Outputs the institute's/department's name +\item \jcsmacro{lecinstructor}: Outputs the (general) instructor's name +\item \jcsmacro{lecroom}: Outputs the (general) course room \item \jcsmacro{lecplatform}: Outputs information on the e-learning platform \item \jcsmacro{officehours}: Outputs the office hours -\item \jcsmacro{officenumber}: Outputs the office number +\item \jcsmacro{officenumber}: Outputs the office (room) number \end{itemize} \subsection{Generating course programs} @@ -404,7 +453,7 @@ e-learning platform The \jmacro{labeling} environment is defined by the KOMA classes. -The package provides a fallback, however, if another class is used. +The package provides a fallback, however, if a different class is used. \item \jcsmacro{makebeamerprogram[<options>]}: Generates a beamer-suited lecture program from the metadata in the form @@ -428,7 +477,7 @@ a beamer-suited lecture program from the metadata in the form \joption{<options>} can be one of \begin{itemize} \item \joption{title=<title>}: Program title (<Heading>) -\item \joption{options=<bfoptions>}: Beamer frame options. Note that yey-value +\item \joption{options=<bfoptions>}: Beamer frame options. Note that key-value beamer frame options need to be embraced, as in\\ \jcsmacro{makebeamerprogram[options=\{shrink=10\}]} \end{itemize} @@ -464,7 +513,60 @@ So if you specify your session with a keyword via the \joption{bibsec} option, and tag your Bib\TeX{} database entries with that keyword, you will get a list of session-specific literature. -\clearpage + +\subsection{Generating student presentation lists}\label{sec:preslists} + +The package provides macros to produce a list with the name of the students presenting +stuff, or generally being particularly involved, in specific sessions. + +The names of the presenting students are assigned in the metadata to specific sessions +by means of the \joption{presstudents} option of the \jcsmacro{NewSession} command +(see above sec.~\ref{ses-add}). The macro + +\begin{quote} +\jcsmacro{makepreslist} +\end{quote} +outputs a list that consists of the session dates and titles as well as the names of the +presenting students, i.\,e., it expands to code in the form: + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] +\begin{labeling}{\lecprogramlistindent} +\item[<short date>] <session full title>\par + <presenting students> +... +\end{labeling} +\end{lstlisting} +If no presenting students have been assigned to a given session, +an em-dash (---) is output instead. + +A starred version of the macro outputs a ``blank'' presentation list that just consists of +the session dates and titles with enough space to fill in student names manually. +This version might be useful to schedule the presentations of your students in the first +session: + +\begin{quote} +\jcsmacro{makepreslist*} +\end{quote} +For beamer presentations, finally, a specific macro + +\begin{quote} +\jcsmacro{makebeamerpreslist} +\end{quote} +is provided (with no starred version). The main difference is the more compact design that makes +the list fit better on a slide. + +If you want to start your presentation list only from a given session number (e.\,g., since you +do not have any presentations in the first session of the course), you can use + +\begin{quote} +\jcsmacro{setfirstpressession\{<session number>\}} +\end{quote} +to set the first session number to be printed on the list. Likewise, +\begin{quote} +\jcsmacro{setlastpressession\{<session number>\}} +\end{quote} +can be used to determine the last session number to be printed on the list. + \section{Retrieving session-specific information\label{sec:session-specific-info}} @@ -582,8 +684,6 @@ package. By default, the two formats are defined as follows: \newcommand*\lecdateshortformat{% \THEDAY.\,\twodigit{\THEMONTH}.} \end{lstlisting} - - Use \jfcsmacro{renewcommand*} to redefine them. @@ -596,25 +696,18 @@ following macro \begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] \newcommand*\leccancel{\ -- keine \lectypesession} \end{lstlisting} - - The default program string used in beamer frames can be changed by redefining \begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] \newcommand*\lecprogram{Programm} \end{lstlisting} - - The indentation used in program lists can be changed by redefining \begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] \newcommand*\lecprogramlistindent{\textbf{88.\,88.}} \end{lstlisting} - - -Again, use \jfcsmacro{renewcommand{*}} to redefine -those. +Again, use \jfcsmacro{renewcommand{*}} for the redefinitions. \subsection{Using styles}\label{sec:styles} @@ -640,10 +733,242 @@ If you provide me with other style files, in particular translations to other languages than German (but also other university conventions), I consider them for inclusion to the package. +\clearpage + +\part{Companion packages} + +\section{The \jsmt\ package} + +This section of the manual describes the user interface of the \jsmt\ +package. Please also refer to the example files included in the bundle. + +\subsection{Aim of this package} + +This package provides a way to easily generate tables to track the members of a +university course (a table where you, or your students, can fill in names, +student IDs and e-mail adresses) and a table to record their presence, +should this be a requisite at your institute. -\section{History} +The package somewhat integrates with \jslp\ and can use the +metadata and styles of that package where necessary (see part~I of this +manual for details on metadata and styles). +Since the package was written for my own needs, the table design might not fit yours. +However, with some basic LaTeX knowledge, it should not be too hard to adapt it. +Like for \jslp, the default strings are German. +However, it is possible to customize and translate them. +This is described later in this manual. + + +\subsection{Requirements of \jsmt}\label{sec:req-jsmt} + +The following packages are required and loaded by \jsmt: \begin{itemize} + \setlength\itemsep{2pt} + \item \textsf{datatool} (only if the option \joption{datafile} is used) + \item \textsf{ifthen} + \item \textsf{calc} + \item \textsf{longtable} + \item \textsf{hhline} + \item \textsf{xkeyval} +\end{itemize} +\jsmt\ can be used independently of +\jslp\ to some degree. The latter package is only required for specific +features (see below) and must be loaded explicitly in that case. + +\subsection{Loading the package} + +The package is loaded as usual: +\begin{quote} +\jcsmacro{usepackage[<options>]\{jsmembertable\}} +\end{quote} +Currently, one package option is available: +\begin{itemize} + \item \joption{datafile=<csv-file>}: Use external student data file (see sec.~\ref{sec:ext-data}). +\end{itemize} + + +\subsection{Loading external data}\label{sec:ext-data} + +Both course member and presence tables can be filled with external student data. To this end, +the package option \joption{datafile=<csv-file>} is provided. If it is used, the package tries +to access a comma-separated data file. Note that the external file must have the extension \emph{.csv}, +and the extension must be omitted in the option, so +\begin{quote} + \jcsmacro{usepackage[datafile=mystudents]\{jsmembertable\}} +\end{quote} +loads the file \texttt{mystudents.csv}. + +The external csv file must follow the following structure: + +\begin{lstlisting}[language={},basicstyle={\small\ttfamily},frame=single] +Prename1, Surname1, StudentID1, Email1 +Prename2, Surname2, StudentID2, Email2 +... +\end{lstlisting} + +\subsection{Generating a course member table} + +In order to generate a course member table, simply insert + +\begin{quote} +\jcsmacro{makemembertable\{<number of blank rows>\}} +\end{quote} +If an external data file has been loaded, \joption{<number of blank rows>} can either be empty or a positive +integer value. If no external data file has been loaded, \joption{<number of blank rows>} \emph{must} be a +positive integer value. + +If no external data file has been loaded, the command generates a table with \joption{<number of blank rows>} +blank rows, to which your students can fill in their name, student ID and e-mail address. + +If an external data file has been loaded, an appropriate number of rows is generated and the +respective student data is filled in. Additionally, \joption{<number of blank rows>} blank rows are +\emph{appended} after the filled-in rows (for the late birds that have not registered themselves yet). +If the command's argument is empty or \joption{0}, no extra rows are appended. + +The number of columns of the member table is always 3, tracking \emph{student id}, +\emph{name} and \emph{e-mail address}. +If you want to have more or less columns, you need to redefine the +\jcsmacro{makemembertable} command. +The header strings, though, can easily be changed by redefining the following three +macros (using \jfcsmacro{renewcommand*}), for instance like this: + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] +% Student Name +\renewcommand*\jsmnameheader{\textbf{Student name}} +% Student ID +\renewcommand*\jsmidheader{\textbf{Student ID}} +% Email +\renewcommand*\jsemailheader{\textbf{Email address}} +\end{lstlisting} +If you use the \jslp\ package, you can use the \jslp\ +style files in order to store those redefinitions globally. +See the \texttt{german-default.lps} style file for a model.\footnote{% +Note that within styles, you must use \jfcsmacro{newcommand*} instead of +\jfcsmacro{renewcommand*}, since the styles are loaded before the \jsmt\ package.} +Of course, you need to load \jslp\ with the respective \joption{style} option then +(\emph{before} \jsmt). +See above section~\ref{sec:styles} for details on styles. + +\subsection{Generating a presence table} + +Presence tables consist of rows with your students' names and columns for each session +of your course where each student can sign and mark her/his presence in the respective +session. As with the member tables, the package can fill in student data (the student +name in this case) from an external data file if the \joption{datafile} package option +is used. + +The package provides two kinds of presence tables: A presence table with real session dates +and a simpler one just with session numbers (``Session~1'' etc.). The first variant requires +the \jslp\ package, since it uses the course metadata in order to generate a matching number +of columns with the respective session date in the column headers. The second one also works +without \jslp\, since the session numbers can be simply derived from an internal counter and +you can manually set the total number of sessions. + +Note that if you use \jslp, you must load the \jslp\ package and also input the metadata file +\emph{before} \jsmt. + +The first presence table variant (with real session dates) is produced with the following macro: + +\begin{quote} +\jcsmacro{makeprestable\{<number of blank rows>\}} +\end{quote} +As with the member table, an appropriate number of rows, pre-filled with student data, is +generated if an external data file has been loaded. Then, \joption{<number of blank rows>} +blank rows are \emph{appended} after the filled-in rows (if \joption{<number of blank rows>} +is not empty or \joption{0}). If no external data file has been loaded, simply a table with +\joption{<number of blank rows>} blank rows is constructed. + +The number of columns/sessions is automatically calculated from the metadata. If you want a different +number, you can use the optional argument of the command to override this calculation: + +\begin{quote} +\jcsmacro{makeprestable[<number of sessions>]\{<number of blank rows>\}} +\end{quote} +The second kind of presence table (with session numbers instead of session dates) is provided +via the starred version of the command: + +\begin{quote} +\jcsmacro{makeprestable*[<number of sessions>]\{<number of blank rows>\}} +\end{quote} +Like with the unstarred version, if the \jslp\ +metadata is used/available, the number of columns/sessions is calculated from the metadata. +Again, the optional argument can be used to override this calculation. +If the \jslp\ metadata is not used/available, and no session number is given via the optional +argument, the table will use a preset number of sessions, namely 15. The starred version uses, +like the unstarred variant, the external student data if the \joption{datafile} option has been +used. + +For courses of 2--16 sessions, the package tries to produce reasonably sized tables that +fit the page width (more than 16 sessions are currently not supported). +From 7 sessions upwards, two separate tables, each for half a term, +are produced. In general, it is assumed that you use landscape page format for presence tables. +The tables will be too wide for portrait page format. Also, the tables have been optimized for A4 +page size. + +The header strings of the presence tables can be adjusted by redefining the following +macros (using \jfcsmacro{renewcommand*}), for instance like this: + +\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single] +% Student Name +\renewcommand*\jsmnameheader{\textbf{Student name}} +% "Session" string for the starred macro version +\renewcommand*\jsmsession{Session}} +% Session header for the starred macro version +% (\thesession outputs the counter value) +\renewcommand*\jsmsessionheader{\textbf{\jsmsession\ \thesession}} +% The advice for students to sign +\renewcommand*\jssigheader{Students' signature} +\end{lstlisting} +Again, if you use \jslp, you can use the \jslp\ +style files in order to store those redefinitions globally. +See the \texttt{german-default.lps} style file for a model.\footnote{% +Note that within styles, you must use \jfcsmacro{newcommand*} instead of +\jfcsmacro{renewcommand*}, since the styles are loaded before the \jsmt\ package.} +Of course, you need to load \jslp\ with the respective \joption{style} option then +(\emph{before} \jsmt). +See above section~\ref{sec:styles} for details on styles. + +Note, furthermore, that the ``Session'' string (value of \jcsmacro{jsmsession}) is by default +linked to \jslp's \jcsmacro{lectypesession} value if +\jslp\ is loaded before \jsmt. So if \jcsmacro{lectypesession} fits, you do not have to redefine +\jcsmacro{jsmsession}. + + +\clearpage + +\appendix + +\part{Appendix} + +\section{Acknowledgements} + +I could not have written the packages of the \jslp\ bundle without the expertise of the incredible \LaTeX\ +community. The packages heavily rely on functions and features +provided by other packages (which are listed in sec.~\ref{sec:req-jslp} and \ref{sec:req-jsmt}). +I am deeply indepted to the authors of those packages. +Furthermore, \emph{stackexchange} proved to be a great source of knowledge which +provided me with solutions for specific tasks: +\jsmt\ heavily draws on code for dynamic table generation that has been +provided by Herbert Voss (\url{http://tex.stackexchange.com/a/7594}); \jslp\ and \jsmt\ +use code to test for \jfcsmacro{romannumeral} arguments which has been taken from +a \emph{stackexchange} post by Enrico Gregorio (\url{http://tex.stackexchange.com/a/50131}). +Thank you, Herbert and Enrico! Finally, Dominik Waßenhoven tested the package and provided +me with multiple suggestions, which effectively manifested in major new features such as +the \jslp\ style files. Thanks, Dominik. + +\section{Release History} + +\begin{itemize} +\item 2015/07/15 (v. 1.1): + \begin{itemize} + \item Include and document the \jsmt\ package. + \item Add support for student presentation lists. This introduces the new macros + \jcsmacro{makepreslist}, \jcsmacro{makepreslist*}, + \jcsmacro{makebeamerpreslist}, \jcsmacro{setfirstpressession} and + \jcsmacro{setlastpressession}. + \item Major revision of the manual. + \end{itemize} \item 2015/07/07 (v. 1.0.2): \begin{itemize} \item Permit \jcsmacro{LecType} and \jcsmacro{LecYear} in the document body again @@ -658,25 +983,25 @@ them for inclusion to the package. \begin{itemize} \item Lecture types and term types are not hardcoded anymore and can be freely modified and extended via \jcsmacro{DefLecType} and \jcsmacro{DefSemType}. - \item Add option to add the instructor's name to both the course (via + \item Add option to add the instructor's name to both the course (via macro \jcsmacro{LecInstructor} or \joption{instructor} package option) and to specific sessions (via \joption{instructor} option of \jcsmacro{NewSession}). - \item Add option to add names of presenting students to a session (via - \joption{presstudents} option). + \item Add option to add names of presenting students to a session (via option + \joption{presstudents}). \item Add option to record the office number (\jcsmacro{SetOfficeNumber} or package option \joption{officenumber}). \item Fix expansion issue in \joption{options} option of \jcsmacro{makebeamerprogram}. \item Add option to automatically shift all subsequent sessions by a certain value after every \emph{n}th session (\jcsmacro{SetAutoOffset}). - \item Add \joption{cologne} style file. + \item Add \joption{cologne} style file (suggested by Dominik Waßenhoven). \end{itemize} \item 2015/02/08 (v. 0.9): \begin{itemize} \item Add a way to adjust the interval between two sessions (\joption{interval} package option and \jcsmacro{LecInterval} macro). \item Add a way to shift session dates from the regular interval - (macro \jcsmacro{SetLecOffset}). + (by means of macro \jcsmacro{SetLecOffset}). \item Add option and macro to set a room for the course as well as a session-specific room. \item Rename option \joption{weeks} of the \jcsmacro{SetBreaks} macro @@ -695,9 +1020,9 @@ them for inclusion to the package. \item 2015/01/04 (v.\,0.7): \begin{itemize} \item Add macro for resetting \jfcsmacro{today}. - \item Minor corrections in the manual. + \item Minor corrections of the manual. \end{itemize} -\item 2014/12/12 (v.\,0.6\,b): Minor corrections in the manual and example files. +\item 2014/12/12 (v.\,0.6\,b): Minor corrections of the manual and example files. \item 2014/12/12 (v.\,0.6): Initial release to CTAN. \end{itemize} |