summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/jslectureplanner
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-06 21:59:40 +0000
committerKarl Berry <karl@freefriends.org>2019-02-06 21:59:40 +0000
commit8175c903611cb83ba34395838d8bab6b270c842c (patch)
tree5fc1b13c536add11c90b2a31b57a956de5ede3e6 /Master/texmf-dist/tex/latex/jslectureplanner
parent15d40bdc29e5c0085a2572859794ac9163b6da8e (diff)
jslectureplanner (6feb19)
git-svn-id: svn://tug.org/texlive/trunk@49963 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/jslectureplanner')
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty377
-rw-r--r--Master/texmf-dist/tex/latex/jslectureplanner/jsmembertable.sty4
2 files changed, 343 insertions, 38 deletions
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}