summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/worksheet/worksheet.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/worksheet/worksheet.tex
Initial commit
Diffstat (limited to 'macros/latex/contrib/worksheet/worksheet.tex')
-rw-r--r--macros/latex/contrib/worksheet/worksheet.tex386
1 files changed, 386 insertions, 0 deletions
diff --git a/macros/latex/contrib/worksheet/worksheet.tex b/macros/latex/contrib/worksheet/worksheet.tex
new file mode 100644
index 0000000000..c7bb551ab8
--- /dev/null
+++ b/macros/latex/contrib/worksheet/worksheet.tex
@@ -0,0 +1,386 @@
+% 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@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}\\[1.5ex]
+ \sourceCodeWorksheetAuthors{Ignored Author}\\
+ \sourceCodeWorksheetCourseName{Ignored Header}\\[1.5ex]
+ \sourceCodeBegin{document}...
+}
+\vfil
+\begin{center}
+ \begin{minipage}[b]{\textwidth}
+ \begin{minipage}[b]{0.5\textwidth}
+ \noindent Content of "MySubDirectory/lv.tex":\par\addvspace{0.5\baselineskip}\noindent
+ {\ttfamily\raggedright \aqua{\textbackslash def}\textbackslash coursename\{Example Header\}\\
+ \aqua{\textbackslash def}\textbackslash authors\{Example Author\}}
+ \end{minipage}%
+ \begin{minipage}[b]{0.5\textwidth}
+ \noindent Also a german version of "MYSubDirectory/lv.tex" is possible:\par\addvspace{0.5\baselineskip}\noindent
+ {\ttfamily\raggedright \aqua{\textbackslash def}\textbackslash lvname\{Example Header\}\\
+ \aqua{\textbackslash def}\textbackslash autoren\{Example Author\}}
+ \end{minipage}
+ \end{minipage}
+\end{center}
+
+
+% 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 Babel languages are:
+\begin{center}
+\textbf{english, french, 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\\
+ \sourceCodeWorksheetShowOccurrence\\[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
+\worksheetShowOccurrence
+\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 macro functionality plus checking the selected language's support and changing the internal language if the selected language is supported.
+
+\end{document}