texlive[49963] Master/texmf-dist: jslectureplanner (6feb19)
commits+karl at tug.org
commits+karl at tug.org
Wed Feb 6 22:59:40 CET 2019
Revision: 49963
http://tug.org/svn/texlive?view=revision&revision=49963
Author: karl
Date: 2019-02-06 22:59:40 +0100 (Wed, 06 Feb 2019)
Log Message:
-----------
jslectureplanner (6feb19)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/jslectureplanner/README
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf
trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex
trunk/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty
trunk/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/README
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex 2019-02-06 21:59:24 UTC (rev 49962)
+++ trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex 2019-02-06 21:59:40 UTC (rev 49963)
@@ -13,7 +13,7 @@
\LecUni{University of Narcissia}
\LecInstitute{Department for the History of Science}
\LecInstructor{Dr. Paula Pan}
-\LecStartDate{01/04/2015}
+\LecStartDate{2019-04-01}
%
% Session data
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex 2019-02-06 21:59:24 UTC (rev 49962)
+++ trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex 2019-02-06 21:59:40 UTC (rev 49963)
@@ -13,7 +13,7 @@
\LecUni{Universit\"at Schwanheim}
\LecInstitute{Institut f\"ur Wissenschaftsgeschichte}
\LecInstructor{Dr. Paula Pan}
-\LecStartDate{01/04/2015}
+\LecStartDate{2019-04-01}
%
% Session data
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex 2019-02-06 21:59:24 UTC (rev 49962)
+++ trunk/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex 2019-02-06 21:59:40 UTC (rev 49963)
@@ -72,7 +72,7 @@
\author{J\xFCrgen Spitzm\xFCller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/jslectureplanner}.}}
-\date{Version 1.7, 2018/12/14}
+\date{Version 1.8, 2019/02/06}
\maketitle
@@ -137,6 +137,7 @@
\item \textsf{etoolbox}
\item \textsf{ifthen}
\item \textsf{xkeyval}
+ \item \textsf{xparse}
\end{itemize}
\pagebreak
@@ -229,8 +230,12 @@
it is possible to specify diverging rooms for individual sessions
(see sec. \ref{sec:lecplan})
\item [\joption{startdate=\jparam{startdate}}] The date of the first session (the argument
- \emph{must} have the form DD/MM/YYYY); if no startdate is given,
+ must have the form YYYY-MM-DD or DD/MM/YYYY); if no startdate is given,
\jfcsmacro{today} is used
+\item [\joption{starttime=\jparam{starttime}}] The time the course generally starts (the argument
+ must have the form HH:MM:SS)
+\item [\joption{duration=\jparam{duration}}] The duration of individual course units in minutes.
+ Default is 90.
\item [\joption{interval=\jparam{interval}}] The interval (in days) between two sessions;
the preset interval is 7 (=~weekly courses)
\end{description}
@@ -300,7 +305,11 @@
\item \jcsmacro{LecInstitute\{\jparam{institute}\}}: Record your institute's/department's name
\item \jcsmacro{LecRoom\{\jparam{room}\}}: Record the room where the course (generally) takes place
\item \jcsmacro{LecStartDate\{\jparam{startdate}\}}: Set the date of
-the first session (the argument \emph{must} have the form DD/MM/YYYY)
+ the first session (the argument must have the form YYYY-MM-DD or DD/MM/YYYY)
+\item \jcsmacro{LecStartTime\{\jparam{starttime}\}}: Set the time the course generally starts
+ (the argument must have the form HH:MM:SS)
+\item \jcsmacro{LecDuration\{\jparam{duration}\}}: The duration of individual course units in minutes.
+ Default is 90.
\item \jcsmacro{LecInterval\{\jparam{interval}\}}: Adjust the interval (in days) between two sessions.
The preset interval is 7 (=~weekly courses).
\item \jcsmacro{SetAutoOffset\{\jparam{n}\}\{\jparam{days}\}}: Automatically shift all subsequent sessions
@@ -352,6 +361,10 @@
(used for student presentation lists, see below sec.~\ref{sec:preslists})
\item \joption{room=\jparam{room}}: Room for this session (if it differs
from the usual course room)
+\item \joption{starttime=\jparam{starttime}}: Start time for this session (if it differs
+ from the usual start time). Input must have the form HH:MM.SS.
+\item \joption{duration=\jparam{duration}}: Duration of this session in minutes (if it differs
+ from the usual duration).
\item \joption{bibsec=\jparam{keyword}}: Session keyword for the bibliography
(see below sec.~\ref{sub:bibliographies} for its use)
\item \joption{cancel=\jparam{true|false}}: Marks this session as ``canceled''.
@@ -371,7 +384,14 @@
Furthermore, a canceled session is not counted in the session counter
that is used to retrieve session-specific information
(see below sec.~\ref{sec:session-specific-info}).
-
+\item \joption{exam=\jparam{true|false}}: Marker for exam dates. If \joption{true},
+ this session is put to the exam rather than the program list (see sec.~\ref{sec:lecprog})
+ Useful if you want to list the exam dates separately. Note that exam sessions also get their
+ own additional exam number, which makes them accessible independently from the number of
+ preceding sessions (see sec.~\ref{sec:arbisess} on macro \jcsmacro{examsesno}).
+\item \joption{extradate=\jparam{date}}: Sets a fix date for this session. The date needs
+ to be inserted in ISO format (YYYY-MM-DD). Note that these sessions are excluded from
+ the auto-offset set by \jcsmacro{SetAutoOffset}.
\end{itemize}
\item \jcsmacro{SetBreak[\jparam{span}]\{Break\}}: Add a semester break
(e.\,g., holidays) that affects one session. The macro increments
@@ -468,6 +488,10 @@
the semester (e.\,g., ``WS 2014'')
\item \jcsmacro{lecsemesterverb}: Outputs the verbose version
of the semester (such as ``Winter\-semester 2014'')
+\item \jcsmacro{adjsemester}: Outputs the short version of
+the semester that \emph{follows} this one (e.\,g., ``SoSe 2015'')
+\item \jcsmacro{adjsemesterverb}: Outputs the verbose version
+of the semester that \emph{follows} this one (such as ``Sommer\-semester 2015'')
\item \jcsmacro{lecuniversity}: Outputs the university's name
\item \jcsmacro{lecinstitute}: Outputs the institute's/department's name
\item \jcsmacro{lecinstructor}: Outputs the (general) instructor's name
@@ -476,6 +500,11 @@
there is a unique short name by the test
\jcsmacro{iftoggle\{uniquelecshortinstructor\}\{\jparam{true}\}\{\jparam{false}\}})
\item \jcsmacro{lecroom}: Outputs the (general) course room
+\item \jcsmacro{lecstarttime}: Outputs the (general) start time
+\item \jcsmacro{lecduration}: Outputs the (general) duration of single units
+\item \jcsmacro{lecendtime}: Outputs the (general) end time (this is calculated from the start time and duration)
+\item \jcsmacro{lecslot}: Outputs the time slot of the lecture (starttime\,--\,endtime). Please refer to
+ sec.~\ref{sec:custdate} for customization possibilities of the output.
\item \jcsmacro{lecplatform}: Outputs information on the
e-learning platform
\item \jcsmacro{officehours}: Outputs the office hours
@@ -541,7 +570,18 @@
\end{itemize}
\end{itemize}
+%
+If you want to separate the dates of your exams from the program, you can flag them with
+the \joption{exam} option of \jcsmacro{NewSession}. Those session entries will not be included
+in the output of the above two macros. However, there are the macros
+\begin{itemize}
+ \item \jcsmacro{makeexamprogram}. This generates a list with exam dates in the same layout
+ than \jcsmacro{makeprogram}.
+ \item \jcsmacro{makebeamerexamprogram}. This generates a list with exam dates in the same layout
+ than \jcsmacro{makebeamerprogram} (and takes the same options).
+\end{itemize}
+
\subsection{Generating bibliographies\label{sub:bibliographies}}
The package provides macros for easy generation of sectioned bibliographies
@@ -628,9 +668,13 @@
Use \jcsmacro{ThisSession\{\jparam{n}\}} to tell the package
which session is current. \joption{\jparam{n}} is an integer value, e.\,g.
-\jcsmacro{ThisSession\{3\}} for the 3rd session of
-the lecture.
+\jcsmacro{ThisSession\{3\}} for the 3rd session of the lecture.
+If you are looking for exam session particularly, you can also use
+\jcsmacro{examsesno\{\jparam{n}\}} with the number of the exam to get the
+corresponding session number. Thus, \verb|\ThisSession{\examsesno{2}}|
+will set the current session to the second exam session, notwithstanding
+the number of preceding (non-exam) sessions.
\subsection{Generating session-specific information for the current session}
@@ -640,6 +684,14 @@
\item \jcsmacro{sesdate}: Date of the current session
\item \jcsmacro{sesshortdate}: Date of the current session,
short form (no year)
+\item \jcsmacro{sesdtmdate}: Date of the current session in the form of the
+ \textsf{datetime2} package, without explicit style setting.
+ This can be used if you want to locally set another
+ date style (via \jfcsmacro{DTMsetdatestyle}, which is to be set before this macro then)
+\item \jcsmacro{sesstarttime}: Start time of the current session
+\item \jcsmacro{sesendtime}: End time of the current session (calculated from start time and duration).
+\item \jcsmacro{seslot}: Time slot of the current session (starttime\,--\,endtime). Please refer to
+sec.~\ref{sec:custdate} for customization possibilities of the output.
\item \jcsmacro{sestitle}: Main title of the current session
\item \jcsmacro{sesshorttitle}: Short title of the current session; if
no explicit short title is specified, the normal [main] title is output
@@ -651,6 +703,7 @@
\item \jcsmacro{sesfulltitle}: Full title of the current
session (title, separator, subtitle)
\item \jcsmacro{sesblocktitle}: The title of the current session block (if available).
+\item \jcsmacro{sesblocknumber}: The number of the current session block (if available).
\item \jcsmacro{sesinstructor}: Current session's instructor's name; if you want to output this name only if it differs from the general instructor (\jcsmacro{lecinstructor}), use the starred version \jcsmacro{sesinstructor*} (furthermore, you can check whether
there is a unique session instructor by the test
\jcsmacro{iftoggle\{uniquesesinstructor\}\{\jparam{true}\}\{\jparam{false}\}})
@@ -675,9 +728,19 @@
title of the adjacent session; if no explicit short title is specified, the normal main title is output
\item \jcsmacro{AdjSessionBlockTitle[\jparam{offset}]}: Outputs the session block
title of the adjacent session (if available)
+ \item \jcsmacro{AdjSessionBlockNumber[\jparam{offset}]}: Outputs the session block
+ number of the adjacent session (if available)
\item \jcsmacro{AdjSessionDate[\jparam{offset}]}: Outputs the date of the adjacent session
\item \jcsmacro{AdjSessionShortDate[\jparam{offset}]}: Outputs the short
date (no year) of the adjacent session
+ \item \jcsmacro{AdjSessionDTMDate[\jparam{offset}]}: Date of the adjacent session in the form of the
+ \textsf{datetime2} package, without explicit style setting.
+ This can be used if you want to locally set another
+ date style (via \jfcsmacro{DTMsetdatestyle}, which is to be set before this macro then)
+ \item \jcsmacro{AdjSessionStartTime[\jparam{offset}]}: Outputs the start time of the adjacent session
+ \item \jcsmacro{AdjSessionEndTime[\jparam{offset}]}: Outputs the end time of the adjacent session
+ \item \jcsmacro{AdjSessionTimeSlot[\jparam{offset}]}: Outputs the time slot of the adjacent session
+ (starttime\,--\,endtime). Please refer to sec.~\ref{sec:custdate} for customization possibilities of the output.
\item \jcsmacro{AdjSessionInstructor[\jparam{offset}]}: Outputs the name of the instructor of the adjacent session
\item \jcsmacro{AdjSessionInstructor*[\jparam{offset}]}: Outputs the name of the instructor of the adjacent session if it differs from the general instructor (\jcsmacro{lecinstructor})
\item \jcsmacro{AdjSessionShortInstructor[\jparam{offset}]}: Outputs the short name (or normal name, if no short name was specified) of the instructor of the adjacent session if it differs from the general instructor (\jcsmacro{lecshortinstructor})
@@ -687,7 +750,7 @@
\end{itemize}
Via the numerical \joption{\jparam{offset}} option, you can specify which session, relative to the current one, you want to output. The default is \joption{1}, i.\,e., \jcsmacro{AdjSessionTitle} without argument outputs the title of the \emph{next} session. Negative values are valid: \jcsmacro{AdjSessionTitle[-1]}, thus, outputs the title of the \emph{previous} session.
-\subsection{Generating session-specific information for an arbitrary session}
+\subsection{Generating session-specific information for an arbitrary session}\label{sec:arbisess}
Independent of the value of \jcsmacro{ThisSession},
you can retrieve the following information for arbitrary sessions
@@ -702,10 +765,23 @@
no explicit short title is specified, the normal main title is output
\item \jcsmacro{SessionBlockTitle\{\jparam{n}\}}: Outputs the session block title
of session number \joption{\jparam{n}} (if available)
+\item \jcsmacro{SessionBlockNumber\{\jparam{n}\}}: Outputs the (formatted) session block number
+of session number \joption{\jparam{n}} (if available)
\item \jcsmacro{SessionDate\{\jparam{n}\}}: Outputs the date of
session number \joption{\jparam{n}}
\item \jcsmacro{SessionShortDate\{\jparam{n}\}}: Outputs the short
date (no year) of session number \joption{\jparam{n}}
+\item \jcsmacro{SessionDTMDate\{\jparam{n}\}}: Date of the session session number \joption{\jparam{n}}
+in the form of the \textsf{datetime2} package, without explicit style setting.
+This can be used if you want to locally set another
+date style (via \jfcsmacro{DTMsetdatestyle}, which is to be set before this macro then)
+\item \jcsmacro{SessionStartTime\{\jparam{n}\}}: Outputs the start time of
+session number \joption{\jparam{n}}
+\item \jcsmacro{SessionEndTime\{\jparam{n}\}}: Outputs the end time of
+session number \joption{\jparam{n}}
+\item \jcsmacro{SessionTimeSlot\{\jparam{n}\}}: Outputs the time slot of
+session number \joption{\jparam{n}} (starttime\,--\,endtime). Please refer to
+sec.~\ref{sec:custdate} for customization possibilities of the output.
\item \jcsmacro{SessionInstructor\{\jparam{n}\}}: Outputs the name of the instructor of session
number \joption{\jparam{n}}
\item \jcsmacro{SessionInstructor*\{\jparam{n}\}}: Outputs the name of the instructor of session
@@ -725,10 +801,16 @@
\end{lstlisting}
\end{itemize}
+%
+Note once more that if you are looking for exam session particularly, you can also use
+\jcsmacro{examsesno\{\jparam{n}\}} with the number of the exam to get the
+corresponding session number. For instance, \verb|\SessionDate{\examsesno{2}}|
+will return the date of the second exam session, notwithstanding the global
+session number of this session.
+
\section{Customizing the output}\label{sec:customizing-strings}
-
\subsection{Defining and customizing course types}
The following macro allows to define new course types and redefine existing ones:
@@ -755,14 +837,23 @@
The available term (semester) types can be changed and extended via the macro:
\begin{itemize}
-\item \jcsmacro{DefSemType\{\jparam{key}\}\{\jparam{short form}\}\{\jparam{verbose form}\}}
+\item \jcsmacro{DefSemType[\jparam{options}]\{\jparam{key}\}\{\jparam{short form}\}\{\jparam{verbose form}\}}
\end{itemize}
-Thus, you could add a new term type ``spring term'' via
+%
+Options are in key-value form and include:
\begin{itemize}
-\item \jcsmacro{DefSemType\{st\}\{ST\}\{Spring Term\}}
+ \item \joption{next=\jparam{key}}: the key of the semester type that follows this one in the academic cycle. This is
+ used for \jcsmacro{adjsemester} and \jcsmacro{adjsemesterverb}.
+ \item \joption{nextny=\jparam{true|false}}: if true, the semester that follows this one is in a different year. This is
+ used for \jcsmacro{adjsemester} and \jcsmacro{adjsemesterverb}.
\end{itemize}
+Thus, you could add a new term types ``spring term'' and ``autumn term'' via
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,moretexcs={[1]{DefSemType}}]
+\DefSemType[next=at]{st}{ST}{Spring Term}
+\DefSemType[next=st,nextny=true]{at}{AT}{Autumn Term}
+\end{lstlisting}
-\subsection{Customizing the date format}\label{sec:custdate}
+\subsection{Customizing the date and time format}\label{sec:custdate}
If you need to change the date format, redefine the date styles \textsf{lecdate}
(for the long format) and \textsf{lecshortdate} (for the short format),
@@ -793,8 +884,15 @@
\end{lstlisting}
Note that it is not necessary to include the \jfcsmacro{DTMDisplaydate} redefinition in the date format redefinition (since it does never change here). Note further that the macro \jfcsmacro{DTMenglishmonthname} used in the short date redefinition requires the \textsf{datetime2-english} module to be loaded (see \textsf{datetime2} manual for details).
+Note, further, that if you need another date style only locally, you can set an arbitrary date style on the dtm date provided by \jcsmacro{lectdtmdate} and friends, i.\,e., \verb|\DTMsetdatestyle{mydatestyle}\lecdtmdate|.
+
Note, finally, that the date redefinition syntax used up to \jslp\ 1.2 is no longer supported, since it relied on the \textsf{datetime} package, which is deprecated (and superseded by \textsf{datetime2}). The \jslp\ package will issue a warning if you try to use the old syntax.
+As for the time span, this is defined in the macro \jcsmacro{jstimeslot}, which is predefined as follows and can be adjusted to your needs:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,moretexcs={[1]{jstimeslot}}]
+\newcommand*\jstimeslot[2]{#1\,--\,#2}
+\end{lstlisting}
+The time format itself can be customized by the means of \textsf{datetime2} (timestyle). Please refer to the package's manual for details.
\subsection{Misc. customizing}\label{sec:misccust}
@@ -1073,7 +1171,9 @@
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\xDFenhoven tested the package and provided
+The time span calculation uses code provided by Christian Hupfer at
+\url{https://tex.stackexchange.com/a/473552/19291}.
+Thank you, Herbert, Enrico and Christian! Finally, Dominik Wa\xDFenhoven tested the package and provided
me with multiple suggestions, which effectively manifested in major new features such as
the \jslp\ style files. Thanks, Dominik.
@@ -1080,6 +1180,26 @@
\section{Release History}
\begin{itemize}
+\item 2019/02/06 (v. 1.8):
+ \begin{itemize}
+ \item Add support for displaying the next semester (\jcsmacro{AdjSem} and
+ \jcsmacro{AdjSemVerb}).
+ \item Add support for lecture and session start time, duration and thus also end time
+ calculation.
+ \item Add unstyled date formats which allow preceding \jfcsmacro{DTMsetdatestyle}
+ (the short and long date formats would override such settings).
+ \item Add \joption{extradate} option to \jcsmacro{NewSession} to support fix dates.
+ See sec.~\ref{sec:lecplan}.
+ \item Add possibility to enter exam dates that are not added to the standard program
+ (option \joption{exam} of \jcsmacro{NewSession}); see sec.~\ref{sec:lecplan}.
+ Also add macros to display them separately (\jcsmacro{makeexamprogram},
+ \jcsmacro{makebeamerexamprogram}; see sec.~\ref{sec:lecprog}) and to
+ access their session number (\jcsmacro{examsesno}; see sec.~\ref{sec:arbisess}).
+ \item Switch input format of \jcsmacro{LecStartDate} to ISO (YYYY-MM-DD). The old format
+ (DD/MM/YYYY) is still supported for backwards compatibility.
+ \item Add macros to receive session block numbers (\jcsmacro{sesblocknumber},\\
+ \jcsmacro{SessionBlockNumber\{\jparam{session no}\}} and \jcsmacro{AdjSessionBlockNumber}).
+ \end{itemize}
\item 2018/12/14 (v. 1.7):
\begin{itemize}
\item Allow \joption{options} in \jcsmacro{makebeamerprogram} also with \joption{blocksonly}.
Modified: trunk/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty 2019-02-06 21:59:24 UTC (rev 49962)
+++ trunk/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty 2019-02-06 21:59:40 UTC (rev 49963)
@@ -23,8 +23,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2018/12/14}
-\def\fileversion{1.7}
+\def\filedate{2019/02/06}
+\def\fileversion{1.8}
\def\filename{jslectureplanner.sty}
\NeedsTeXFormat{LaTeX2e}
@@ -53,7 +53,10 @@
\def\lecsubtitle{}
\def\lecshorttitle{}
\def\lecsemshort{}
+\def\lecnsemshort{}
\def\lecsemverb{}
+\def\lecnsemverb{}
+\def\lecnsemny{}
\def\lecyear{}
\def\lecsemester{}
\def\lecsemesterverb{}
@@ -61,6 +64,9 @@
\def\lecinstitute{}
\def\lecroom{}
\def\lecstartdate{}
+\def\lecstarttime{}
+\def\@lecstarttime{}
+\def\lecduration{90}
\def\lecinstructor{}
\def\lecshortinstructor{}
@@ -70,6 +76,8 @@
\def\sesdate{}
\def\sesshortdate{}
+\def\sesdtmdate{}
+\def\sesstarttime{}
\def\sestitle{}
\def\sesshorttitle{}
\def\sestitlesep{}
@@ -77,7 +85,9 @@
\def\sesnr{}
\def\programlist{}
+\def\programlistexam{}
\def\programlistbeamer{}
+\def\programlistbeamerexam{}
\def\programblocklistbeamer{\item}
\def\jsbiblist{}
@@ -102,6 +112,7 @@
\newcounter{loopcounter}
\newcounter{adjsession}
\newcounter{sestopic}
+\newcounter{exams}
%
@@ -145,16 +156,25 @@
% fs
\def\lecsemverb at fs{Fr\"uhjahrssemester}
\def\lecsemshort at fs{FS}
+\def\lecsemnext at fs{hs}
+\def\lecsemnextny at fs{n}
% hs
\def\lecsemverb at hs{Herbstsemester}
\def\lecsemshort at hs{HS}
+\def\lecsemnext at hs{fs}
+\def\lecsemnextny at hs{y}
% ss
\def\lecsemverb at ss{Sommersemester}
\def\lecsemshort at ss{SoSe}
+\def\lecsemnext at ss{ws}
+\def\lecsemnextny at ss{n}
% ws
\def\lecsemverb at ws{Wintersemester}
\def\lecsemshort at ws{WS}
+\def\lecsemnext at ws{ss}
+\def\lecsemnextny at ws{y}
+
% 3.) misc.
%
% Suffix to cancelled sessions
@@ -165,6 +185,8 @@
\newcommand*\lecprogramlistindent{\textbf{88.\,88.}}
% Session topic placeholder
\newcommand*\sestopic{Thema~\thesestopic}
+% Time slot
+\newcommand*\jstimeslot[2]{#1\,--\,#2}
%
@@ -215,6 +237,10 @@
}{}
\def\lecsemshort{\csuse{lecsemshort@#1}}%
\def\lecsemverb{\csuse{lecsemverb@#1}}%
+ \def\@nextsem{\csuse{lecsemnext@#1}}%
+ \def\lecnsemshort{\csuse{lecsemshort@\@nextsem}}%
+ \def\lecnsemverb{\csuse{lecsemverb@\@nextsem}}%
+ \def\lecnsemny{\csuse{lecsemnextny@#1}}%
}%
}
\DeclareOptionX{semester}{\setkeys{lec}{lecsem=#1}}
@@ -237,6 +263,8 @@
\define at key{lec}{officenumber}{\def\officenumber{#1}}
\define at key{lec}{room}{\def\lecroom{#1}}
\define at key{lec}{startdate}{\def\lecstartdate{#1}}
+\define at key{lec}{starttime}{\def\@lecstarttime{#1}\def\lecstarttime{\DTMtime{#1}}}
+\define at key{lec}{duration}{\def\lecduration{#1}}
\define at key{lec}{instructor}{\def\lecinstructor{#1}%
\ifx\lecshortinstructor\empty\def\lecshortinstructor{#1}\fi}
\define at key{lec}{shortinstructor}{%
@@ -264,6 +292,7 @@
\DeclareOptionX{uni}{\setkeys{lec}{uni={#1}}}
\DeclareOptionX{institute}{\setkeys{lec}{institute={#1}}}
\DeclareOptionX{startdate}{\setkeys{lec}{startdate=#1}}
+\DeclareOptionX{starttime}{\setkeys{lec}{starttime=#1}}
\DeclareOptionX{instructor}{\setkeys{lec}{instructor={#1}}}
\DeclareOptionX{shortinstructor}{\setkeys{lec}{shortinstructor={#1}}}
\DeclareOptionX{platform}{\setkeys{lec}{platform={#1}}}
@@ -294,6 +323,8 @@
\newcommand*{\LecInstitute}[1]{\setkeys{lec}{institute={#1}}}
\newcommand*{\LecRoom}[1]{\setkeys{lec}{room={#1}}}
\newcommand*{\LecStartDate}[1]{\setkeys{lec}{startdate=#1}}
+\newcommand*{\LecStartTime}[1]{\setkeys{lec}{starttime=#1}}
+\newcommand*{\LecDuration}[1]{\setkeys{lec}{duration=#1}}
\newcommand*{\LecInstructor}[2][\empty]{%
\ifx#1\empty
\setkeys{lec}{instructor={#2}}%
@@ -306,6 +337,51 @@
%
+% END TIME CALCULATION
+%
+% Courtesy of Christian Hupfer at
+% https://tex.stackexchange.com/a/473552/19291
+\RequirePackage{xparse}
+
+\ExplSyntaxOn
+\cs_generate_variant:Nn \int_set:Nn {NV}
+\cs_generate_variant:Nn \seq_set_split:Nnn {NVn,NVV}
+
+\NewDocumentCommand{\jslp at endtime}{+m+m}{%
+ \group_begin:
+ \tl_set:Nx \l_tmpa_tl {#1}
+ \seq_set_split:NVV \l_tmpa_seq {\c_colon_str} \l_tmpa_tl
+ \exp_args:NNx \fp_set:Nn \l_tmpa_fp {\seq_item:Nn \l_tmpa_seq {1} * 3600 + \seq_item:Nn \l_tmpa_seq {2} * 60 + \seq_item:Nn \l_tmpa_seq {3} }
+ \exp_args:NNx \fp_set:Nn \l_tmpb_fp {#2 * 60}
+ \fp_add:Nn \l_tmpa_fp {#2 * 60}
+ \tl_clear:N \l_tmpa_tl
+ % Compute hours
+ \exp_args:NNx \int_set:Nn \l_tmpa_int {\int_div_truncate:nn {\fp_use:N \l_tmpa_fp}{3600}}
+ \int_compare:nNnTF {\l_tmpa_int } > {23} {% After midnight?
+ \exp_args:NNx \int_set:Nn \l_tmpb_int {\int_mod:nn {\l_tmpa_int } {24}}
+ }{%
+ \int_set_eq:NN \l_tmpb_int \l_tmpa_int
+ }
+ \tl_put_right:NV \l_tmpa_tl {\l_tmpb_int\c_colon_str}
+
+ % Remaining seconds, split them into minutes and seconds
+ \int_set:Nn \l_tmpa_int {\fp_use:N \l_tmpa_fp}
+
+ \exp_args:NNx \int_set:Nn \l_tmpb_int {\int_mod:nn {\l_tmpa_int}{3600}}
+ \exp_args:NNx \int_set:Nn \l_tmpb_int {\int_div_truncate:nn {\l_tmpb_int}{60}}
+ \tl_put_right:NV \l_tmpa_tl {\l_tmpb_int\c_colon_str}
+ % Finally splitting: Seconds
+ \exp_args:NNx \int_set:Nn \l_tmpa_int {\int_mod:nn {\l_tmpa_int}{60}}
+ \tl_put_right:NV \l_tmpa_tl {\l_tmpa_int}
+ % Display output:
+ \exp_args:NV \DTMtime{\l_tmpa_tl}
+ \group_end:
+}
+
+\ExplSyntaxOff
+
+
+%
% CONCATENATED VARIABLES
%
\def\lecsemester{\lecsemshort~\lecyear}
@@ -312,6 +388,8 @@
\def\lecsemesterverb{\lecsemverb\ \lecyear}
\def\lecfulltitle{\lectitle\lectitlesep\lecsubtitle}
\def\sesfulltitle{\sestitle\sestitlesep\sessubtitle}
+\def\lecendtime{\jslp at endtime{\@lecstarttime}{\lecduration}}
+\newcommand*\lecslot{\jstimeslot{\lecstarttime}{\lecendtime}}
%
@@ -329,11 +407,28 @@
}
+%
+% CUSTOM TIME FORMATS (via datetime2)
+%
+
+\DTMsettimestyle{default}
+\DTMsetup{showseconds=false}
+
+% Simple test for substring. Courtesy of egreg at
+% https://tex.stackexchange.com/a/26873/19291
+\def\jslp at instring#1#2{TT\fi\begingroup
+ \edef\x{\endgroup\noexpand\in@{#1}{#2}}\x\ifin@}
+
% Internal macro to set the date to a given value
% Code adapted from advdate.sty
\newcommand\jslp at SetDate[1][\s at v@dT at d@y]{\edef\d at t@{#1}%
- \expandafter\t at d@y\d at t@\t at d@y}
+\if\jslp at instring{-}{\d at t@}%
+ \expandafter\iso at t@d at y\d at t@\iso at t@d at y%
+\else%
+ \expandafter\t at d@y\d at t@\t at d@y%
+\fi}
\def\t at d@y#1/#2/#3\t at d@y{\day#1 \month#2 \year#3 \relax}
+\def\iso at t@d at y#1-#2-#3\iso at t@d at y{\day#3 \month#2 \year#1 \relax}
%
@@ -381,9 +476,22 @@
% 2.) Term types
%
-\newcommand*\DefSemType[3]{%
- \csdef{lecsemshort@#1}{#2}
- \csdef{lecsemverb@#1}{#3}
+\define at key{semtype}{next}{\csdef{@ltn}{#1}}
+\define at boolkey{semtype}{nextny}[true]{}
+\newcommand*\DefSemType[4][\empty]{%
+ \csdef{@ltn}{}
+ \csdef{lecsemshort@#2}{#3}
+ \csdef{lecsemverb@#2}{#4}
+ \ifx\empty#1\else%
+ \setkeys{semtype}{nextny=false}%
+ \setkeys{semtype}{#1}%
+ \ifKV at semtype@nextny
+ \csdef{lecsemnextny@#2}{y}
+ \else
+ \csdef{lecsemnextny@#2}{n}
+ \fi%
+ \protected at csxdef{lecsemnext@#2}{\csuse{@ltn}}%
+ \fi
}
%
% Kept for backwards compatibility
@@ -437,6 +545,14 @@
\end{labeling}
}
+% Exam schedule generation
+\newcommand\makeexamprogram{%
+ \raggedright
+ \begin{labeling}{\lecprogramlistindent}
+ \programlistexam
+ \end{labeling}
+}
+
%
% Beamer program generation
\define at key{beamerprogram}{title}{\csdef{@bptitle}{#1}}
@@ -655,6 +771,57 @@
}
+% Exam schedule generation
+\newcommand\makebeamerexamprogram[1][]{%
+ \csdef{@bptitle}{\lecprogram}
+ \def\btitleapp{}
+ \numdef\pframes{\thefbreaks + 1}
+ \setkeys{beamerprogram}{alerted=false}
+ \setkeys{beamerprogram}{blocksonly=false}
+ \setkeys{beamerprogram}{uncover=false}
+ \setkeys{beamerprogram}{#1}
+ \def\bpdescbeg{\begin{description}[\lecprogramlistindent]}
+ \ifKV at beamerprogram@alerted
+ \fi
+ \providebool{uncoveredlist}
+ \ifKV at beamerprogram@uncover
+ \booltrue{uncoveredlist}
+ \else
+ \boolfalse{uncoveredlist}
+ \fi
+ \ifKV at beamerprogram@blocksonly
+ \else% not \ifKV at beamerprogram@blocksonly
+ % All but last slide(s) are generated in what follows
+ \@ifundefined{programlistbeamerexam}{}{%
+ \def\btitleapp{}
+ \ifcsdef{@bpolarg}{%
+ \ifcsdef{@bpopts}{%
+ \begingroup\edef\tempa{\endgroup\noexpand%
+ \begin{frame}<\csuse{@bpolarg}>[\csuse{@bpopts}]{\csuse{@bptitle}\btitleapp}}\tempa
+ }{%
+ \begin{frame}<\csuse{@bpolarg}>[label=beamerprogram]{\csuse{@bptitle}\btitleapp}
+ }%
+ }{%
+ \ifcsdef{@bpopts}{%
+ \begingroup\edef\tempa{\endgroup\noexpand%
+ \begin{frame}[\csuse{@bpopts}]{\csuse{@bptitle}\btitleapp}}\tempa
+ }{%
+ \begin{frame}[label=beamerprogram]{\csuse{@bptitle}\btitleapp}
+ }%
+ }%
+ \ifbool{uncoveredlist}{%
+ \begin{description}[<+->][\lecprogramlistindent]
+ }{%
+ \begin{description}[\lecprogramlistindent]
+ }
+ \programlistbeamerexam
+ \end{description}
+ \end{frame}
+ \fi%\else\ifKV at beamerprogram@blocksonly
+ }%
+}
+
+
% 2) Bibliography
%
\newcommand\makesessionbib{%
@@ -662,7 +829,25 @@
}
+% 3) Next term
%
+\newcommand*\adjsemester{%
+ \def\lecnyear{\lecyear}%
+ \ifthenelse{\equal{\lecnsemny}{y}}{%
+ \def\lecnyear{\the\numexpr\lecyear+1\relax}%
+ }{}%
+ \lecnsemshort~\lecnyear%
+}
+
+\newcommand*\adjsemesterverb{%
+ \def\lecnyear{\lecyear}%
+ \ifthenelse{\equal{\lecnsemny}{y}}{%
+ \def\lecnyear{\the\numexpr\lecyear+1\relax}%
+ }{}%
+ \lecnsemverb~\lecnyear%
+}
+
+%
% COURSE SCHEDULE SETUP
%
@@ -674,6 +859,8 @@
\define at key{session}{shorttitle}{\csdef{@sesshorttitle}{{#1}}\csdef{@usesshorttitle}{{#1}}}
\define at key{session}{bibsec}{\csdef{@sesbibsec}{#1}}
\define at key{session}{room}{\csdef{@sesroom}{{#1}}}
+\define at key{session}{starttime}{\csdef{@sesrtime}{#1}\csdef{@sestime}{\DTMtime{#1}}}
+\define at key{session}{duration}{\csdef{@sesduration}{#1}}
\define at key{session}{instructor}{%
\csdef{@sesinstructor}{{#1}}\csdef{@usesinstructor}{{#1}}%
\iftoggle{shortinstrdef}{}{\csdef{@sesshortinstructor}{{#1}}\csdef{@usesshortinstructor}{{#1}}}}
@@ -682,17 +869,12 @@
\define at key{session}{presstudents}{\csdef{@sespresstudents}{{#1}}}
\define at boolkey{session}{cancel}[true]{}
\define at boolkey{session}{draft}[true]{}
+\define at key{session}{extradate}{\csdef{@xsesdate}{#1}}
+\define at boolkey{session}{exam}[true]{}
%
\newcommand*\NewSession[2][]{%
\stepcounter{sesunit}
\stepcounter{sestopic}
- \ifnumcomp{\value{autooffsettrigger}}{>}{0}{%
- \ifnumcomp{\value{autooffsettrigger}}{=}{\value{autooffsetcounter}}{%
- \addtocounter{sesoffset}{\theautooffset}%
- \setcounter{autooffsetcounter}{1}%
- }{\stepcounter{autooffsetcounter}}
- }{}
- \setcounter{dateratio}{(\thesesunit-1)*\thelecinterval+\thesesoffset}
\setcounter{snum}{\thesesunit-\thecancellations}
\protected at csxdef{sesnr\thesnum}{\thesnum}
\togglefalse{shortinstrdef}
@@ -702,21 +884,46 @@
\csdef{@usesshorttitle}{}
\csdef{@sesbibsec}{}
\csdef{@sesroom}{\lecroom}
+ \csdef{@sestime}{\lecstarttime}
+ \csdef{@sesrtime}{\@lecstarttime}
+ \csdef{@sesduration}{\lecduration}
\csdef{@sesinstructor}{\lecinstructor}
\csdef{@sesshortinstructor}{\lecshortinstructor}
\csdef{@usesinstructor}{}
\csdef{@usesshortinstructor}{}
\csdef{@sespresstudents}{}
+ \csdef{@xsesdate}{}
\setkeys{session}{cancel=false}
\setkeys{session}{draft=false}
+ \setkeys{session}{exam=false}
\setkeys{session}{#1}
\csdef{@sestitle}{#2}
- \protected at csxdef{sesdate\thesnum}{%
- \bgroup\ifx\lecstartdate\empty\else\jslp at SetDate[\lecstartdate]\fi%
- \DTMsetdatestyle{lecdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup}
- \protected at csxdef{sesshortdate\thesnum}{%
- \bgroup\ifx\lecstartdate\empty\else\jslp at SetDate[\lecstartdate]\fi%
- \DTMsetdatestyle{lecshortdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup}
+ % only calculate the date if it is not fixed via extradate.
+ \ifcsempty{@xsesdate}{%
+ \setcounter{dateratio}{(\thesesunit-1)*\thelecinterval+\thesesoffset}
+ \ifnumcomp{\value{autooffsettrigger}}{>}{0}{%
+ \ifnumcomp{\value{autooffsettrigger}}{=}{\value{autooffsetcounter}}{%
+ \addtocounter{sesoffset}{\theautooffset}%
+ \setcounter{autooffsetcounter}{1}%
+ }{\stepcounter{autooffsetcounter}}
+ }{}
+ \protected at csxdef{sesdate\thesnum}{%
+ \bgroup\ifx\lecstartdate\empty\else\jslp at SetDate[\lecstartdate]\fi%
+ \DTMsetdatestyle{lecdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup}
+ \protected at csxdef{sesshortdate\thesnum}{%
+ \bgroup\ifx\lecstartdate\empty\else\jslp at SetDate[\lecstartdate]\fi%
+ \DTMsetdatestyle{lecshortdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup}
+ \protected at csxdef{sesdtmdate\thesnum}{%
+ \bgroup\ifx\lecstartdate\empty\else\jslp at SetDate[\lecstartdate]\fi%
+ \DTMdate{\year-\month-\day+\thedateratio}\egroup}
+ }{%
+ \protected at csxdef{sesdate\thesnum}{%
+ \bgroup\DTMsetdatestyle{lecdate}\expandafter\DTMdate{\csuse{@xsesdate}}\egroup}
+ \protected at csxdef{sesshortdate\thesnum}{%
+ \bgroup\DTMsetdatestyle{lecshortdate}\expandafter\DTMdate{\csuse{@xsesdate}}\egroup}
+ \protected at csxdef{sesdtmdate\thesnum}{%
+ \bgroup\expandafter\DTMdate{\csuse{@xsesdate}}\egroup}
+ }
\protected at csxdef{sestitle\thesnum}{\csuse{@sestitle}\ifcsempty{@sestitle}{\strut}{}}
\protected at csxdef{sestitlesep\thesnum}{\csuse{@sestitlesep}}
\protected at csxdef{sessubtitle\thesnum}{\csuse{@sessubtitle}}
@@ -724,6 +931,9 @@
\protected at csxdef{usesshorttitle\thesnum}{\csuse{@usesshorttitle}}
\protected at csxdef{sesbib\thesnum}{\csuse{@sesbibsec}}
\protected at csxdef{sesroom\thesnum}{\csuse{@sesroom}}
+ \protected at csxdef{sestime\thesnum}{\csuse{@sestime}}
+ \protected at csxdef{sesrtime\thesnum}{\csuse{@sesrtime}}
+ \protected at csxdef{sesduration\thesnum}{\csuse{@sesduration}}
\protected at csxdef{sesinstructor\thesnum}{\csuse{@sesinstructor}}
\protected at csxdef{sesshortinstructor\thesnum}{\csuse{@sesshortinstructor}}
\protected at csxdef{usesinstructor\thesnum}{\csuse{@usesinstructor}}
@@ -730,6 +940,7 @@
\protected at csxdef{usesshortinstructor\thesnum}{\csuse{@usesshortinstructor}}
\protected at csxdef{sespresstudents\thesnum}{\csuse{@sespresstudents}}
\protected at csxdef{sesblock\thesnum}{\csuse{@currentblock}}
+ \protected at csxdef{sesblockno\thesnum}{\csuse{@currentblockno}}
\ifKV at session@cancel
\stepcounter{cancellations}
\protected at eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
@@ -739,18 +950,32 @@
\noexpand\bgroup\noexpand\bfseries\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}%
\noexpand\leccancel\noexpand\egroup}
\else
- \ifKV at session@draft
- \ifcsempty{@sestitle}{\protected at csxdef{sestitle\thesnum}{\sestopic}}{}
- \fi
- \protected at eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
- \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
- \protected at eappto\programlistbeamer{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
- \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
- \ifcsempty{sesbib\thesnum}{}{%
- \xappto\jsbiblist{\noexpand\section{\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}%
- \noexpand\nocite{*}%
- \noexpand\printbibliography[keyword=\csuse{sesbib\thesnum},heading=none]}%
- }%
+ \ifKV at session@exam
+ \stepcounter{exams}
+ \protected at csxdef{examsesno\theexams}{\thesnum}
+ \protected at eappto\programlistexam{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
+ \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
+ \protected at eappto\programlistbeamerexam{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
+ \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
+ \ifcsempty{sesbib\thesnum}{}{%
+ \xappto\jsbiblist{\noexpand\section{\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}%
+ \noexpand\nocite{*}%
+ \noexpand\printbibliography[keyword=\csuse{sesbib\thesnum},heading=none]}%
+ }%
+ \else
+ \ifKV at session@draft
+ \ifcsempty{@sestitle}{\protected at csxdef{sestitle\thesnum}{\sestopic}}{}
+ \fi
+ \protected at eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
+ \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
+ \protected at eappto\programlistbeamer{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
+ \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}
+ \ifcsempty{sesbib\thesnum}{}{%
+ \xappto\jsbiblist{\noexpand\section{\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}}%
+ \noexpand\nocite{*}%
+ \noexpand\printbibliography[keyword=\csuse{sesbib\thesnum},heading=none]}%
+ }%
+ \fi
\fi
}
@@ -831,6 +1056,7 @@
\gappto\programlistbeamer{\begin{description}[\lecprogramlistindent]}
\protected at xappto\programblocklistbeamer{\noexpand\item[{\Roman{blocks}}.] #1}%
\csxdef{@currentblock}{#1}%
+ \csxdef{@currentblockno}{\Roman{blocks}}%
}
\newcommand*\EndBlock{%
@@ -837,6 +1063,7 @@
\gappto\programlist{\end{labeling}}
\gappto\programlistbeamer{\end{description}}
\csxdef{@currentblock}{}%
+ \csxdef{@currentblockno}{}%
}
\newcommand*\NewBlock[1]{%
@@ -961,6 +1188,7 @@
\gdef\sesnr{\csuse{sesnr#1}}%
\gdef\sesdate{\csuse{sesdate#1}}%
\gdef\sesshortdate{\csuse{sesshortdate#1}}%
+ \gdef\sesdtmdate{\csuse{sesdtmdate#1}}%
\gdef\sestitle{\csuse{sestitle#1}}%
\gdef\sestitlesep{\csuse{sestitlesep#1}}%
\gdef\sesshorttitle{\csuse{sesshorttitle#1}}%
@@ -967,6 +1195,9 @@
\gdef\@usesshorttitle{\csuse{usesshorttitle#1}}%
\gdef\sessubtitle{\csuse{sessubtitle#1}}%
\gdef\sesroom{\csuse{sesroom#1}}%
+ \gdef\sesstarttime{\csuse{sestime#1}}%
+ \gdef\sesendtime{\jslp at endtime{\csuse{sesrtime#1}}{\csuse{sesduration#1}}}%
+ \gdef\sesslot{\jstimeslot{\sesstarttime}{\sesendtime}}%
\gdef\@sesinstructor{\csuse{sesinstructor#1}}%
\gdef\@sesshortinstructor{\csuse{sesshortinstructor#1}}%
\gdef\@usesinstructor{\csuse{usesinstructor#1}}%
@@ -973,6 +1204,7 @@
\gdef\@usesshortinstructor{\csuse{usesshortinstructor#1}}%
\gdef\sespresstudents{\csuse{sespresstudents#1}}%
\gdef\sesblocktitle{\csuse{sesblock#1}}%
+ \gdef\sesblocknumber{\csuse{sesblockno#1}}%
\if\hfuzz\@usesinstructor\hfuzz%
\global\togglefalse{uniquesesinstructor}%
\else
@@ -996,19 +1228,29 @@
\gdef\lsesnr{\csuse{sesnr#1}}%
\gdef\lsesdate{\csuse{sesdate#1}}%
\gdef\lsesshortdate{\csuse{sesshortdate#1}}%
+ \gdef\lsesdtmdate{\csuse{sesdtmdate#1}}%
\gdef\lsestitle{\csuse{sestitle#1}}%
\gdef\lsestitlesep{\csuse{sestitlesep#1}}%
\gdef\lsesshorttitle{\csuse{sesshorttitle#1}}%
\gdef\lsessubtitle{\csuse{sessubtitle#1}}%
\gdef\lsesroom{\csuse{sesroom#1}}%
+ \gdef\lsesstarttime{\csuse{sestime#1}}%
+ \gdef\lsesendtime{\jslp at endtime{\csuse{sesrtime#1}}{\csuse{sesduration#1}}}%
+ \gdef\lsesslot{\jstimeslot{\lsesstarttime}{\lsesendtime}}%
\gdef\@lsesinstructor{\csuse{sesinstructor#1}}%
\gdef\@lsesshortinstructor{\csuse{sesshortinstructor#1}}%
\gdef\@lusesinstructor{\csuse{usesinstructor#1}}%
\gdef\@lusesshortinstructor{\csuse{usesshortinstructor#1}}%
\gdef\lsespresstudents{\csuse{sespresstudents#1}}%
- \gdef\lsesblock{\csuse{sesblock#1}}%
+ \gdef\lsesblocktitle{\csuse{sesblock#1}}%
+ \gdef\lsesblocknumber{\csuse{sesblockno#1}}%
}
+% Get the session no of exam no #1
+\newcommand*\examsesno[1]{%
+ \csuse{examsesno#1}%
+}
+
% \ses[short]instructor and \ses[short]instructor*.
% The starred versions only output something if the session
% instructor differs from the general lecture instructor
@@ -1050,6 +1292,28 @@
\lsesshortdate%
}
+% Short date
+\newcommand*\SessionDTMDate[1]{%
+ \LocalSession{#1}%
+ \lsesdtmdate%
+}
+
+% Time
+\newcommand*\SessionStartTime[1]{%
+ \LocalSession{#1}%
+ \lsesstarttime%
+}
+% End Time
+\newcommand*\SessionEndTime[1]{%
+ \LocalSession{#1}%
+ \lsesendtime%
+}
+% Time Slot
+\newcommand*\SessionTimeSlot[1]{%
+ \LocalSession{#1}%
+ \lsesslot%
+}
+
% Room
\newcommand*\SessionRoom[1]{%
\LocalSession{#1}%
@@ -1099,9 +1363,15 @@
% Session block title
\newcommand*\SessionBlockTitle[1]{%
\LocalSession{#1}%
- \lsesblock%
+ \lsesblocktitle%
}
+% Session block number
+\newcommand*\SessionBlockNumber[1]{%
+ \LocalSession{#1}%
+ \lsesblocknumber%
+}
+
% Program line suitable for
% a description or labeling list
\newcommand*\MakeProgramline[1]{%
@@ -1126,6 +1396,41 @@
\SessionDate{\theadjsession}%
\fi
}
+% Short date
+\newcommand*\AdjSessionShortDate[1][1]{%
+ \ifnum0<0\sesnr\relax
+ \setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
+ \SessionShortDate{\theadjsession}%
+ \fi
+}
+% DTM Date
+\newcommand*\AdjSessionDTMDate[1][1]{%
+ \ifnum0<0\sesnr\relax
+ \setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
+ \SessionDTMDate{\theadjsession}%
+ \fi
+}
+% Time
+\newcommand*\AdjSessionStartTime[1][1]{%
+ \ifnum0<0\sesnr\relax
+ \setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
+ \SessionStartTime{\theadjsession}%
+ \fi
+}
+% Time
+\newcommand*\AdjSessionEndTime[1][1]{%
+ \ifnum0<0\sesnr\relax
+ \setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
+ \SessionEndTime{\theadjsession}%
+ \fi
+}
+% Time
+\newcommand*\AdjSessionTimeSlot[1][1]{%
+ \ifnum0<0\sesnr\relax
+ \setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
+ \SessionTimeSlot{\theadjsession}%
+ \fi
+}
% Short title
\newcommand*\AdjSessionShortTitle[1][1]{%
\ifnum0<0\sesnr\relax
@@ -1147,11 +1452,11 @@
\SessionBlockTitle{\theadjsession}%
\fi
}
-% Short date
-\newcommand*\AdjSessionShortDate[1][1]{%
+% Session block number
+\newcommand*\AdjSessionBlockNumber[1][1]{%
\ifnum0<0\sesnr\relax
\setcounter{adjsession}{\numexpr\sesnr+#1\relax}%
- \SessionShortDate{\theadjsession}%
+ \SessionBlockNumber{\theadjsession}%
\fi
}
% Room
Modified: trunk/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty 2019-02-06 21:59:24 UTC (rev 49962)
+++ trunk/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty 2019-02-06 21:59:40 UTC (rev 49963)
@@ -24,8 +24,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2017/12/14}
-\def\fileversion{1.7}
+\def\filedate{2019/02/06}
+\def\fileversion{1.8}
\def\filename{jsmembertable.sty}
\NeedsTeXFormat{LaTeX2e}
More information about the tex-live-commits
mailing list