diff options
author | Karl Berry <karl@freefriends.org> | 2019-02-06 21:59:40 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-02-06 21:59:40 +0000 |
commit | 8175c903611cb83ba34395838d8bab6b270c842c (patch) | |
tree | 5fc1b13c536add11c90b2a31b57a956de5ede3e6 | |
parent | 15d40bdc29e5c0085a2572859794ac9163b6da8e (diff) |
jslectureplanner (6feb19)
git-svn-id: svn://tug.org/texlive/trunk@49963 c570f23f-e606-0410-a88d-b1316a301751
27 files changed, 496 insertions, 53 deletions
diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/README b/Master/texmf-dist/doc/latex/jslectureplanner/README index bce2aaa8979..88d33a14ce8 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/README +++ b/Master/texmf-dist/doc/latex/jslectureplanner/README @@ -68,6 +68,24 @@ instructions; also have a look at the example files. == CHANGES == +* V. 1.8 (2019-02-06): - Add extradate option to \NewSession to support fix dates. + - Add possibility to enter exam dates that are not added to + the standard program (option exam of \NewSession). + Also add macros to display them separately (\makeexamprogram, + \makebeamerexamprogram) and to access their session number + (\examsesno). + - Switch input format of \LecStartDate to ISO (YYYY-MM-DD). + The old format (DD/MM/YYYY) is still supported for backwards + compatibility. + - Add macros to receive session block numbers (\sesblocknumber, + \SessionBlockNumber{<session no>} and \AdjSessionBlockNumber). + - Add unstyled date formats which allow preceding \DTMsetdatestyle + (the short and long date formats would override such settings). + - Add support for lecture and session start time, duration and thus + also end time calculation. + - Add support for displaying the next semester (\AdjSem and + \AdjSemVerb). + * V. 1.7 (2018-12-14): - Allow options in \makebeamerprogram also with blocksonly. - Add overlayarg option to \makebeamerprogram. - Add macros to receive session block titles (\sesblocktitle, diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf Binary files differindex 11582970c81..1338fe5fe1f 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturebib-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf Binary files differindex 1908b046336..b1aef78500a 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturehandout-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf Binary files differindex 8ab0f33c901..f32220a5d53 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturepresentation-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf Binary files differindex ceb7cb84d65..c6f61798c53 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lectureprogram-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf Binary files differindex 7ad44bcfece..c9ca9c570f1 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/lecturescript-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf Binary files differindex 5fb35082d55..6da6d70bc7b 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-blank-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf Binary files differindex 2e20ed85954..6bdc53cec1b 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/membertable-filled-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex index 8ced8fe3ed6..b78bdbbc9df 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/metadata.tex @@ -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 diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf Binary files differindex f565616c222..3a303b31745 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-blank-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf Binary files differindex b1a1b6535ab..616bf8d0798 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presencetable-filled-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf Binary files differindex 52c663d786f..269c122781d 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/English/presentation-list-english.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf Binary files differindex 8da5b056559..515ad5bcd03 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturebib.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf Binary files differindex 087b60cbdf9..1e4760c6983 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturehandout.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf Binary files differindex 7f7db960e87..9a53bced3f7 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturepresentation.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf Binary files differindex 3f7b2034640..8be601a0be4 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lectureprogram.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf Binary files differindex 7ca03c4f8fe..732f3a538ec 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/lecturescript.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf Binary files differindex f5c89571814..258b8f8e801 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-blank.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf Binary files differindex 6cd24a606df..6af984e2696 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/membertable-filled.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex index f43eb5fdd70..0028d48f1e1 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/metadata.tex @@ -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 diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf Binary files differindex 16a9479b385..fdf98a7fe6a 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-blank.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf Binary files differindex 50e717af094..529cb3e848e 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presencetable-filled.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf Binary files differindex 99ccda93a0c..c1daf8e1571 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/examples/German/presentation-list.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf Binary files differindex 0b3ace42200..b5f16be3237 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf +++ b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.pdf diff --git a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex index 4bbf1b108a9..5d86eee9f57 100644 --- a/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex +++ b/Master/texmf-dist/doc/latex/jslectureplanner/jslectureplanner.tex @@ -72,7 +72,7 @@ \author{Jürgen Spitzmüller% \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 @@ The following packages are required and loaded by \jslp: \item \textsf{etoolbox} \item \textsf{ifthen} \item \textsf{xkeyval} + \item \textsf{xparse} \end{itemize} \pagebreak @@ -229,8 +230,12 @@ Also cf. sec.~\ref{sec:styles}. 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 @@ your university \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 @@ Valid \joption{\jparam{options}} include: (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 @@ will expand to 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 @@ of the term type (such as ``Winter\-semester'') 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 @@ if no explicit short name is given, the normal name will be output (you can chec 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,6 +570,17 @@ your program structure. \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}} @@ -628,9 +668,13 @@ to the current session. This is done as follows. 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 @@ the following macros output general session-specific information: \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 @@ the current session \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 @@ information for sessions that follow or precede the current session by a specifi 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 @@ information for sessions that follow or precede the current session by a specifi \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 @@ title of session number \joption{\jparam{n}}; if 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,9 +801,15 @@ item line for session number \joption{\jparam{n}} in the form \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} +\section{Customizing the output}\label{sec:customizing-strings} \subsection{Defining and customizing course types} @@ -755,14 +837,23 @@ If you need to change or add types, consider the use of styles 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 @@ If you want to redefine the styles, use \jfcsmacro{DTMrenewdatestyle} and change \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,13 +1171,35 @@ provided me with solutions for specific tasks: 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 +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ß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 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}. diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty b/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty index c8e34c2344d..dcbe0ce6049 100644 --- a/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty +++ b/Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty @@ -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,15 +156,24 @@ % fs \def\lecsemverb@fs{Fr\"uhjahrssemester} \def\lecsemshort@fs{FS} +\def\lecsemnext@fs{hs} +\def\lecsemnextny@fs{n} % hs \def\lecsemverb@hs{Herbstsemester} \def\lecsemshort@hs{HS} +\def\lecsemnext@hs{fs} +\def\lecsemnextny@hs{y} % ss \def\lecsemverb@ss{Sommersemester} \def\lecsemshort@ss{SoSe} +\def\lecsemnext@ss{ws} +\def\lecsemnextny@ss{n} % ws \def\lecsemverb@ws{Wintersemester} \def\lecsemshort@ws{WS} +\def\lecsemnext@ws{ss} +\def\lecsemnextny@ws{y} + % 3.) misc. % @@ -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@key{lec}{officenumber}{\def\officenumber{#1}} \define@key{lec}{room}{\def\lecroom{#1}} \define@key{lec}{startdate}{\def\lecstartdate{#1}} +\define@key{lec}{starttime}{\def\@lecstarttime{#1}\def\lecstarttime{\DTMtime{#1}}} +\define@key{lec}{duration}{\def\lecduration{#1}} \define@key{lec}{instructor}{\def\lecinstructor{#1}% \ifx\lecshortinstructor\empty\def\lecshortinstructor{#1}\fi} \define@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,12 +337,59 @@ % +% 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@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} \def\lecsemesterverb{\lecsemverb\ \lecyear} \def\lecfulltitle{\lectitle\lectitlesep\lecsubtitle} \def\sesfulltitle{\sestitle\sestitlesep\sessubtitle} +\def\lecendtime{\jslp@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@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@SetDate[1][\s@v@dT@d@y]{\edef\d@t@{#1}% - \expandafter\t@d@y\d@t@\t@d@y} +\if\jslp@instring{-}{\d@t@}% + \expandafter\iso@t@d@y\d@t@\iso@t@d@y% +\else% + \expandafter\t@d@y\d@t@\t@d@y% +\fi} \def\t@d@y#1/#2/#3\t@d@y{\day#1 \month#2 \year#3 \relax} +\def\iso@t@d@y#1-#2-#3\iso@t@d@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@key{semtype}{next}{\csdef{@ltn}{#1}} +\define@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@semtype@nextny + \csdef{lecsemnextny@#2}{y} + \else + \csdef{lecsemnextny@#2}{n} + \fi% + \protected@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@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@beamerprogram@alerted + \fi + \providebool{uncoveredlist} + \ifKV@beamerprogram@uncover + \booltrue{uncoveredlist} + \else + \boolfalse{uncoveredlist} + \fi + \ifKV@beamerprogram@blocksonly + \else% not \ifKV@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@beamerprogram@blocksonly + }% +} + + % 2) Bibliography % \newcommand\makesessionbib{% @@ -662,6 +829,24 @@ } +% 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@key{session}{shorttitle}{\csdef{@sesshorttitle}{{#1}}\csdef{@usesshorttitle}{{#1}}} \define@key{session}{bibsec}{\csdef{@sesbibsec}{#1}} \define@key{session}{room}{\csdef{@sesroom}{{#1}}} +\define@key{session}{starttime}{\csdef{@sesrtime}{#1}\csdef{@sestime}{\DTMtime{#1}}} +\define@key{session}{duration}{\csdef{@sesduration}{#1}} \define@key{session}{instructor}{% \csdef{@sesinstructor}{{#1}}\csdef{@usesinstructor}{{#1}}% \iftoggle{shortinstrdef}{}{\csdef{@sesshortinstructor}{{#1}}\csdef{@usesshortinstructor}{{#1}}}} @@ -682,17 +869,12 @@ \define@key{session}{presstudents}{\csdef{@sespresstudents}{{#1}}} \define@boolkey{session}{cancel}[true]{} \define@boolkey{session}{draft}[true]{} +\define@key{session}{extradate}{\csdef{@xsesdate}{#1}} +\define@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@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@csxdef{sesdate\thesnum}{% - \bgroup\ifx\lecstartdate\empty\else\jslp@SetDate[\lecstartdate]\fi% - \DTMsetdatestyle{lecdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup} - \protected@csxdef{sesshortdate\thesnum}{% - \bgroup\ifx\lecstartdate\empty\else\jslp@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@csxdef{sesdate\thesnum}{% + \bgroup\ifx\lecstartdate\empty\else\jslp@SetDate[\lecstartdate]\fi% + \DTMsetdatestyle{lecdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup} + \protected@csxdef{sesshortdate\thesnum}{% + \bgroup\ifx\lecstartdate\empty\else\jslp@SetDate[\lecstartdate]\fi% + \DTMsetdatestyle{lecshortdate}\DTMdate{\year-\month-\day+\thedateratio}\egroup} + \protected@csxdef{sesdtmdate\thesnum}{% + \bgroup\ifx\lecstartdate\empty\else\jslp@SetDate[\lecstartdate]\fi% + \DTMdate{\year-\month-\day+\thedateratio}\egroup} + }{% + \protected@csxdef{sesdate\thesnum}{% + \bgroup\DTMsetdatestyle{lecdate}\expandafter\DTMdate{\csuse{@xsesdate}}\egroup} + \protected@csxdef{sesshortdate\thesnum}{% + \bgroup\DTMsetdatestyle{lecshortdate}\expandafter\DTMdate{\csuse{@xsesdate}}\egroup} + \protected@csxdef{sesdtmdate\thesnum}{% + \bgroup\expandafter\DTMdate{\csuse{@xsesdate}}\egroup} + } \protected@csxdef{sestitle\thesnum}{\csuse{@sestitle}\ifcsempty{@sestitle}{\strut}{}} \protected@csxdef{sestitlesep\thesnum}{\csuse{@sestitlesep}} \protected@csxdef{sessubtitle\thesnum}{\csuse{@sessubtitle}} @@ -724,12 +931,16 @@ \protected@csxdef{usesshorttitle\thesnum}{\csuse{@usesshorttitle}} \protected@csxdef{sesbib\thesnum}{\csuse{@sesbibsec}} \protected@csxdef{sesroom\thesnum}{\csuse{@sesroom}} + \protected@csxdef{sestime\thesnum}{\csuse{@sestime}} + \protected@csxdef{sesrtime\thesnum}{\csuse{@sesrtime}} + \protected@csxdef{sesduration\thesnum}{\csuse{@sesduration}} \protected@csxdef{sesinstructor\thesnum}{\csuse{@sesinstructor}} \protected@csxdef{sesshortinstructor\thesnum}{\csuse{@sesshortinstructor}} \protected@csxdef{usesinstructor\thesnum}{\csuse{@usesinstructor}} \protected@csxdef{usesshortinstructor\thesnum}{\csuse{@usesshortinstructor}} \protected@csxdef{sespresstudents\thesnum}{\csuse{@sespresstudents}} \protected@csxdef{sesblock\thesnum}{\csuse{@currentblock}} + \protected@csxdef{sesblockno\thesnum}{\csuse{@currentblockno}} \ifKV@session@cancel \stepcounter{cancellations} \protected@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@session@draft - \ifcsempty{@sestitle}{\protected@csxdef{sestitle\thesnum}{\sestopic}}{} - \fi - \protected@eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]% - \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}} - \protected@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@session@exam + \stepcounter{exams} + \protected@csxdef{examsesno\theexams}{\thesnum} + \protected@eappto\programlistexam{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]% + \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}} + \protected@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@session@draft + \ifcsempty{@sestitle}{\protected@csxdef{sestitle\thesnum}{\sestopic}}{} + \fi + \protected@eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]% + \csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}} + \protected@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,12 +1056,14 @@ \gappto\programlistbeamer{\begin{description}[\lecprogramlistindent]} \protected@xappto\programblocklistbeamer{\noexpand\item[{\Roman{blocks}}.] #1}% \csxdef{@currentblock}{#1}% + \csxdef{@currentblockno}{\Roman{blocks}}% } \newcommand*\EndBlock{% \gappto\programlist{\end{labeling}} \gappto\programlistbeamer{\end{description}} \csxdef{@currentblock}{}% + \csxdef{@currentblockno}{}% } \newcommand*\NewBlock[1]{% @@ -961,18 +1188,23 @@ \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}}% \gdef\@usesshorttitle{\csuse{usesshorttitle#1}}% \gdef\sessubtitle{\csuse{sessubtitle#1}}% \gdef\sesroom{\csuse{sesroom#1}}% + \gdef\sesstarttime{\csuse{sestime#1}}% + \gdef\sesendtime{\jslp@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}}% \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,17 +1228,27 @@ \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@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*. @@ -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,7 +1363,13 @@ % Session block title \newcommand*\SessionBlockTitle[1]{% \LocalSession{#1}% - \lsesblock% + \lsesblocktitle% +} + +% Session block number +\newcommand*\SessionBlockNumber[1]{% + \LocalSession{#1}% + \lsesblocknumber% } % Program line suitable for @@ -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 diff --git a/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty b/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty index 7a33c328913..51f2b2f524f 100644 --- a/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty +++ b/Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty @@ -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} |