summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/jslectureplanner
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-05-12 03:03:03 +0000
committerNorbert Preining <norbert@preining.info>2020-05-12 03:03:03 +0000
commit675bcc9067ccef91624a9eca025506a4ce1d37b3 (patch)
tree03c68d83f091c038ad751310955938e407b46ff4 /macros/latex/contrib/jslectureplanner
parentfd95e879442e050790f06552eb074eeb7c5b4cab (diff)
CTAN sync 202005120303
Diffstat (limited to 'macros/latex/contrib/jslectureplanner')
-rw-r--r--macros/latex/contrib/jslectureplanner/README3
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/lecturebib-english.pdfbin85104 -> 85104 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/lecturehandout-english.pdfbin57923 -> 57923 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/lecturepresentation-english.pdfbin84606 -> 84606 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/lectureprogram-english.pdfbin56905 -> 56905 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/lecturescript-english.pdfbin34575 -> 34575 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/membertable-blank-english.pdfbin28442 -> 28442 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/membertable-filled-english.pdfbin28450 -> 28450 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/presencetable-blank-english.pdfbin27974 -> 27974 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/presencetable-filled-english.pdfbin26752 -> 26752 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/English/presentation-list-english.pdfbin25688 -> 25688 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/lecturebib.pdfbin85488 -> 85488 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/lecturehandout.pdfbin59148 -> 59148 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/lecturepresentation.pdfbin84992 -> 84992 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/lectureprogram.pdfbin57899 -> 57899 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/lecturescript.pdfbin34772 -> 34772 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/membertable-blank.pdfbin28387 -> 28387 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/membertable-filled.pdfbin28509 -> 28509 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/presencetable-blank.pdfbin27896 -> 27896 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/presencetable-filled.pdfbin26784 -> 26784 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/examples/German/presentation-list.pdfbin26864 -> 26864 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/jslectureplanner.pdfbin457635 -> 478838 bytes
-rw-r--r--macros/latex/contrib/jslectureplanner/jslectureplanner.sty284
-rw-r--r--macros/latex/contrib/jslectureplanner/jslectureplanner.tex266
-rw-r--r--macros/latex/contrib/jslectureplanner/jsmembertable.sty4
25 files changed, 429 insertions, 128 deletions
diff --git a/macros/latex/contrib/jslectureplanner/README b/macros/latex/contrib/jslectureplanner/README
index 9d1d09cea4..5f9da681e1 100644
--- a/macros/latex/contrib/jslectureplanner/README
+++ b/macros/latex/contrib/jslectureplanner/README
@@ -68,6 +68,9 @@ instructions; also have a look at the example files.
== CHANGES ==
+* V. 1.11 (2020-05-11): - Allow for customization of program and presentation lists.
+ - Correctly set first session in presentation list.
+
* V. 1.10 (2020-04-30): - Do not increment session topic counter for cancelled sessions
and breaks.
- Add session option topicnumber to reset topic number in draft mode.
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/lecturebib-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/lecturebib-english.pdf
index 8ee99de4cd..ae0607b469 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/lecturebib-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/lecturebib-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/lecturehandout-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/lecturehandout-english.pdf
index 174d1d40bb..54a3fe2529 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/lecturehandout-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/lecturehandout-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/lecturepresentation-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/lecturepresentation-english.pdf
index 1b8c27038b..1d90d42f0c 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/lecturepresentation-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/lecturepresentation-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/lectureprogram-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/lectureprogram-english.pdf
index 4be1c094ff..ac529f1a97 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/lectureprogram-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/lectureprogram-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/lecturescript-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/lecturescript-english.pdf
index 9183f3c466..f949f346aa 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/lecturescript-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/lecturescript-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/membertable-blank-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/membertable-blank-english.pdf
index 25e1e676aa..8618c4a994 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/membertable-blank-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/membertable-blank-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/membertable-filled-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/membertable-filled-english.pdf
index 52869faee2..619c62ce97 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/membertable-filled-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/membertable-filled-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/presencetable-blank-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/presencetable-blank-english.pdf
index 0d7916a417..826431e8b1 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/presencetable-blank-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/presencetable-blank-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/presencetable-filled-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/presencetable-filled-english.pdf
index 3374c33a77..a51da79d67 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/presencetable-filled-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/presencetable-filled-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/English/presentation-list-english.pdf b/macros/latex/contrib/jslectureplanner/examples/English/presentation-list-english.pdf
index 77bdc57f1f..3effb91217 100644
--- a/macros/latex/contrib/jslectureplanner/examples/English/presentation-list-english.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/English/presentation-list-english.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/lecturebib.pdf b/macros/latex/contrib/jslectureplanner/examples/German/lecturebib.pdf
index adfe94072a..a30a8d7d73 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/lecturebib.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/lecturebib.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/lecturehandout.pdf b/macros/latex/contrib/jslectureplanner/examples/German/lecturehandout.pdf
index 3995760271..4df0807950 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/lecturehandout.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/lecturehandout.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/lecturepresentation.pdf b/macros/latex/contrib/jslectureplanner/examples/German/lecturepresentation.pdf
index f34eddf664..7494a82a67 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/lecturepresentation.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/lecturepresentation.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/lectureprogram.pdf b/macros/latex/contrib/jslectureplanner/examples/German/lectureprogram.pdf
index a45658c81f..326beb4f68 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/lectureprogram.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/lectureprogram.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/lecturescript.pdf b/macros/latex/contrib/jslectureplanner/examples/German/lecturescript.pdf
index 4b40e63e82..d353936903 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/lecturescript.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/lecturescript.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/membertable-blank.pdf b/macros/latex/contrib/jslectureplanner/examples/German/membertable-blank.pdf
index da80a5f638..3ecc09846a 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/membertable-blank.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/membertable-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/membertable-filled.pdf b/macros/latex/contrib/jslectureplanner/examples/German/membertable-filled.pdf
index f4185515ed..303b1dae40 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/membertable-filled.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/membertable-filled.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/presencetable-blank.pdf b/macros/latex/contrib/jslectureplanner/examples/German/presencetable-blank.pdf
index cd749eb1e0..464a6c7f3b 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/presencetable-blank.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/presencetable-blank.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/presencetable-filled.pdf b/macros/latex/contrib/jslectureplanner/examples/German/presencetable-filled.pdf
index fd02425a5f..d09b39386e 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/presencetable-filled.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/presencetable-filled.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/examples/German/presentation-list.pdf b/macros/latex/contrib/jslectureplanner/examples/German/presentation-list.pdf
index 8c0539e596..0050ea7045 100644
--- a/macros/latex/contrib/jslectureplanner/examples/German/presentation-list.pdf
+++ b/macros/latex/contrib/jslectureplanner/examples/German/presentation-list.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/jslectureplanner.pdf b/macros/latex/contrib/jslectureplanner/jslectureplanner.pdf
index bedf7f4281..7a0c357150 100644
--- a/macros/latex/contrib/jslectureplanner/jslectureplanner.pdf
+++ b/macros/latex/contrib/jslectureplanner/jslectureplanner.pdf
Binary files differ
diff --git a/macros/latex/contrib/jslectureplanner/jslectureplanner.sty b/macros/latex/contrib/jslectureplanner/jslectureplanner.sty
index 975be52a0d..72c62b27fa 100644
--- a/macros/latex/contrib/jslectureplanner/jslectureplanner.sty
+++ b/macros/latex/contrib/jslectureplanner/jslectureplanner.sty
@@ -23,8 +23,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2020/04/30}
-\def\fileversion{1.10}
+\def\filedate{2020/05/11}
+\def\fileversion{1.11}
\def\filename{jslectureplanner.sty}
\NeedsTeXFormat{LaTeX2e}
@@ -88,7 +88,7 @@
\def\programlistexam{}
\def\programlistbeamer{}
\def\programlistbeamerexam{}
-\def\programblocklistbeamer{\item}
+\def\programblocklistbeamer{}
\def\jsbiblist{}
@@ -182,7 +182,7 @@
% Beamer program heading
\newcommand*\lecprogram{Programm}
% Program list indentation
-\newcommand*\lecprogramlistindent{\textbf{88.\,88.}}
+\newcommand*\lecprogramlistindent{\programdateformat{88.\,88.}}
% Session topic placeholder
\newcommand*\sestopic{Thema~\thesestopic}
% Time slot
@@ -540,19 +540,93 @@
% Program generation
\newcommand\makeprogram{%
\raggedright
- \begin{labeling}{\lecprogramlistindent}
+ \begin{ProgramList}
\programlist
- \end{labeling}
+ \end{ProgramList}
}
% Exam schedule generation
\newcommand\makeexamprogram{%
\raggedright
- \begin{labeling}{\lecprogramlistindent}
+ \begin{ProgramListExam}
\programlistexam
- \end{labeling}
+ \end{ProgramListExam}
}
+% Customizable environments for formatting the lists
+
+% ProgramList is the list used in programs
+\newenvironment{ProgramList}{\begin{labeling}{\lecprogramlistindent}}{\end{labeling}}
+
+% BeamerProgramList is the list used in programs
+\newenvironment{BeamerProgramList}{\begin{description}[\lecprogramlistindent]}{\end{description}}
+
+% ProgramListExam is the list used in exam schedules. By default identical to ProgramList
+\newenvironment{ProgramListExam}{\begin{ProgramList}}{\end{ProgramList}}
+
+% PresList is the list of presenting students
+\newenvironment{PresList}{\begin{ProgramList}}{\end{ProgramList}}
+
+% Same for beamer
+\newenvironment{BeamerPresList}{\begin{BeamerProgramList}}{\end{BeamerProgramList}}
+\newenvironment{BeamerProgramListExam}{\begin{BeamerProgramList}}{\end{BeamerProgramList}}
+
+% Text format of program date
+\newcommand*\programdateformat[1]{\textbf{#1}}
+% Text format of program title
+\newcommand*\sestitleformat[1]{#1}
+% Text format of program title
+\newcommand*\exsestitleformat[1]{\sestitleformat{#1}}
+% Text format of canceled session titles
+\newcommand*\cansestitleformat[1]{\textbf{#1}}
+% Text format of block titles
+\newcommand*\blocktitleformat[1]{\textbf{#1}}
+% Text format of block numbers
+\newcommand*\blocknumberformat[1]{\textbf{#1}}
+
+% ProgramListItem, ProgramListExamItem and ProgramListCancelItem typeset a single
+% session. Arguments: #1 date, #2 title, #3 title separator, #4 subtitle
+\newcommand*{\ProgramListItem}[4]{\item[\programdateformat{#1}] \sestitleformat{#2#3#4}}
+\newcommand*{\ProgramListCancelItem}[4]{\item[\programdateformat{#1}] \cansestitleformat{#2#3#4\leccancel}}
+\newcommand*{\ProgramListExamItem}[4]{\item[\programdateformat{#1}] \exsestitleformat{#2#3#4}}
+
+% Same for beamer program
+\newcommand*{\BeamerProgramListItem}[4]{\item[\programdateformat{#1}] \sestitleformat{#2#3#4}}
+\newcommand*{\BeamerProgramListCancelItem}[4]{\item[\programdateformat{#1}] \cansestitleformat{#2#3#4\leccancel}}
+\newcommand*{\BeamerProgramListExamItem}[4]{\item[\programdateformat{#1}] \exsestitleformat{#2#3#4}}
+
+% PresListItem: Program line for student presentation lists
+\newcommand*\PresListItem[4]{%
+ \ProgramListItem{#1}{#2}{#3}{#4}%
+}
+
+\newcommand*\BeamerPresListItem[4]{%
+ \BeamerProgramListItem{#1}{#2}{#3}{#4}%
+}
+
+% Format break event
+\newcommand*\breakevent[3]{\ifx\empty#1 #2\else#1#2#3\fi}
+% ProgramListBreak typesets a break.
+% Optional argument is date range, #2 is name of break
+\newcommand*{\ProgramListBreak}[2][\empty]%
+{%
+ \begin{center}
+ (\breakevent{#1}{: }{#2})
+ \end{center}%
+}
+
+% ProgramListBlock
+\newenvironment{ProgramListBlock}[2]%
+ {%
+ \ProgramBlockItem{#1}{#2}
+ \begin{ProgramList}%
+ }%
+ {\end{ProgramList}}
+
+\newcommand*{\ProgramBlockItem}[2]{\item[\blocknumberformat{#1}.] \blocktitleformat{#2}}
+\newcommand*{\BeamerProgramBlockItem}[2]{\item[\blocknumberformat{#1}.] \blocktitleformat{#2}}
+\newcommand*{\BeamerProgramBlockBlocksOnlyItem}[2]{\item[#1.] #2}
+
%
% Beamer program generation
\define@key{beamerprogram}{title}{\csdef{@bptitle}{#1}}
@@ -566,6 +640,11 @@
\define@boolkey{beamerprogram}{blocksonly}[true]{}
\define@boolkey{beamerprogram}{uncover}[true]{}
+% Overlay specifications for uncover programs
+\newcommand*\beameruncoverspec{\beamerdefaultoverlayspecification{<+(1)->}}
+\newcommand*\beameruncoverffslidesspec{\beamerdefaultoverlayspecification{<+(-1)->}}
+\newcommand*\beameruncoverblocksonlyspec{\beamerdefaultoverlayspecification{<+->}}
+
\newcommand*\makebeamerprogram[1][]{%
\csdef{@bptitle}{\lecprogram}
\def\btitleapp{}
@@ -574,7 +653,7 @@
\setkeys{beamerprogram}{blocksonly=false}
\setkeys{beamerprogram}{uncover=false}
\setkeys{beamerprogram}{#1}
- \def\bpdescbeg{\begin{description}[\lecprogramlistindent]}
+ \def\bpdescbeg{\begin{BeamerProgramList}}
\ifKV@beamerprogram@alerted
\fi
\providebool{uncoveredlist}
@@ -599,13 +678,10 @@
\begin{frame}[label=beamerprogram]{\csuse{@bptitle}\btitleapp}
}%
}%
- \ifbool{uncoveredlist}{%
- \begin{description}[<+->][\lecprogramlistindent]
- }{%
- \begin{description}[\lecprogramlistindent]
- }
- \programblocklistbeamer
- \end{description}
+ \ifbool{uncoveredlist}{\beameruncoverblocksonlyspec}{}
+ \begin{BeamerProgramList}
+ \ifcsempty{programblocklistbeamer}{\BeamerProgramBlockBlocksOnlyItem{}{}}{\programblocklistbeamer}
+ \end{BeamerProgramList}
\end{frame}
\else% not \ifKV@beamerprogram@blocksonly
% All but last slide(s) are generated in what follows
@@ -626,13 +702,10 @@
\begin{frame}[label=beamerprogram]{\csuse{@bptitle}\btitleapp}
}%
}%
- \ifbool{uncoveredlist}{%
- \begin{description}[<+(1)->][\lecprogramlistindent]
- }{%
- \begin{description}[\lecprogramlistindent]
- }
+ \ifbool{uncoveredlist}{\beameruncoverspec}{}
+ \begin{BeamerProgramList}
\programlistbeamerii
- \end{description}
+ \end{BeamerProgramList}
\end{frame}
}
\@ifundefined{programlistbeameriii}{}{%
@@ -652,13 +725,10 @@
\begin{frame}[label=beamerprogram2]{\csuse{@bptitle}\btitleapp}
}%
}%
- \ifbool{uncoveredlist}{%
- \begin{description}[<+->][\lecprogramlistindent]
- }{%
- \begin{description}[\lecprogramlistindent]
- }
+ \ifbool{uncoveredlist}{\beameruncoverffslidesspec}{}
+ \begin{BeamerProgramList}
\programlistbeameriii
- \end{description}
+ \end{BeamerProgramList}
\end{frame}
}
\@ifundefined{programlistbeameriv}{}{%
@@ -678,13 +748,10 @@
\begin{frame}[label=beamerprogram3]{\csuse{@bptitle}\btitleapp}
}%
}%
- \ifbool{uncoveredlist}{%
- \begin{description}[+(1)->][\lecprogramlistindent]
- }{%
- \begin{description}[\lecprogramlistindent]
- }
+ \ifbool{uncoveredlist}{\beameruncoverffslidesspec}{}
+ \begin{BeamerProgramList}
\programlistbeameriv
- \end{description}
+ \end{BeamerProgramList}
\end{frame}
}
% The last slide is generated separately:
@@ -758,14 +825,10 @@
}%
}%
}%
-
- \ifbool{uncoveredlist}{%
- \begin{description}[<+->][\lecprogramlistindent]
- }{%
- \begin{description}[\lecprogramlistindent]
- }
+ \ifbool{uncoveredlist}{\beameruncoverffslidesspec}{}
+ \begin{BeamerProgramList}
\programlistbeamer
- \end{description}
+ \end{BeamerProgramList}
\end{frame}
\fi%\else\ifKV@beamerprogram@blocksonly
}
@@ -780,7 +843,7 @@
\setkeys{beamerprogram}{blocksonly=false}
\setkeys{beamerprogram}{uncover=false}
\setkeys{beamerprogram}{#1}
- \def\bpdescbeg{\begin{description}[\lecprogramlistindent]}
+ \def\bpdescbeg{\begin{BeamerProgramList}}
\ifKV@beamerprogram@alerted
\fi
\providebool{uncoveredlist}
@@ -792,33 +855,30 @@
\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}
+ \ifcsempty{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}{\beameruncoverspec}{}
+ \begin{BeamerProgramListExam}
+ \programlistbeamerexam
+ \end{BeamerProgramListExam}
+ \end{frame}
+ }%
\fi%\else\ifKV@beamerprogram@blocksonly
- }%
}
@@ -943,20 +1003,14 @@
\protected@csxdef{sesblockno\thesnum}{\csuse{@currentblockno}}
\ifKV@session@cancel
\stepcounter{cancellations}
- \protected@eappto\programlist{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
- \noexpand\bgroup\noexpand\bfseries\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}%
- \noexpand\leccancel\noexpand\egroup}
- \protected@eappto\programlistbeamer{\noexpand\item[{\noexpand\bfseries\csuse{sesshortdate\thesnum}}]%
- \noexpand\bgroup\noexpand\bfseries\csuse{sestitle\thesnum}\csuse{@sestitlesep}\csuse{@sessubtitle}%
- \noexpand\leccancel\noexpand\egroup}
+ \protected@eappto\programlist{\noexpand\ProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlistbeamer{\noexpand\BeamerProgramListCancelItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
\else
\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}}
+ \protected@eappto\programlistexam{\noexpand\ProgramListExamItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlistbeamerexam{\noexpand\BeamerProgramListExamItem{\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{*}%
@@ -967,10 +1021,8 @@
\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}}
+ \protected@eappto\programlist{\noexpand\ProgramListItem{\csuse{sesshortdate\thesnum}}{\csuse{sestitle\thesnum}}{\csuse{@sestitlesep}}{\csuse{@sessubtitle}}}
+ \protected@eappto\programlistbeamer{\noexpand\BeamerProgramListItem{\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{*}%
@@ -993,10 +1045,10 @@
}{\stepcounter{autooffsetcounter}}
}{}
\ifx\empty#1
- \protected@eappto\programlist{\noexpand\begin{center} (#2) \noexpand\end{center}}
+ \protected@eappto\programlist{\noexpand\ProgramListBreak{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#2) \noexpand\end{center}}
\else
- \protected@eappto\programlist{\noexpand\begin{center} (#1: #2) \noexpand\end{center}}
+ \protected@eappto\programlist{\noexpand\ProgramListBreak[#1]{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#1: #2) \noexpand\end{center}}
\fi
}
@@ -1026,10 +1078,10 @@
\stepcounter{loopcounter}
\repeat
\ifcsempty{@breakspan}{%
- \protected@eappto\programlist{\noexpand\begin{center} (#2) \noexpand\end{center}}
+ \protected@eappto\programlist{\noexpand\ProgramListBreak{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (#2) \noexpand\end{center}}
}{%
- \protected@eappto\programlist{\noexpand\begin{center} (\csuse{@breakspan}: #2) \noexpand\end{center}}
+ \protected@eappto\programlist{\noexpand\ProgramListBreak[\csuse{@breakspan}]{#2}}
\protected@eappto\programlistbeamer{\noexpand\begin{center} (\csuse{@breakspan}: #2) \noexpand\end{center}}
}
}
@@ -1051,21 +1103,18 @@
\newtoggle{inblock}
\newcommand*\StartBlock[1]{%
\stepcounter{blocks}%
- \protected@eappto\programlist{\noexpand\item[{\noexpand\bfseries\Roman{blocks}}.]%
- \noexpand\bgroup\noexpand\bfseries #1\noexpand\egroup}%
- \gappto\programlist{\begin{labeling}{\lecprogramlistindent}}%
- \protected@eappto\programlistbeamer{\noexpand\item[{\noexpand\bfseries\Roman{blocks}}.]%
- \noexpand\bgroup\noexpand\bfseries #1\noexpand\egroup}%
- \gappto\programlistbeamer{\begin{description}[\lecprogramlistindent]}
- \protected@xappto\programblocklistbeamer{\noexpand\item[{\Roman{blocks}}.] #1}%
+ \protected@eappto\programlist{\noexpand\begin{ProgramListBlock}{\Roman{blocks}}{#1}}
+ \protected@eappto\programlistbeamer{\noexpand\BeamerProgramBlockItem{\Roman{blocks}}{#1}}%
+ \gappto\programlistbeamer{\begin{BeamerProgramList}}
+ \protected@xappto\programblocklistbeamer{\noexpand\BeamerProgramBlockBlocksOnlyItem{\Roman{blocks}}{#1}}%
\csxdef{@currentblock}{#1}%
\csxdef{@currentblockno}{\Roman{blocks}}%
\global\toggletrue{inblock}%
}
\newcommand*\EndBlock{%
- \gappto\programlist{\end{labeling}}
- \gappto\programlistbeamer{\end{description}}
+ \gappto\programlist{\end{ProgramListBlock}}
+ \gappto\programlistbeamer{\end{BeamerProgramList}}
\csxdef{@currentblock}{}%
\csxdef{@currentblockno}{}%
\global\togglefalse{inblock}%
@@ -1077,14 +1126,12 @@
}
\newcommand*\@PauseBlock{%
- \gappto\programlist{\end{labeling}}
- \gappto\programlistbeamer{\end{description}}
+ \gappto\programlistbeamer{\end{BeamerProgramList}}
}
\newcommand*\@ResumeBlock{%
% the \item here is necessary since this is nested immediately into another list
- \gappto\programlist{\item \begin{labeling}{\lecprogramlistindent}}%
- \gappto\programlistbeamer{\item \begin{description}[\lecprogramlistindent]}
+ \gappto\programlistbeamer{\item \begin{BeamerProgramList}}
}
\newenvironment{SessionBlock}[1]{\StartBlock{#1}}{\EndBlock}
@@ -1136,6 +1183,7 @@
%
\newcounter{pressession}
+\setcounter{pressession}{1}
\newcounter{lastpressession}
\providebool{deflastpressession}
@@ -1154,46 +1202,52 @@
\newcommand\makepreslist{%
\@ifstar{\@makeblankpreslist}{\@makepreslist}%
}
+\newcommand*\emptypressession{---}
+\newcommand*\presseparator{\par}
% Unstarred: use sespresstudents
\newcommand\@makepreslist{%
\ifbool{deflastpressession}{}{\setcounter{lastpressession}{\thesnum}}%
- \begin{labeling}{\lecprogramlistindent}
+ \begin{PresList}
\whiledo {\not{\value{pressession} > \value{lastpressession}}}%
{%
\ThisSession{\thepressession}%
\if\relax\sespresstudents\relax
- \MakeProgramline{\thepressession}\par
- ---
+ \MakePresListLine{\thepressession}\presseparator%
+ \emptypressession
\else
- \MakeProgramline{\thepressession}\par
+ \MakePresListLine{\thepressession}\presseparator%
\SessionPresStudents{\thepressession}
\fi
\stepcounter{pressession}%
}
- \end{labeling}
+ \end{PresList}
}
+\newlength\blankpreslistvspace
+\setlength\blankpreslistvspace{2\baselineskip}
% Starred: blank list
\newcommand\@makeblankpreslist{%
\ifbool{deflastpressession}{}{\setcounter{lastpressession}{\thesnum}}%
- \begin{labeling}{\lecprogramlistindent}
+ \begin{PresList}
\whiledo {\not{\value{pressession} > \value{lastpressession}}}%
{%
- \MakeProgramline{\thepressession}\vspace{2\baselineskip}
+ \MakePresListLine{\thepressession}\vspace{\blankpreslistvspace}
\stepcounter{pressession}%
}
- \end{labeling}
+ \end{PresList}
}
% A beamer-specific version
+\newcommand*\beamerpresseparator{:\ }
\newcommand\makebeamerpreslist{%
\ifbool{deflastpressession}{}{\setcounter{lastpressession}{\thesnum}}%
- \begin{description}[\lecprogramlistindent]
+ \begin{BeamerPresList}
\whiledo {\not{\value{pressession} > \value{lastpressession}}}%
{%
- \MakeProgramline{\thepressession}: \SessionPresStudents{\thepressession}
+ \MakeBeamerPresListLine{\thepressession}\beamerpresseparator%
+ \SessionPresStudents{\thepressession}
\stepcounter{pressession}%
}
- \end{description}
+ \end{BeamerPresList}
}
@@ -1398,6 +1452,16 @@
\lsestitle\lsestitlesep\lsessubtitle%
}
+% Program line suitable for preslist
+\newcommand*\MakePresListLine[1]{%
+ \LocalSession{#1}%
+ \PresListItem{\lsesshortdate}{\lsestitle}{\lsestitlesep}{\lsessubtitle}%
+}
+\newcommand*\MakeBeamerPresListLine[1]{%
+ \LocalSession{#1}%
+ \BeamerPresListItem{\lsesshortdate}{\lsestitle}{\lsestitlesep}{\lsessubtitle}%
+}
+
% Get information for adjacent (next, previous etc.) sessions
%
% Full title
diff --git a/macros/latex/contrib/jslectureplanner/jslectureplanner.tex b/macros/latex/contrib/jslectureplanner/jslectureplanner.tex
index a5aff8fa2a..4792ba03bb 100644
--- a/macros/latex/contrib/jslectureplanner/jslectureplanner.tex
+++ b/macros/latex/contrib/jslectureplanner/jslectureplanner.tex
@@ -1,3 +1,4 @@
+% !TeX spellcheck = en_US
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% File jslectureplanner.tex
%%
@@ -54,6 +55,20 @@
\vfuzz \hfuzz
\raggedbottom
+\usepackage[bookmarks=true,
+bookmarksnumbered=false,
+bookmarksopen=false,
+breaklinks=false,
+pdfborder={0 0 0},
+backref=false,
+colorlinks=false
+]{hyperref}
+\hypersetup{%
+ pdftitle={The jslectureplanner manual},
+ pdfauthor={Jürgen Spitzmüller},
+ pdfkeywords={latex,course planning}
+}
+
\usepackage{microtype}
\usepackage{babel}
@@ -72,7 +87,7 @@
\author{Jürgen Spitzmüller%
\thanks{Please report issues via \protect\url{https://github.com/jspitz/jslectureplanner}.}}
-\date{Version 1.10, 2020/04/30}
+\date{Version 1.11, 2020/05/11}
\maketitle
@@ -343,6 +358,8 @@ your university
\item \jcsmacro{SessionTitleSep\{\jparam{separator}\}}: Specify a default separator between session title and subtitle (e.\,g., ``. '' or `` -- ''). This is used if no specific separator has been specified in the session entry (see sec.~\ref{sec:lecplan}); by default, no separator is defined.
\end{itemize}
+\clearpage
+
\section{Setting up a course schedule}\label{sec:lecplan}
In the metadata file, you can set up a schedule for the course by entering
@@ -355,7 +372,7 @@ macro:
Valid \joption{\jparam{options}} include:
\begin{itemize}
\item \joption{draft=\jparam{true|false}}: If \joption{true}, a placeholder text (by default: ``Thema \jparam{n}'',
- see sec.~\ref{sec:misccust}) will be output if no session title is defined.
+ see sec.~\ref{sec:listcust}) will be output if no session title is defined.
This might be handy for planning the schedule.
\item \joption{topicnumber=\jparam{n}}: In draft mode, reset the current topic number of this session to \jparam{n}.
All subsequent topics will be calculated from this unless reset again. This might be useful if only part of
@@ -523,10 +540,11 @@ e-learning platform
\item \jcsmacro{officenumber}: Outputs the office (room) number
\end{itemize}
-\subsection{Generating course programs}
+\subsection{Generating course programs}\label{subsec:genprog}
\label{sec:lecprog}
\begin{itemize}
-\item \jcsmacro{makeprogram}: Generates a course program in the form:
+\item \jcsmacro{makeprogram}: Generates a course program that, by default,
+expands to the form:
\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
frame=single,escapechar=\$]
\begin{labeling}{\lecprogramlistindent}
@@ -540,6 +558,7 @@ e-learning platform
The \jmacro{labeling} environment is defined by the KOMA classes.
The package provides a fallback, however, if a different class is used.
+The list type can also be customized. See sec.~\ref{sec:listcust} for details.
\item \jcsmacro{makebeamerprogram[\jparam{options}]}: Generates
a beamer-suited lecture program from the metadata in the form
@@ -557,6 +576,8 @@ a beamer-suited lecture program from the metadata in the form
\end{frame}
\end{lstlisting}
+Again, see sec.~\ref{sec:listcust} for customization possibilities.
+
Note that
\begin{itemize}
\item multiple subsequent frames (not just slides) are generated if the metadata
@@ -644,6 +665,7 @@ presenting students, i.\,e., it expands to code in the form:
\end{lstlisting}
If no presenting students have been assigned to a given session,
an em-dash (---) is output instead.
+This all can be customized (please refer to sec.~\ref{sec:listcust} for details).
A starred version of the macro outputs a ``blank'' presentation list that just consists of
the session dates and titles with enough space to fill in student names manually.
@@ -910,31 +932,237 @@ As for the time span, this is defined in the macro \jcsmacro{jstimeslot}, which
\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}
-The canceling output is ``Session title -- keine \jparam{Session}'' (``keine''
+\subsection{Customizing program and presentation list appearance}\label{sec:listcust}
+
+\subsubsection{List layout}
+The course program generated by \jcsmacro{makeprogram} is typeset using
+a \textit{labeling} list, i.\,e., a description list
+with a customizable indentation (see sec.~\ref{subsec:genprog}).
+Since \jslp\ uses customizable environments, this can be easily changed.
+Simply redefine the following environment (\jcsmacro{lecprogramlistindent}
+holds a string that represents the indentation width; see below):
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[1]{lecprogramlistindent}}]
+\newenvironment{ProgramList}{\begin{labeling}{\lecprogramlistindent}}{\end{labeling}}
+\end{lstlisting}
+%
+This will also change the list of the exam sessions generated by \jcsmacro{makeexamprogram}
+and the student presentation lists generated by \jcsmacro{makepreslist}.
+If you want these lists to look different from the normal program list, redefine:
+
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
+\newenvironment{ProgramListExam}{\begin{ProgramList}}{\end{ProgramList}}
+\end{lstlisting}
+%
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
+\newenvironment{PresList}{\begin{ProgramList}}{\end{ProgramList}}
+\end{lstlisting}
+%
+For beamer programs, exam and presentation lists, a description environment is used instead,
+and the respective commands are
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[1]{lecprogramlistindent}}]
+\newenvironment{BeamerProgramList}{\begin{description}[\lecprogramlistindent]}%
+ {\end{description}}
+\end{lstlisting}
+%
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[1]{lecprogramlistindent}}]
+\newenvironment{BeamerPresList}{\begin{BeamerProgramList}}{\end{BeamerProgramList}}
+\end{lstlisting}
+%
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[1]{lecprogramlistindent}}]
+\newenvironment{BeamerProgramListExam}{\begin{BeamerProgramList}}{\end{BeamerProgramList}}
+\end{lstlisting}
+%
+The individual lines of the program are defined in the following macro that can be redefined
+(\texttt{\#1} represents the date, \texttt{\#2} the session title, \texttt{\#3} the session title--subtitle separator,
+and \texttt{\#4} the session subtitle; for the used text formatting macros, see sec.~\ref{subsec:textform}):
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{ProgramListItem,programdateformat,sestitleformat}}]
+\newcommand*{\ProgramListItem}[4]{\item[\programdateformat{#1}] \sestitleformat{#2#3#4}}
+\end{lstlisting}
+%
+This also redefines the presentation list items.
+If you want these lists to look different from the normal program list, redefine:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[2]{PresListItem,ProgramListItem}}]
+\newcommand*\PresListItem[4]{%
+ \ProgramListItem{#1}{#2}{#3}{#4}%
+}
+\end{lstlisting}
+%
+Analogous macros for canceled session items, exam items and presentation list items are:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{ProgramListCancelItem,programdateformat,cansestitleformat}}]
+\newcommand*{\ProgramListCancelItem}[4]{\item[\programdateformat{#1}]
+ \cansestitleformat{#2#3#4 \leccancel}}
+\end{lstlisting}
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{ProgramListExamItem,programdateformat,exsestitleformat}}]
+\newcommand*{\ProgramListExamItem}[4]{\item[\programdateformat{#1}]
+ \exsestitleformat{#2#3#4}}
+\end{lstlisting}
+%
+For the beamer program, the respective macros are:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{BeamerProgramListItem,programdateformat,sestitleformat}}]
+\newcommand*{\BeamerProgramListItem}[4]{\item[\programdateformat{#1}]
+ \sestitleformat{#2#3#4}}
+\end{lstlisting}
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[2]{BeamerPresListItem,BeamerProgramListItem}}]
+\newcommand*\BeamerPresListItem[4]{%
+ \BeamerProgramListItem{#1}{#2}{#3}{#4}%
+}
+\end{lstlisting}
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{BeamerProgramListCancelItem,programdateformat,cansestitleformat}}]
+\newcommand*{\BeamerProgramListCancelItem}[4]{\item[\programdateformat{#1}]
+ \cansestitleformat{#2#3#4\leccancel}}
+\end{lstlisting}
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{BeamerProgramListExamItem,programdateformat,exsestitleformat}}]
+\newcommand*{\BeamerProgramListExamItem}[4]{\item[\programdateformat{#1}]
+ \exsestitleformat{#2#3#4}}
+\end{lstlisting}
+%
+The program block titles are set in the embedding list via the following macro:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{ProgramBlockItem,blocknumberformat,blocktitleformat}}]
+\newcommand*{\ProgramBlockItem}[2]{\item[\blocknumberformat{#1}.] \blocktitleformat{#2}}
+\end{lstlisting}
+%
+For beamer, the following is used with \joption{blocksonly=false}:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[3]{BeamerProgramBlockItem,blocknumberformat,blocktitleformat}}]
+\newcommand*{\BeamerProgramBlockItem}[2]{\item[\blocknumberformat{#1}.]
+ \blocktitleformat{#2}}
+\end{lstlisting}
+%
+and the following is used with \joption{blocksonly=true}:
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},
+frame=single,moretexcs={[1]{BeamerProgramBlockBlocksOnlyItem}}]
+\newcommand*{\BeamerProgramBlockBlocksOnlyItem}[2]{\item[#1.] #2}
+\end{lstlisting}
+%
+The indentation used in program lists can be changed by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[2]{lecprogramlistindent,programdateformat}}]
+\newcommand*\lecprogramlistindent{\programdateformat{88.\,88.}}
+\end{lstlisting}
+%
+The vertical space that separates lines in blank presentation lists can be changed
+by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[2]{blankpreslistvspace,setlength}}]
+\setlength\blankpreslistvspace{2\baselineskip}
+\end{lstlisting}
+%
+The separator between session title and presenting students in presentation lists
+can be adjusted by changing
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[1]{presseparator}}]
+\newcommand*\presseparator{\par}
+\end{lstlisting}
+%
+For beamer presentation lists, the adaptation can be done by changing
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[1]{beamerpresseparator}}]
+\newcommand*\beamerpresseparator{:\ }
+\end{lstlisting}
+
+
+\subsubsection{Text formatting}\label{subsec:textform}
+
+If you only want to change the formatting of lines, you do not need to redefine the whole macros
+describe above. You can simply adjust the respective markup macros, as described in what follows.
+
+The dates in the program are bold by default. You can change this globally by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[1]{programdateformat}}]
+\newcommand*\programdateformat[1]{\textbf{#1}}
+\end{lstlisting}
+%
+Cancelled session titles in the program are bold by default as well. You can change this globally by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[1]{cansestitleformat}}]
+\newcommand*\cansestitleformat[1]{\textbf{#1}}
+\end{lstlisting}
+%
+Normal session titles, on the other hand, are by default not emphasized at all. You can also change this
+globally by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[1]{sestitleformat}}]
+\newcommand*\sestitleformat[1]{#1}
+\end{lstlisting}
+%
+Exam session titles are copies of the above. You can also change this
+globally by redefining
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[2]{exsestitleformat,sestitleformat}}]
+\newcommand*\exsestitleformat[1]{\sestitleformat{#1}}
+\end{lstlisting}
+%
+Session block titles and session block numbers can be redefined by changing
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[1]{blocktitleformat}}]
+\newcommand*\blocktitleformat[1]{\textbf{#1}}
+\end{lstlisting}
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[1]{blocknumberformat}}]
+\newcommand*\blocknumberformat[1]{\textbf{#1}}
+\end{lstlisting}
+%
+If you want to change the line in which semester breaks are output, redefine
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+frame=single,moretexcs={[1]{breakevent}}]
+\newcommand*{\ProgramListBreak}[2][\empty]%
+{%
+ \begin{center}
+ (\breakevent{#1}{: }{#2})
+ \end{center}%
+}
+\end{lstlisting}
+%
+\jcsmacro{breakevent} thereby checks whether a date range has been given (\texttt{\#1}),
+and if so, it is output followed by the separator given as second argument and the break
+title (\texttt{\#2}). If not, only the break title (\texttt{\#2}) is output.
+
+\subsubsection{Strings}
+
+For canceled sessions, the program outputs
+``\jparam{Session title} -- keine \jparam{Session}'' (``keine''
is German for ``no''). To modify or translate this, redefine the
following macro
-\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+ moretexcs={[2]{leccancel,lectypesession}}]
\newcommand*\leccancel{\ -- keine \lectypesession}
\end{lstlisting}
The default program string used in beamer frames can be changed by
redefining
-\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+ moretexcs={[1]{lecprogram}}]
\newcommand*\lecprogram{Programm}
\end{lstlisting}
-The indentation used in program lists can be changed by redefining
-\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
-\newcommand*\lecprogramlistindent{\textbf{88.\,88.}}
-\end{lstlisting}
The placeholder text for session without title with \joption{draft=true}
(see sec.~\ref{sec:lecplan}) is ``Thema \jparam{n}'' (``Thema'' is German for ``topic'').
-It can be changed by redefinition of this macro (\lstinline|\thesestopic| outputs
+It can be changed by redefinition of this macro (\jcsmacro{thesestopic} outputs
the value of the internal topic counter).
-\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single]
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+ moretexcs={[2]{sestopic,thesestopic}}]
\newcommand*\sestopic{Thema~\thesestopic}
\end{lstlisting}
-Use \jfcsmacro{renewcommand{*}} for the redefinitions.
+%
+The placeholder for presentation sessions with no students assigned (by default
+an em-dash), can be redefined by changing
+\begin{lstlisting}[language={[LaTeX]TeX},basicstyle={\small\ttfamily},frame=single,
+moretexcs={[1]{emptypressession}}]
+\newcommand*\emptypressession{---}
+\end{lstlisting}
\subsection{Using styles}\label{sec:styles}
@@ -1190,7 +1418,8 @@ a \emph{stackexchange} post by Enrico Gregorio (\url{http://tex.stackexchange.co
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!
-Richard Zach provided a fix and enhancement to \jcsmacro{SetAutoOffset}. Many thanks for this.
+Richard Zach provided a fix and enhancement to \jcsmacro{SetAutoOffset} and code to customize
+the program list. Many thanks for this.
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.
@@ -1198,6 +1427,11 @@ the \jslp\ style files. Thanks, Dominik.
\section{Release History}
\begin{itemize}
+\item 2020/05/11 (v. 1.11):
+ \begin{itemize}
+ \item Allow for customization of program and presentation lists (see sec.~\ref{sec:listcust}).
+ \item Correctly set first session in presentation list.
+ \end{itemize}
\item 2020/04/30 (v. 1.10):
\begin{itemize}
\item Do not increment session topic counter for cancelled sessions and breaks.
diff --git a/macros/latex/contrib/jslectureplanner/jsmembertable.sty b/macros/latex/contrib/jslectureplanner/jsmembertable.sty
index 7ec35c292d..8d8b634bba 100644
--- a/macros/latex/contrib/jslectureplanner/jsmembertable.sty
+++ b/macros/latex/contrib/jslectureplanner/jsmembertable.sty
@@ -24,8 +24,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\filedate{2020/04/30}
-\def\fileversion{1.10}
+\def\filedate{2020/05/11}
+\def\fileversion{1.11}
\def\filename{jsmembertable.sty}
\NeedsTeXFormat{LaTeX2e}