texlive[48416] Master: worksheet (16aug18)

commits+karl at tug.org commits+karl at tug.org
Thu Aug 16 22:50:02 CEST 2018


Revision: 48416
          http://tug.org/svn/texlive?view=revision&revision=48416
Author:   karl
Date:     2018-08-16 22:50:02 +0200 (Thu, 16 Aug 2018)
Log Message:
-----------
worksheet (16aug18)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/worksheet/
    trunk/Master/texmf-dist/doc/latex/worksheet/README.md
    trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf
    trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.tex
    trunk/Master/texmf-dist/tex/latex/worksheet/
    trunk/Master/texmf-dist/tex/latex/worksheet/worksheet.sty
    trunk/Master/tlpkg/tlpsrc/worksheet.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/worksheet/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/worksheet/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/worksheet/README.md	2018-08-16 20:50:02 UTC (rev 48416)
@@ -0,0 +1,9 @@
+This package provides functions and an environment for easy worksheet creation:
+	use the exercise environment for formating exercises in a simple, efficient design;
+	make custom, automatically numbered worksheet titles likewise \LaTeX\ title functions;
+	provide course and author information with a scrlayer-scrpage based automated header;
+	conforming to different Babel Languages (At this time only English and German are supported.).
+
+This package is guaranteed to work with pdflatex and xelatex, only depending on scrlayer-scrpage. It is recommended to use xelatex including fontspec package and setting sans font to "Helvetica Neue" or "Raleway".
+
+Package worksheet by Benjamin Zöllner (c)2018. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (latest version).


Property changes on: trunk/Master/texmf-dist/doc/latex/worksheet/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf	2018-08-16 20:49:26 UTC (rev 48415)
+++ trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf	2018-08-16 20:50:02 UTC (rev 48416)

Property changes on: trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.tex	2018-08-16 20:50:02 UTC (rev 48416)
@@ -0,0 +1,380 @@
+% DocumentClass
+\documentclass[12pt, a4paper, listof=flat]{scrartcl}
+
+% Languages
+\usepackage[ngerman, english]{babel}
+
+% Graphic Inclusion
+\usepackage{graphicx}
+
+% Colors
+\usepackage{xcolor}
+	
+% define Apple Colors
+\newcommand*{\maraschino}[1]{\textcolor[RGB]{255, 38, 0}{#1}}
+\newcommand*{\tangerine}[1]{\textcolor[RGB]{255, 147, 0}{#1}}
+\newcommand*{\lemon}[1]{\textcolor[RGB]{255, 251, 0}{#1}}
+\newcommand*{\lime}[1]{\textcolor[RGB]{142, 250, 0}{#1}}
+\newcommand*{\spring}[1]{\textcolor[RGB]{0, 249, 0}{#1}}
+\newcommand*{\seafoam}[1]{\textcolor[RGB]{0, 250, 146}{#1}}
+\newcommand*{\turquoise}[1]{\textcolor[RGB]{0, 253, 255}{#1}}
+\newcommand*{\aqua}[1]{\textcolor[RGB]{0, 150, 255}{#1}}
+\newcommand*{\blueberry}[1]{\textcolor[RGB]{4, 52, 155}{#1}}
+\newcommand*{\grape}[1]{\textcolor[RGB]{148, 55, 155}{#1}}
+\newcommand*{\magenta}[1]{\textcolor[RGB]{255, 64, 255}{#1}}
+\newcommand*{\strawberry}[1]{\textcolor[RGB]{255, 47, 146}{#1}}
+\newcommand*{\gray}[1]{\textcolor[RGB]{127, 127, 127}{#1}}
+
+% Fonts
+\usepackage{fontspec}
+\setsansfont{Helvetica Neue}
+
+% worksheet
+\usepackage{worksheet}
+
+% Filler Texts
+\def\lipsum{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam dapibus faucibus orci vel commodo. Quisque tristique molestie dolor, eu euismod ligula malesuada ut.}
+\def\exerciseFillerText{Following this, a certain exercise is described in a sentence. Maybe there is another sentence which is not enough, though. This last sentence should do.}
+
+% make MiniPage for Source Code
+\def\sourceCodeMinipage#1{
+\begin{center}
+		\begin{minipage}{0.9\textwidth}
+			\ttfamily\raggedright
+			#1
+		\end{minipage}
+\end{center}
+}
+
+% define Macros for formatted Source Code 
+\def\sourceCodeBegin#1{\aqua{\textbackslash begin}\{#1\}}
+\def\sourceCodeEnd#1{\aqua{\textbackslash end}\{#1\}}
+\def\sourceCodeBeginExercise{\aqua{\textbackslash begin}\{\tangerine{exercise}\}}
+\def\sourceCodeEndExercise{\aqua{\textbackslash end}\{\tangerine{exercise}\}}
+\def\sourceCodeScore#1{{\ttfamily\tangerine{\textbackslash score}\{#1\}}}
+\def\sourceCodeLearningTargets#1{{\ttfamily\tangerine{\textbackslash learningtargets}\{#1\}}}
+\def\sourceCodeEasy{{\ttfamily\tangerine{\textbackslash easy}}}
+\def\sourceCodeMedium{{\ttfamily\tangerine{\textbackslash medium}}}
+\def\sourceCodeHard{{\ttfamily\tangerine{\textbackslash hard}}}
+\def\sourceCodeOccurrence#1{{\ttfamily\tangerine{\textbackslash occurrence}\{#1\}}}
+\def\sourceCodeWorksheetTitle#1{{\ttfamily\tangerine{\textbackslash worksheetTitle}\{#1\}}}
+\def\sourceCodeWorksheetSubTitle#1{{\ttfamily\tangerine{\textbackslash worksheetSubTitle}\{#1\}}}
+\def\sourceCodeWorksheetMakeTitle{{\ttfamily\tangerine{\textbackslash worksheetMakeTitle}}}
+\def\sourceCodeWorksheetShowFileName{{\ttfamily\tangerine{\textbackslash worksheetShowFileName}}}
+\def\sourceCodeWorksheetShowScore{{\ttfamily\tangerine{\textbackslash worksheetShowScore}}}
+\def\sourceCodeWorksheetShowLearningTargets{{\ttfamily\tangerine{\textbackslash worksheetShowLearningTargets}}}
+\def\sourceCodeWorksheetShowDifficulty{{\ttfamily\tangerine{\textbackslash worksheetShowDifficulty}}}
+\def\sourceCodeWorksheetShowOccurrence{{\ttfamily\tangerine{\textbackslash worksheetShowOccurrence}}}
+\def\sourceCodeWorksheetHideFileName{{\ttfamily\tangerine{\textbackslash worksheetHideFileName}}}
+\def\sourceCodeWorksheetHideScore{{\ttfamily\tangerine{\textbackslash worksheetHideScore}}}
+\def\sourceCodeWorksheetHideLearningTargets{{\ttfamily\tangerine{\textbackslash worksheetHideLearningTargets}}}
+\def\sourceCodeWorksheetHideDifficulty{{\ttfamily\tangerine{\textbackslash worksheetHideDifficulty}}}
+\def\sourceCodeWorksheetHideOccurrence{{\ttfamily\tangerine{\textbackslash worksheetHideOccurrence}}}
+\def\sourceCodeWorksheetHideHeader{{\ttfamily\tangerine{\textbackslash worksheetHideHeader}}}
+\def\sourceCodeWorksheetAuthors#1{{\ttfamily\tangerine{\textbackslash worksheetAuthors}\{#1\}}}
+\def\sourceCodeWorksheetCourseName#1{{\ttfamily\tangerine{\textbackslash worksheetCourseName}\{#1\}}}
+\def\sourceCodeWorksheetChangelvFile#1{{\ttfamily\tangerine{\textbackslash worksheetChangelvFile}\{#1\}}}
+\def\sourceCodeWorksheetNoSFFamilyInHeader{{\ttfamily\tangerine{\textbackslash worksheetNoSFFamilyInHeader}}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Document
+
+% Source Code copied from precompiled PDF - Header - Example
+% Begin
+\worksheetChangelvFile{./MySubDirectory/lv.tex}
+\worksheetAuthors{Ignored Author}
+\worksheetCourseName{Ignored Header}
+% End
+
+\begin{document}
+
+% hide Header
+\pagestyle{plain}
+
+% prevent overfull hboxes
+\emergencystretch 2em
+
+% Title Page
+\begin{titlepage}
+	\sffamily
+	\begin{figure}[t]
+		\centering
+		\includegraphics[width=0.8\textwidth]{./HS-Osna-Logo.png}
+	\end{figure}
+
+	\begin{center}
+		~\\[6ex]
+		\large{Faculty\\Engineering and Computer Science}\\[10ex]
+		{\Huge{\textbf{Package Documentation}}}\\[10ex]
+		\sffamily\huge{Worksheet}\rmfamily\\[10ex]
+	\end{center}
+	
+	\begin{center}
+		\begin{minipage}{0.4\textwidth}
+			\begin{tabbing}
+				\hspace*{5cm}\=\kill
+				Author:\>Benjamin Z\"{o}llner\\
+				\>\footnotesize(Benjamin.Zoellner at posteo.de)\\[1ex]\normalsize
+				Professor:\>Prof. Dr. Markus Schmidt-Gröttrup\\[1ex]
+				Release:\>\today
+			\end{tabbing}
+		\end{minipage}
+	\end{center}
+\end{titlepage}
+
+% Abstract
+\newpage\section*{Abstract}
+\input{README.md}\par\addvspace{\topsep}\noindent
+Every ellipsis ({\ttfamily ...}) in the following examples can be replaced with a string or text of any length.
+
+\newpage\tableofcontents
+
+% Exercise Environment
+\newpage\section{Exercise Environment}
+An exercise containing minimal information is simply made with:
+
+\sourceCodeMinipage{
+	\sourceCodeBeginExercise\\
+	...\\
+	\sourceCodeEndExercise
+}
+
+\noindent In the optional argument of exercise, information "Score", "Learning Targets", "Occurrence" and "Difficulty" can be set independently of each other with:
+
+\begin{center}
+	\sourceCodeScore{...}, \sourceCodeLearningTargets{...}, \sourceCodeOccurrence{...} and\newline
+	\sourceCodeEasy{}, \sourceCodeMedium{} or \sourceCodeHard{}
+\end{center}
+
+% Exercise optional Argument Syntax
+\subsection*{Syntax}
+Placing a command to set specific exercise information outside of the optional argument of exercise will cause it \emph{to do nothing}. Replace ellipses ({\ttfamily ...}) at will, but even though whitespaces will be ignored, do not add any characters to the optional argument of exercise, \textbf{especially do not add any new-line characters or {\ttfamily\textbackslash par} macros at all costs}.
+
+\sourceCodeMinipage{
+	\sourceCodeBeginExercise[\sourceCodeScore{...}\sourceCodeLearningTargets{...}\sourceCodeEasy]\\
+	...\\
+	\sourceCodeEndExercise\\
+	or\\
+	\sourceCodeBeginExercise[\sourceCodeScore{...}\sourceCodeLearningTargets{...}\sourceCodeMedium]\\
+	...\\
+	\sourceCodeEndExercise\\
+	or\\
+	\sourceCodeBeginExercise[\sourceCodeScore{...}\sourceCodeLearningTargets{...}\sourceCodeHard]\\
+	...\\
+	\sourceCodeEndExercise
+}
+\par\addvspace{\topsep}\noindent
+
+\noindent Detailed information of an exercise is only shown, if \emph{detailed information is available} and \emph{specific flags are set}. The flags are by default not set. To set these flags use:
+
+\sourceCodeMinipage{
+	\sourceCodeWorksheetShowFileName\\
+	\sourceCodeWorksheetShowScore\\
+	\sourceCodeWorksheetShowLearningTargets\\
+	\sourceCodeWorksheetShowDifficulty
+}
+
+\noindent Deleting these flags is achieved with:
+\sourceCodeMinipage{
+	\sourceCodeWorksheetHideFileName\\
+	\sourceCodeWorksheetHideScore\\
+	\sourceCodeWorksheetHideLearningTargets\\
+	\sourceCodeWorksheetHideDifficulty
+}
+
+% Exercise Example
+\subsection*{Example:}
+Including following source code in 4 different *.tex files using {\ttfamily\aqua{\textbackslash input}\{...\}}:\par
+
+% Show Source Code for both precompiled and finished PDF
+\noindent "file1.tex"
+\sourceCodeMinipage{
+	\sourceCodeWorksheetShowScore\\[1ex]
+	\sourceCodeBeginExercise[\sourceCodeScore{10}\sourceCodeEasy]\\
+	This exercise has a maximum score of 10 and easy difficulty level. \exerciseFillerText\\
+	\sourceCodeEndExercise\\[1ex]
+	\sourceCodeWorksheetShowFileName\\
+	\sourceCodeWorksheetShowLearningTargets\\
+	\sourceCodeWorksheetShowDifficulty\\
+	\sourceCodeWorksheetShowOccurrence
+}
+
+\noindent "file2.tex"
+\sourceCodeMinipage{
+	\sourceCodeBeginExercise[\sourceCodeLearningTargets{1, 2, 3}\sourceCodeMedium]\\
+	This exercise satisfies learning targets one, two, three and has medium difficulty level. \exerciseFillerText\\
+	\sourceCodeEndExercise
+}
+
+\noindent "file3.tex"
+\sourceCodeMinipage{
+	\sourceCodeBeginExercise[\sourceCodeOccurrence{Exam WS 2018}\sourceCodeScore{20}]\\
+	This exercise was in an exam in winter semester in 2018, satisfies learning targets 4,5 and has a maximum score of 10 and hard difficulty level. \exerciseFillerText\\
+	\sourceCodeEndExercise\\[1ex]
+	\sourceCodeWorksheetHideFileName
+}
+
+\noindent "file4.tex"
+\sourceCodeMinipage{
+	\sourceCodeBeginExercise[\sourceCodeScore{30}]\\
+	This exercise has a maximum score of 30. \exerciseFillerText\\
+	\sourceCodeEndExercise
+}
+
+\pagebreak
+
+\noindent lead to:
+
+% Source Code copied from precompiled PDF into 4 Files:
+% Begin
+\input{file1.tex}
+\input{file2.tex}
+\input{file3.tex}
+\input{file4.tex}
+% End
+
+% Worksheet Title
+\newpage\section{Worksheet Title}
+Both, title and subtitle, can be set with:
+\begin{center}
+	\sourceCodeWorksheetTitle{...} and \sourceCodeWorksheetSubTitle{...}
+\end{center}
+The title itself is then displayed with \sourceCodeWorksheetMakeTitle.
+
+% Worksheet Title Example
+\subsection*{Example:}
+Assuming this document's file name would be "\jobname.tex", using this source code
+\sourceCodeMinipage{
+	\sourceCodeWorksheetTitle{My Title}\\
+	\sourceCodeWorksheetSubTitle{My Subtitle}\\[2ex]
+	\sourceCodeWorksheetMakeTitle\\[2ex]
+	\aqua{\textbackslash noindent} \lipsum%
+}
+lead to following title:
+
+% Source Code copied from precompiled PDF:
+% Begin
+\worksheetTitle{My Title}
+\worksheetSubTitle{My Subtitle}
+
+\worksheetMakeTitle
+% End
+
+\noindent Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam dapibus faucibus orci vel commodo. Quisque tristique molestie dolor, eu euismod ligula malesuada ut.
+
+% Header
+\newpage\thispagestyle{headings}\section{Header}
+Header information can be set with:
+\begin{center}
+\sourceCodeWorksheetAuthors{...} and \sourceCodeWorksheetCourseName{...}
+\end{center}
+The authors are always placed on the inner side, while the course name is always placed on the outer side. In one-sided documents this would result in placing course name on the page's left side and authors on the page's right side. The default header of "scrlayer-scrpage" package is redefined (plus the default pagestyle is set to "headings") only, if at least authors or at least course name was set before.\par
+The package worksheet automatically tries to include "./lv.tex" which should define {\ttfamily\textbackslash coursename} and {\ttfamily\textbackslash authors} which are automatically associated as header information. Change the try-to-include file with: \sourceCodeWorksheetChangelvFile{...}.\par
+If a KOMA document class is selected, worksheet automatically sets the header font family to "Sans Serif". Suppress this behaviour with: \sourceCodeWorksheetNoSFFamilyInHeader.\par
+See \emph{\ref{cap:dependencies:scrlayerscrpage} Dependencies - scrlayer-scrpage} for further information about controlling presence of the header.
+
+% Header Examples
+\subsection*{Examples:}
+Results of following examples are shown in this page's header. All examples lead to the exact same header.
+
+% First Header Example
+\subsubsection*{1. Example}
+Setting header information manually ("lv.tex" does not exist):
+\sourceCodeMinipage{
+	\sourceCodeWorksheetAuthors{Example Author}\\
+	\sourceCodeWorksheetCourseName{Example Header}\\[2ex]
+	\sourceCodeBegin{document}...
+}
+
+% Second Header Example
+\subsubsection*{2. Example}
+Changing the directory path of "lv.tex" ("lv.tex" does exist in "./MySubDirectory/"):
+\sourceCodeMinipage{
+	\sourceCodeWorksheetChangelvFile{./MySubDirectory/lv.tex}\\[2ex]
+	\sourceCodeWorksheetAuthors{Ignored Author}\\
+	\sourceCodeWorksheetCourseName{Ignored Header}\\[2ex]
+	\sourceCodeBegin{document}...
+}
+
+\noindent Content of "MySubDirectory/lv.tex":
+\sourceCodeMinipage{
+	\aqua{\textbackslash def}\textbackslash coursename\{Example Header\}\\
+	\aqua{\textbackslash def}\textbackslash authors\{Example Author\}
+}
+
+Also a german version of "MYSubDirectory/lv.tex" is possible:
+\sourceCodeMinipage{
+	\aqua{\textbackslash def}\textbackslash lvname\{Example Header\}\\
+	\aqua{\textbackslash def}\textbackslash autoren\{Example Author\}
+}
+
+% play it safe to display Example Header on both Pages, if this Section is 2 Pages long
+\thispagestyle{headings}
+
+% Babel Languages
+\newpage\section{Conforming to Babel Languages}
+This package automatically changes its appearance to a specific language, after a specific language is selected with {\ttfamily\textbackslash selectlanguage\{...\}}. Supported languages are:
+\begin{center}
+\textbf{english, german and ngerman}
+\end{center}
+
+% Babel Languages Example
+\subsection*{Example:}
+Defining two different exercises in two different languages:
+
+% Show Source Code for both precompiled and finished PDF
+\sourceCodeMinipage{
+	\sourceCodeWorksheetShowScore\\
+	\sourceCodeWorksheetShowLearningTargets\\
+	\sourceCodeWorksheetShowDifficulty\\[1ex]
+	\sourceCodeBeginExercise\spring{\%}\\{}
+	{\small[\sourceCodeScore{10}\sourceCodeEasy\sourceCodeLearningTargets{1, 2, 3}\sourceCodeOccurrence{Exam WS 2018}]}\\
+	This is an exercise written in english and described in a sentence. Maybe there is another sentence which is not enough though. This last sentence should do.\\
+	\sourceCodeEndExercise\\[1ex]
+	\aqua{\textbackslash selectlanguage}\{ngerman\}\\[1ex]
+	\sourceCodeBeginExercise\spring{\%}\\{}
+	{\small[\sourceCodeScore{10}\sourceCodeEasy\sourceCodeLearningTargets{1, 2, 3}\sourceCodeOccurrence{Klausur WS 2018}]}\\
+	Dies ist eine in deutsch verfasste Aufgabe, die mit einem Satz beschrieben wird. Vermutlich reicht dieser eine Satz jedoch nicht aus. Dieser letzte Satz sollte ausreichen.\\
+	\sourceCodeEndExercise\\[1ex]
+}
+
+\noindent lead to:
+
+% Source Code copied from precompiled PDF:
+% Begin
+\worksheetShowScore
+\worksheetShowLearningTargets
+\worksheetShowDifficulty
+\begin{exercise}%
+[\score{10}\easy\learningtargets{1, 2, 3}\occurrence{Exam WS 2018}] This is an exercise written in english and described in a sentence. Maybe there is another sentence which is not enough though. This last sentence should do.
+\end{exercise}
+\selectlanguage{ngerman}
+\begin{exercise}%
+[\score{10}\easy\learningtargets{1, 2, 3}\occurrence{Klausur WS 2018}] Dies ist eine in deutsch verfasste Aufgabe, die mit einem Satz beschrieben wird. Vermutlich reicht dieser eine Satz jedoch nicht aus. Dieser letzte Satz sollte ausreichen.
+\end{exercise}
+% End
+
+% setting Language back to English
+\selectlanguage{english}
+
+% Dependencies
+\newpage\section{Dependencies}
+All dependencies are listed in this Section. Compiling this package with \emph{pdflatex} and \emph{xelatex} is guaranteed.
+
+% Dependencies
+\subsection*{scrlayer-scrpage}\label{cap:dependencies:scrlayerscrpage}
+The Package worksheet uses \emph{scrlayer-scrpage} to control header. Use
+\begin{center}
+	{\ttfamily\textbackslash pagestyle\{plain\}} or {\ttfamily\textbackslash thispagestyle\{plain\}}
+\end{center}
+to hide and
+\begin{center}
+	{\ttfamily\textbackslash pagestyle\{headings\}} or {\ttfamily\textbackslash thispagestyle\{headings\}}
+\end{center}
+to show worksheet header. Per default \emph{scrlayer-scrpage's} header is redefined and -- per default -- pagestyle "headings" is selected; suppress all this behaviour by calling \sourceCodeWorksheetHideHeader{} \textbf{before} {\ttfamily\aqua{\textbackslash begin}\{document\}}.\par
+
+\subsection*{Babel}
+The package worksheet redefines {\ttfamily\textbackslash selectlanguage\{...\}} keeping the original functionality plus checking the selected language's support and changing the internal language if the selected language is supported.
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/worksheet/worksheet.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/worksheet/worksheet.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/worksheet/worksheet.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/worksheet/worksheet.sty	2018-08-16 20:50:02 UTC (rev 48416)
@@ -0,0 +1,397 @@
+%------------------------------------------------------------------------------------------------------------%
+% Package worksheet by Benjamin Zöllner (c)2018                                                              %
+%                                                                                                            %
+% This work may be distributed and/or modified under the                                                     %
+% conditions of the LaTeX Project Public License (latest version).                                           %
+%------------------------------------------------------------------------------------------------------------%
+
+\NeedsTeXFormat{LaTeX2e}[2018]
+\ProvidesPackage{worksheet}[2018/08/08 by Benjamin Zoellner (c)2018 v1.0 This Package provides functions and an environment for easy worksheet creation]
+
+\PassOptionsToPackage{headsepline=1pt}{scrlayer-scrpage}
+\RequirePackage{scrlayer-scrpage}
+
+% BEWARE!
+% DO NOT CHANGE THE FORMATTING OF FOLLOWING CODE! DO NOT DELETE EMPTY COMMENTS!
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Extraxt Number From \jobname
+
+% Bools for Number Detection
+\newcounter{@worksheet at numberFound}
+\newcounter{@worksheet at numberEnded}
+
+% evil String Search Hacking using Latex-Kernel Functions \in@ & \ifin@
+\def\@worksheet at isInString#1#2{TT\fi\begingroup % What the f**k?!
+\edef\x{\endgroup\noexpand\in@{#1}{#2}}\x\ifin@}
+
+% Character-wise expanding Macro Loop for extracting containing Numbers leaving leading Zeroes
+% if a single Character #1 is a natural Number less than 10, a containing Number is found
+%     @worksheet at numberFound will be set
+%     #1 will be displayed
+% every following natural Number less than 10 including 0 will be displayed until #1 is a Character other than
+% a natural Number less than 10 or 0
+%     @worksheet at numberEnded will be set when #1 is not a number
+\def\@worksheet at loopElementsExtractNumber#1{%
+	\ifx\relax#1\else
+		\ifnum\value{@worksheet at numberEnded}=0
+			\ifnum\value{@worksheet at numberFound}=0
+				\if\@worksheet at isInString{#1}{123456789}#1\setcounter{@worksheet at numberFound}{1}\fi
+			\else
+				\if\@worksheet at isInString{#1}{0123456789}#1\else\setcounter{@worksheet at numberEnded}{1}\fi
+			\fi
+		\fi
+	\expandafter\@worksheet at loopElementsExtractNumber%
+	\fi
+}
+
+% expand Loop and extract a containing Number
+\def\@worksheet at expandNumberExtractingLoop#1{\setcounter{@worksheet at numberFound}{0}\setcounter{@worksheet at numberEnded}{0}\@worksheet at loopElementsExtractNumber#1\relax}
+
+% expand \jobname
+\edef\@worksheet at expandjobname{\jobname}
+
+% accurate Loop Command Expansion
+\def\@worksheet at numberInFileName{\expandafter\@worksheet at expandNumberExtractingLoop\expandafter{\@worksheet at expandjobname}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Language Selection
+
+% Babel conforming Macros
+\def\@worksheet at selectLanguage@english{
+	\xdef\@worksheet at languageSelection@exercise{Exercise}
+	\xdef\@worksheet at languageSelection@score{Maximum Score}
+	\xdef\@worksheet at languageSelection@learningTargets{Learning Targets}
+	\xdef\@worksheet at languageSelection@difficulty{Difficulty Level}
+	\xdef\@worksheet at languageSelection@easy{Easy}
+	\xdef\@worksheet at languageSelection@medium{Medium}
+	\xdef\@worksheet at languageSelection@hard{Hard}
+}
+\def\@worksheet at selectLanguage@german{
+	\xdef\@worksheet at languageSelection@exercise{Aufgabe}
+	\xdef\@worksheet at languageSelection@score{Punkte}
+	\xdef\@worksheet at languageSelection@learningTargets{Lernziele}
+	\xdef\@worksheet at languageSelection@difficulty{Schwierigkeitsgrad}
+	\xdef\@worksheet at languageSelection@easy{Leicht}
+	\xdef\@worksheet at languageSelection@medium{Mittel}
+	\xdef\@worksheet at languageSelection@hard{Schwer}
+}
+\def\@worksheet at selectLanguage@ngerman{\@worksheet at selectLanguage@german}
+
+% call Babel conforming Macro if defined
+\def\@worksheet at checkLanguage{
+	\expandafter\ifdefined\csname @worksheet at selectLanguage@\languagename\endcsname
+		\csname @worksheet at selectLanguage@\languagename\endcsname
+	\fi
+}
+
+% Macros to call at \begin{document}
+\def\@worksheet at languageSelection@beginDocument{
+	\let\@worksheet at originalselectlanguage\selectlanguage
+	\def\selectlanguage##1{\@worksheet at originalselectlanguage{##1}\@worksheet at checkLanguage}
+
+	\@worksheet at checkLanguage
+}
+
+% select default Language
+\@worksheet at selectLanguage@english
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Title of worksheet
+
+% worksheet internal Title & Subtitle
+\def\@worksheet at title{}
+\def\@worksheet at subTitle{}
+
+% set worksheet internal Title & Subtitle by redifining
+\def\worksheetTitle#1{\edef\@worksheet at title{#1}}
+\def\worksheetSubTitle#1{\edef\@worksheet at subTitle{#1}}
+
+% general Title Command
+\def\worksheetMakeTitle{
+	\ifx\relax\@worksheet at title\relax\else%
+		\begin{center}
+			\textbf{\sffamily\huge\@worksheet at title~\@worksheet at numberInFileName\nopagebreak}%
+			\ifx\relax\@worksheet at subTitle\relax\else%
+				\nopagebreak\par\addvspace{\topsep}{\sffamily\LARGE\@worksheet at subTitle}
+			\fi
+		\end{center}
+		\nopagebreak\par\addvspace{\topsep}
+	\fi	
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Directory File Name Extraction for temporary defining \@worksheet at currentFileName
+
+% seperate Name and Extension and leave Extension out
+\def\@worksheet at omitFileExtension#1.#2\@nil{#1}
+
+% loop through Directory Elements and seperate Extension from last Element
+\def\@worksheet at loopDirectoryElementsExtractName#1/#2/#3\@nil{\ifx\relax#2\relax\expandafter\@worksheet at omitFileExtension#1.\@nil\else\expandafter\@worksheet at loopDirectoryElementsExtractName#2/#3/\@nil\fi}
+
+% accurate Loop Command Expansion
+\def\@worksheet at ExtractFileName#1{\expandafter\@worksheet at loopDirectoryElementsExtractName#1//\@nil}
+
+% define empty current File Name
+\def\@worksheet at currentFileName{}
+
+% redefining \@iinput using original \@iinput
+\let\@worksheet at original@iinput\@iinput
+\def\@iinput#1{\edef\@worksheet at currentFileName{\@worksheet at ExtractFileName{#1}}\@worksheet at original@iinput{#1}\def\@worksheet at currentFileName{}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Environment Exercise
+
+% Counter for Number of Exercises
+\newcounter{@worksheet at numberOfExercises}
+
+% Control Flags
+\newcounter{@worksheet at showFileNameFlag}
+\newcounter{@worksheet at showScoreFlag}
+\newcounter{@worksheet at showLearningTargetsFlag}
+\newcounter{@worksheet at showDifficultyFlag}
+\newcounter{@worksheet at showOccurrenceFlag}
+
+% Commands: set and unset Flags
+\def\worksheetShowFileName{\setcounter{@worksheet at showFileNameFlag}{1}}
+\def\worksheetHideFileName{\setcounter{@worksheet at showFileNameFlag}{0}}
+\def\worksheetShowScore{\setcounter{@worksheet at showScoreFlag}{1}}
+\def\worksheetHideScore{\setcounter{@worksheet at showScoreFlag}{0}}
+\def\worksheetShowLearningTargets{\setcounter{@worksheet at showLearningTargetsFlag}{1}}
+\def\worksheetHideLearningTargets{\setcounter{@worksheet at showLearningTargetsFlag}{0}}
+\def\worksheetShowDifficulty{\setcounter{@worksheet at showDifficultyFlag}{1}}
+\def\worksheetHideDifficulty{\setcounter{@worksheet at showDifficultyFlag}{0}}
+\def\worksheetShowOccurrence{\setcounter{@worksheet at showOccurrenceFlag}{1}}
+\def\worksheetHideOccurrence{\setcounter{@worksheet at showOccurrenceFlag}{0}}
+
+% Commands: set local Attributes of Exercise
+\def\score#1{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\if\relax#1\relax\else%
+			\edef\@worksheet at localScore{#1}%
+		\fi%
+	\fi%
+	\ignorespaces%
+}
+\def\learningtargets#1{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\if\relax#1\relax\else%
+			\edef\@worksheet at localLearningTargets{#1}%
+		\fi%
+	\fi%
+	\ignorespaces%
+}
+\def\easy{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\edef\@worksheet at localDifficulty{\@worksheet at languageSelection@easy}%
+	\fi%
+	\ignorespaces%
+}
+\def\medium{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\edef\@worksheet at localDifficulty{\@worksheet at languageSelection@medium}%
+	\fi%
+	\ignorespaces%
+}
+\def\hard{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\edef\@worksheet at localDifficulty{\@worksheet at languageSelection@hard}%
+	\fi%
+	\ignorespaces%
+}
+
+% Commands: set global self emptying Attributes of Exercise
+\def\@worksheet at occurence{}
+\def\occurrence#1{%
+	\ignorespaces%
+	\ifdefined\@worksheet at localExerciseGroup%
+		\if\relax#1\relax\else%
+			\xdef\@worksheet at occurence{#1}%
+		\fi%
+	\fi%
+	\ignorespaces%
+}
+
+% Exercise
+\newenvironment{exercise}[1][]{
+
+	% increase @worksheet at numberOfExercises
+	\stepcounter{@worksheet at numberOfExercises}
+
+	\begingroup\def\@worksheet at localExerciseGroup{}
+	\sffamily
+	% prevent other Text Sizes than normal, new Paragraph, make chaptersized vertical Space
+	\normalsize\par\addvspace{\topsep}%
+
+	% make Aufgabe Title preventing Indents and ignoring Spaces
+	\noindent\ignorespaces\textbf{\@worksheet at languageSelection@exercise~\the at worksheet@numberOfExercises}%
+	% call Commands in optional Argument which define \@worksheet at localScore, \@worksheet at localLearningTargets and \@worksheet at localDifficulty locally within this group
+	#1%
+	% check if Score should be shown and if Score have been set
+	%     show footnotesized raggedleft Score
+	\ifnum\value{@worksheet at showScoreFlag}=0\else
+		\ifdefined\@worksheet at localScore
+			{\hfill\footnotesize\@worksheet at languageSelection@score:~\@worksheet at localScore}
+		\fi
+	\fi
+
+	% check if Difficulty should be shown and if Difficulty have been set
+	%     show footnotesized natural Difficulty
+	%     prevent Pagebreaks, Indents and Spaces
+	\ifnum\value{@worksheet at showDifficultyFlag}=0\else
+		\ifdefined\@worksheet at localDifficulty
+			\nopagebreak\par\noindent\ignorespaces
+			{\footnotesize\@worksheet at languageSelection@difficulty:~\@worksheet at localDifficulty%
+			\ifnum\value{@worksheet at showLearningTargetsFlag}=0\else%
+				\ifdefined\@worksheet at localLearningTargets%
+					,%
+				\fi%
+			\fi%
+			}%
+		\fi%
+	\fi%
+	%
+	% check if Learning Targets should be shown and if Learning Targets have been set
+	%     show footnotesized raggedleft Learning Targets
+	%     prevent Pagebreaks, Indents and Spaces
+	\ifnum\value{@worksheet at showLearningTargetsFlag}=0\else%
+		\ifdefined\@worksheet at localLearningTargets%
+			\ifnum\value{@worksheet at showDifficultyFlag}=0%
+				\nopagebreak\par\noindent\ignorespaces%
+			\else%
+				\ifdefined\@worksheet at localDifficulty\else%
+					\nopagebreak\par\noindent\ignorespaces%
+				\fi%
+			\fi%
+			{\footnotesize\hfill\@worksheet at languageSelection@learningTargets:~\@worksheet at localLearningTargets}
+		\fi
+	\fi
+
+	\endgroup
+
+	% prevent Pagebreaks, Indents and Spaces
+	\nopagebreak\par\noindent\ignorespaces
+}{
+	% check if File Name should be shown and if \@worksheet at currentFilename is not empty
+	%     prevent Pagebreaks, Indents and Spaces
+	%     show tinyed non-empty \@worksheet at currentFileName
+	\ifnum\value{@worksheet at showFileNameFlag}=0\else
+		\if\@worksheet at currentFileName\relax\relax\else
+			\nopagebreak\par\noindent\ignorespaces
+			{\scriptsize\sffamily[\@worksheet at currentFileName]}%
+		\fi%
+	\fi%
+	%
+	% check if Occurrence should be shown and if \@worksheet at occurence is not empty
+	%     prevent Pagebreaks, Indents and Spaces
+	%     show tinyed non-empty \@worksheet at occurence
+	\ifnum\value{@worksheet at showOccurrenceFlag}=0\else%
+		\if\@worksheet at occurence\relax\relax\else%
+			\ifnum\value{@worksheet at showFileNameFlag}=0%
+				\nopagebreak\par\noindent\ignorespaces%
+			\else%
+				\if\@worksheet at currentFileName\relax\relax%
+					\nopagebreak\par\noindent\ignorespaces%
+				\fi%
+			\fi%
+			{\scriptsize\sffamily\hfill[\@worksheet at occurence]}
+		\fi
+	\fi
+	\gdef\@worksheet at occurence{}
+	
+	\par\addvspace{\topsep}%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Header
+
+% Header Flags
+\newcounter{@worksheet at hideHeader}
+\newcounter{@worksheet at noSFFamilyInHeader}
+
+% prevent Header
+\def\worksheetHideHeader{\setcounter{@worksheet at hideHeader}{1}}
+\def\worksheetNoSFFamilyInHeader{\setcounter{@worksheet at noSFFamilyInHeader}{1}}
+
+% lv-File which should be loaded
+\edef\@worksheet at lvFile{./lv.tex}
+
+% change lv-File Name and Path
+\def\worksheetChangelvFile#1{\edef\@worksheet at lvFile{#1}}
+
+% define Header Information
+%     only if not empty
+\def\worksheetAuthors#1{\if\relax#1\relax\else\xdef\@worksheet at authors{#1}\fi}
+\def\worksheetCourseName#1{\if\relax#1\relax\else\xdef\@worksheet at course{#1}\fi}
+
+% formatting of worksheet Header
+%\def\@worksheet at head#1#2{\vbox{\sffamily\small#1\hfill #2\par\vspace{3pt}\hrule}}
+
+% make Header
+%     make Header \sffamily if Document Class is KOMA
+\def\@worksheet at makeHead#1#2{
+	\clearpairofpagestyles
+	\cfoot*{\pagemark}
+	\@ifundefined{KOMAClassName}{%
+		\ihead{#1}
+		\ohead{#2}
+    }{%
+		\ihead{\ifnum\value{@worksheet at hideHeader}=0\sffamily\fi#1}
+		\ohead{\ifnum\value{@worksheet at hideHeader}=0\sffamily\fi#2}
+    }
+	\pagestyle{headings}
+}
+
+% Macros to call at \begin{document}
+\def\@worksheet at header@beginDocument{
+	% default Pagestyle
+	\pagestyle{plain}
+
+	% load \@worksheet at lvFile ("./lv.tex" by default) if existing
+	\begingroup
+	\IfFileExists{\@worksheet at lvFile}{
+		\input{\@worksheet at lvFile}
+		\ifdefined\coursename\if\relax\coursename\relax\else\worksheetCourseName{\coursename}\fi\fi
+		\ifdefined\authors\if\relax\authors\relax\else\worksheetAuthors{\authors}\fi\fi
+		\ifdefined\lvname\if\relax\lvname\relax\else\worksheetCourseName{\lvname}\fi\fi
+		\ifdefined\autoren\if\relax\autoren\relax\else\worksheetAuthors{\autoren}\fi\fi
+	}{}
+	\endgroup
+
+	% make Header at Begin of Document if \@worksheet at authors or \@worksheet at course is defined
+	\ifnum\value{@worksheet at hideHeader}=0
+		\ifdefined\@worksheet at authors
+			\ifdefined\@worksheet at course
+				\@worksheet at makeHead{\@worksheet at course}{\@worksheet at authors}
+			\else
+				\@worksheet at makeHead{}{\@worksheet at authors}
+			\fi
+		\else
+			\ifdefined\@worksheet at course
+				\@worksheet at makeHead{\@worksheet at course}{}
+			\fi
+		\fi
+	\fi
+	\def\@worksheet at header@beginDocument{}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% At Document Begin
+
+\AtBeginDocument{
+	\@worksheet at header@beginDocument
+	\@worksheet at languageSelection@beginDocument
+}
+
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/worksheet/worksheet.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-08-16 20:49:26 UTC (rev 48415)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-08-16 20:50:02 UTC (rev 48416)
@@ -695,7 +695,7 @@
   wadalab wallcalendar wallpaper warning warpcol
     was wasy wasy2-ps wasysym webguide
     widetable williams withargs witharrows
-    wnri wnri-latex wordcount wordlike
+    wnri wnri-latex wordcount wordlike worksheet
     wrapfig wsemclassic wsuipa wtref
   xargs xassoccnt xbmks xcharter xcite xcjk2uni xcntperchap
     xcolor xcolor-material xcolor-solarized

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2018-08-16 20:49:26 UTC (rev 48415)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2018-08-16 20:50:02 UTC (rev 48416)
@@ -1169,6 +1169,7 @@
 depend withargs
 depend wordcount
 depend wordlike
+depend worksheet
 depend wrapfig
 depend wtref
 depend xargs

Added: trunk/Master/tlpkg/tlpsrc/worksheet.tlpsrc
===================================================================


More information about the tex-live-commits mailing list