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 /Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty | |
parent | 15d40bdc29e5c0085a2572859794ac9163b6da8e (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/jslectureplanner.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/jslectureplanner/jslectureplanner.sty | 377 |
1 files changed, 341 insertions, 36 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 |