From fda54a2d18e4bdc3294b3ee6a3237146474b0b12 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 14 Jun 2016 22:41:50 +0000 Subject: cloze (14jun16) git-svn-id: svn://tug.org/texlive/trunk@41451 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/lualatex/cloze/README | 14 +- Master/texmf-dist/doc/lualatex/cloze/README.md | 14 +- Master/texmf-dist/doc/lualatex/cloze/cloze.pdf | Bin 171551 -> 228683 bytes Master/texmf-dist/scripts/cloze/cloze.lua | 8 +- Master/texmf-dist/source/lualatex/cloze/cloze.dtx | 185 ++++++++++++++-------- Master/texmf-dist/source/lualatex/cloze/cloze.ins | 6 +- Master/texmf-dist/tex/lualatex/cloze/cloze.sty | 4 +- 7 files changed, 150 insertions(+), 81 deletions(-) diff --git a/Master/texmf-dist/doc/lualatex/cloze/README b/Master/texmf-dist/doc/lualatex/cloze/README index fb2276cb66c..13b3d6931a4 100644 --- a/Master/texmf-dist/doc/lualatex/cloze/README +++ b/Master/texmf-dist/doc/lualatex/cloze/README @@ -1,10 +1,10 @@ # Description -EN: `cloze` is a LaTeX package to generate cloze. It uses the +EN: `cloze` is a LuaLaTeX/LaTeX package to generate cloze. It uses the capabilities of the modern TeX engine LuaTex. -DE: `cloze` ist a LaTeX-Paket zum Erstellen von Lückentexten. Es nutzt -die Möglichkeiten der modernen TeX-Engine LuaTeX. +DE: `cloze` ist a LuaLaTeX/LaTeX-Paket zum Erstellen von Lückentexten. +Es nutzt die Möglichkeiten der modernen TeX-Engine LuaTeX. # License @@ -20,6 +20,14 @@ license is in: and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. +# CTAN + +Since July 2015 the cloze package is included in the Comprehensive TeX +Archive Network (CTAN). + +* TeX archive: https://www.ctan.org/tex-archive/macros/luatex/latex/cloze +* Package page: https://www.ctan.org/pkg/cloze + # Repository https://github.com/Josef-Friedrich/cloze diff --git a/Master/texmf-dist/doc/lualatex/cloze/README.md b/Master/texmf-dist/doc/lualatex/cloze/README.md index fb2276cb66c..13b3d6931a4 100644 --- a/Master/texmf-dist/doc/lualatex/cloze/README.md +++ b/Master/texmf-dist/doc/lualatex/cloze/README.md @@ -1,10 +1,10 @@ # Description -EN: `cloze` is a LaTeX package to generate cloze. It uses the +EN: `cloze` is a LuaLaTeX/LaTeX package to generate cloze. It uses the capabilities of the modern TeX engine LuaTex. -DE: `cloze` ist a LaTeX-Paket zum Erstellen von Lückentexten. Es nutzt -die Möglichkeiten der modernen TeX-Engine LuaTeX. +DE: `cloze` ist a LuaLaTeX/LaTeX-Paket zum Erstellen von Lückentexten. +Es nutzt die Möglichkeiten der modernen TeX-Engine LuaTeX. # License @@ -20,6 +20,14 @@ license is in: and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. +# CTAN + +Since July 2015 the cloze package is included in the Comprehensive TeX +Archive Network (CTAN). + +* TeX archive: https://www.ctan.org/tex-archive/macros/luatex/latex/cloze +* Package page: https://www.ctan.org/pkg/cloze + # Repository https://github.com/Josef-Friedrich/cloze diff --git a/Master/texmf-dist/doc/lualatex/cloze/cloze.pdf b/Master/texmf-dist/doc/lualatex/cloze/cloze.pdf index 304c1bb20e6..10ff5ee63d8 100644 Binary files a/Master/texmf-dist/doc/lualatex/cloze/cloze.pdf and b/Master/texmf-dist/doc/lualatex/cloze/cloze.pdf differ diff --git a/Master/texmf-dist/scripts/cloze/cloze.lua b/Master/texmf-dist/scripts/cloze/cloze.lua index dc05de9af43..aa48473a349 100755 --- a/Master/texmf-dist/scripts/cloze/cloze.lua +++ b/Master/texmf-dist/scripts/cloze/cloze.lua @@ -75,10 +75,8 @@ end function nodex.create_linefil() local glue = node.new('glue') glue.subtype = 100 - local glue_spec = node.new('glue_spec') - glue_spec.stretch = 65536 - glue_spec.stretch_order = 3 - glue.spec = glue_spec + glue.stretch = 65536 + glue.stretch_order = 3 local rule = nodex.create_line(0) rule.dir = 'TLT' glue.leader = rule @@ -140,7 +138,7 @@ function registry.get_marker(item, mode, position) end function registry.get_marker_data(item) if item.id == node.id('whatsit') - and item.subtype == 44 + and item.subtype == node.subtype('user_defined') and item.user_id == registry.user_id then return registry.get_storage(item.value) else diff --git a/Master/texmf-dist/source/lualatex/cloze/cloze.dtx b/Master/texmf-dist/source/lualatex/cloze/cloze.dtx index 59894fcca8c..a3c062a1d13 100644 --- a/Master/texmf-dist/source/lualatex/cloze/cloze.dtx +++ b/Master/texmf-dist/source/lualatex/cloze/cloze.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015 by Josef Friedrich +% Copyright (C) 2015-2016 by Josef Friedrich % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license @@ -14,7 +14,7 @@ % % This work has the LPPL maintenance status `maintained'. % -% The Current Maintainer of this work is Josef Friedrih. +% The Current Maintainer of this work is Josef Friedrich. % % This work consists of the files cloze.dtx and cloze.ins % and the derived filebase cloze.sty and cloze.lua. @@ -28,7 +28,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{cloze} %<*package> - [2015/07/08 v1.0 Package to typeset cloze worksheets or cloze tests] + [2016/06/13 v1.1 Package to typeset cloze worksheets or cloze tests] % %<*driver> \documentclass{ltxdoc} @@ -73,6 +73,7 @@ \end{center}% } +% Colors for the codebox \definecolor{grayline}{gray}{0.9} \definecolor{graybackground}{gray}{0.97} @@ -108,7 +109,7 @@ \def\secref#1{(\rightarrow\ \ref{#1})} \newcommand{\option}[2]{\tt{[#1=}\meta{#2}\tt{]}} -\newcommand{\luafunction}[1]{ +\newcommand{\clozeluafunction}[1]{ \marginpar{% \raggedleft% \MacroFont% @@ -288,22 +289,6 @@ die \cloze{Ab\-teil\-ungs\-lei\-ter\-in} Würze \cloze{Ober\-kom\-mi\-sar\-in} -\cloze{Fil\-lial\-lei\-ter\-in} -\cloze{Te\-le\-kom\-mu\-ni\-ka\-tions\-ü\-ber\-wach\-ung} -\cloze{Hoch\-lei\-stungs\-flüs\-sig\-keits\-chro\-ma\-to\-gra\-phie} -\cloze{Metz\-ger\-mei\-ster\-in} -\cloze{Ab\-teil\-ungs\-lei\-ter\-in} -ein -\cloze{Ober\-kom\-mi\-sar\-in} -paar -\cloze{Fil\-lial\-lei\-ter\-in} -kurze -\cloze{Metz\-ger\-mei\-ster\-in} -Wörter -\cloze{Ab\-teil\-ungs\-lei\-ter\-in} -\cloze{Ober\-kom\-mi\-sar\-in} -\cloze{Fil\-lial\-lei\-ter\-in} -\cloze{Metz\-ger\-mei\-ster\-in} \end{clozeexample} %% @@ -809,6 +794,53 @@ option is \tt{\getdefaults{width}}. \optionwidth{5cm} \optionwidth{7cm} \end{clozeexample} + +%----------------------------------------------------------------------- +% Special application areas +%----------------------------------------------------------------------- + +\subsection{Special application areas} + +%% +% picture +%% + +\subsubsection{The \tt{picture} environment} + +\begin{code} +\begin{verbatim} +\begin{picture}(320,100) +\put(80,25){\cloze{Lorem}} +\put(160,50){\cloze{ipsum}} +\put(240,75){\cloze{dolor}} +\end{picture} +\end{verbatim} +\end{code} + +\begin{clozeexample} +\begin{picture}(320,100) +\put(80,25){\cloze{Lorem}} +\put(160,50){\cloze{ipsum}} +\put(240,75){\cloze{dolor}} +\end{picture} +\end{clozeexample} + +%% +% tabular +%% + +\subsubsection{The \tt{tabular} environment} + +% No |c| inside because of short verbatim. + +\begin{clozeexample} +\begin{tabular}{l c c r} +\cloze{Lorem} & \cloze{ipsum} & \cloze{dolor} & \cloze{sit} \\ +\cloze{amet} & \cloze{consectetur} & \cloze{adipisicing} & \cloze{elit} \\ +\cloze{sed} & \cloze{do} & \cloze{eiusmod} & \cloze{tempor} \\ +\end{tabular} +\end{clozeexample} + \DocInput{cloze.dtx} \pagebreak \PrintChanges @@ -819,11 +851,11 @@ option is \tt{\getdefaults{width}}. %<*readme> # Description -EN: `cloze` is a LaTeX package to generate cloze. It uses the +EN: `cloze` is a LuaLaTeX/LaTeX package to generate cloze. It uses the capabilities of the modern TeX engine LuaTex. -DE: `cloze` ist a LaTeX-Paket zum Erstellen von Lückentexten. Es nutzt -die Möglichkeiten der modernen TeX-Engine LuaTeX. +DE: `cloze` ist a LuaLaTeX/LaTeX-Paket zum Erstellen von Lückentexten. +Es nutzt die Möglichkeiten der modernen TeX-Engine LuaTeX. # License @@ -839,6 +871,14 @@ license is in: and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. +# CTAN + +Since July 2015 the cloze package is included in the Comprehensive TeX +Archive Network (CTAN). + +* TeX archive: https://www.ctan.org/tex-archive/macros/luatex/latex/cloze +* Package page: https://www.ctan.org/pkg/cloze + # Repository https://github.com/Josef-Friedrich/cloze @@ -886,6 +926,7 @@ or manually: % % \changes{v0.1}{2015/06/16}{Converted to DTX file} % \changes{v1.0}{2015/07/08}{Inital release} +% \changes{v1.1}{2016/06/13}{Make cloze compatible to LuaTeX version 0.95} % % \DoNotIndex{\newcommand,\newenvironment,\def,\directlua} % @@ -1403,7 +1444,7 @@ base.is_registered = {} % % \paragraph{Color handling (color)} % -% \luafunction{create\_colorstack} +% \clozeluafunction{create\_colorstack} % Create a whatsit node of the subtype |pdf_colorstack|. |data| is a PDF % colorstack string like |0 0 0 rg 0 0 0 RG|. % \begin{macrocode} @@ -1418,7 +1459,7 @@ function nodex.create_colorstack(data) end % \end{macrocode} % -% \luafunction{create\_color} +% \clozeluafunction{create\_color} % |nodex.create_color()| is a wrapper for the function % |nodex.create_colorstack()|. It queries the current values of the % options |linecolor| and |textcolor|. The argument |option| accepts the @@ -1441,7 +1482,7 @@ end % % \paragraph{Line handling (line)} % -% \luafunction{create\_line} +% \clozeluafunction{create\_line} % Create a rule node, which is used as a line for the cloze texts. The % |depth| and the |height| of the rule are calculated form the options % |thickness| and |distance|. The argument |width| must have the length @@ -1458,7 +1499,7 @@ function nodex.create_line(width) end % \end{macrocode} % -% \luafunction{insert\_line} +% \clozeluafunction{insert\_line} % Enclose a rule node (cloze line) with two PDF colorstack whatsits. The % first colorstack node dyes the line, the seccond resets the color. % @@ -1482,7 +1523,7 @@ function nodex.insert_line(head, current, width) end % \end{macrocode} % -% \luafunction{write\_line} +% \clozeluafunction{write\_line} % This function enclozes a rule node with color nodes as it the function % |nodex.insert_line| does. In contrast to |nodex.insert_line| the three % nodes are appended to \TeX’s ‘current list’. They are not inserted in @@ -1506,17 +1547,15 @@ end % % \paragraph{Handling of extendable lines (linefil)} % -% \luafunction{create\_linefil} +% \clozeluafunction{create\_linefil} % This function creates a line which stretchs indefinitely in the % horizontal direction. % \begin{macrocode} function nodex.create_linefil() local glue = node.new('glue') glue.subtype = 100 - local glue_spec = node.new('glue_spec') - glue_spec.stretch = 65536 - glue_spec.stretch_order = 3 - glue.spec = glue_spec + glue.stretch = 65536 + glue.stretch_order = 3 local rule = nodex.create_line(0) rule.dir = 'TLT' glue.leader = rule @@ -1524,7 +1563,7 @@ function nodex.create_linefil() end % \end{macrocode} % -% \luafunction{write\_linefil} +% \clozeluafunction{write\_linefil} % The function |nodex.write_linefil| surrounds a indefinitely strechable % line with color whatsits and puts it to \TeX’s ‘current (node) list’. % \begin{macrocode} @@ -1537,7 +1576,7 @@ end % % \paragraph{Kern handling (kern)} % -% \luafunction{create\_kern} +% \clozeluafunction{create\_kern} % This function creates a kern node with a given width. The argument % |width| had to be specified in scaled points. % \begin{macrocode} @@ -1548,7 +1587,7 @@ function nodex.create_kern(width) end % \end{macrocode} % -% \luafunction{strut\_to\_hlist} +% \clozeluafunction{strut\_to\_hlist} % To make life easier: We add at the beginning of each hlist a strut. % Now we can add line, color etc. nodes after the first node of a hlist % not before - after is much more easier. @@ -1563,7 +1602,7 @@ function nodex.strut_to_hlist(hlist) end % \end{macrocode} % -% \luafunction{write\_margin} +% \clozeluafunction{write\_margin} % Write kern nodes to the current node list. This kern nodes can be used % to build a margin. % \begin{macrocode} @@ -1588,7 +1627,7 @@ end % some additional data like the local options. % \end{enumerate} % -% \luafunction{create\_marker} +% \clozeluafunction{create\_marker} % We create a user defined whatsit node that can store a number (type = % 100). In order to distinguish this node from other user defined % whatsit nodes we set the |user_id| to a large number. We call this @@ -1604,7 +1643,7 @@ function registry.create_marker(index) end % \end{macrocode} % -% \luafunction{write\_marker} +% \clozeluafunction{write\_marker} % Write a marker node to \TeX's current node list. The argument |mode| % accepts the string values |basic|, |fix| and |par|. The argument % |position|. The argument |position| is either set to |start| or to @@ -1617,7 +1656,7 @@ function registry.write_marker(mode, position) end % \end{macrocode} % -% \luafunction{check\_marker} +% \clozeluafunction{check\_marker} % This functions tests, whether the given node |item| is a marker. The % argument |item| is a node. The argument |mode| accepts the string % values |basic|, |fix| and |par|. The argument |position| is either set @@ -1633,7 +1672,7 @@ function registry.check_marker(item, mode, position) end % \end{macrocode} % -% \luafunction{get\_marker} +% \clozeluafunction{get\_marker} % |registry.get_marker| returns the given marker. The argument |item| is % a node. The argument |mode| accepts the string values |basic|, |fix| % and |par|. The argument |position| is either set to |start| or to @@ -1653,13 +1692,13 @@ function registry.get_marker(item, mode, position) end % \end{macrocode} % -% \luafunction{get\_marker\_data} +% \clozeluafunction{get\_marker\_data} % |registry.get_marker_data| tests whether the node |item| is a marker. % The argument |item| is a node of unspecified type. % \begin{macrocode} function registry.get_marker_data(item) if item.id == node.id('whatsit') - and item.subtype == 44 + and item.subtype == node.subtype('user_defined') and item.user_id == registry.user_id then return registry.get_storage(item.value) else @@ -1668,7 +1707,7 @@ function registry.get_marker_data(item) end % \end{macrocode} % -% \luafunction{get\_marker\_values} +% \clozeluafunction{get\_marker\_values} % First this function saves the associatied values of a marker to the % local options table. Second it returns this values. The argument % |marker| is a whatsit node. @@ -1682,7 +1721,7 @@ end % % \paragraph{Storage functions (storage)} % -% \luafunction{get\_index} +% \clozeluafunction{get\_index} % |registry.index| is a counter. The functions |registry.get_index()| % increases the counter by one and then returns it. % \begin{macrocode} @@ -1695,7 +1734,7 @@ function registry.get_index() end % \end{macrocode} % -% \luafunction{set\_storage} +% \clozeluafunction{set\_storage} % |registry.set_storage()| stores the local options in the Lua table % |registry.storage|. It returns a numeric index number. This index % number is the key, where the local options in the Lua table are @@ -1714,7 +1753,7 @@ function registry.set_storage(mode, position) end % \end{macrocode} % -% \luafunction{get\_storage} +% \clozeluafunction{get\_storage} % The function |registry.get_storage()| retrieves values which belong to % a whatsit marker. The argument |index| is a numeric value. % \begin{macrocode} @@ -1725,7 +1764,7 @@ end % % \paragraph{Option processing (option)} % -% \luafunction{set\_option} +% \clozeluafunction{set\_option} % This function stores a value |value| and his associated key |key| % either to the global (|registry.global_options|) or to the local % (|registry.local_options|) option table. The global boolean variable @@ -1744,7 +1783,7 @@ function registry.set_option(key, value) end % \end{macrocode} % -% \luafunction{set\_is\_global} +% \clozeluafunction{set\_is\_global} % |registry.set_is_global()| sets the variable |registry.is_global| to % the value |value|. It is intended, that the variable takes boolean % values. @@ -1754,7 +1793,7 @@ function registry.set_is_global(value) end % \end{macrocode} % -% \luafunction{unset\_local\_options} +% \clozeluafunction{unset\_local\_options} % This function unsets the local options. % \begin{macrocode} function registry.unset_local_options() @@ -1762,7 +1801,7 @@ function registry.unset_local_options() end % \end{macrocode} % -% \luafunction{unset\_global\_options} +% \clozeluafunction{unset\_global\_options} % |registry.unset_global_options| empties the global options storage. % \begin{macrocode} function registry.unset_global_options() @@ -1770,7 +1809,7 @@ function registry.unset_global_options() end % \end{macrocode} % -% \luafunction{get\_value} +% \clozeluafunction{get\_value} % Retrieve a value from a given key. First search for the value in the % local options, then in the global options. If both option storages are % empty, the default value will be returned. @@ -1786,7 +1825,7 @@ function registry.get_value(key) end % \end{macrocode} % -% \luafunction{get\_value\_show} +% \clozeluafunction{get\_value\_show} % The function |registry.get_value_show()| returns the boolean value % |true| if the option |show| is true. In contrast to the function % |registry.get_value()| it converts the string value `true' to a @@ -1805,7 +1844,7 @@ function registry.get_value_show() end % \end{macrocode} % -% \luafunction{has\_value} +% \clozeluafunction{has\_value} % This function tests whether the value |value| is not empty and has a % value. % \begin{macrocode} @@ -1818,7 +1857,7 @@ function registry.has_value(value) end % \end{macrocode} % -% \luafunction{get\_defaults} +% \clozeluafunction{get\_defaults} % |registry.get_defaults(option)| returns a the default value of the % given option. % \begin{macrocode} @@ -1829,7 +1868,7 @@ end % % \subsubsection{Assembly to cloze texts (cloze)} % -% \luafunction{basic\_make} +% \clozeluafunction{basic\_make} % The function |cloze.basic_make()| makes one gap. The argument |head| % is the head node of a node list. The argument |start| is the node, % where the gap begins. The argument |stop| is the node, where the gap @@ -1870,8 +1909,24 @@ function cloze.basic_make(head, hlist, start, stop) end % \end{macrocode} % -% \luafunction{basic} -% The corresponding \LaTeX command to this lua function is \cmd{\cloze} +% \subsubsection{Node trees} +% +% Some graphics for better understanding of the node tree: +% +% \paragraph{Paragraph} +% +% \noindent\includegraphics[width=\linewidth]{graphics/par} +% +% \paragraph{Tabular environment} +% +% \noindent\includegraphics[width=\linewidth]{graphics/tabular} +% +% \paragraph{Picture environment} +% +% \noindent\includegraphics[width=\linewidth]{graphics/picture} +% +% \clozeluafunction{basic} +% The corresponding \LaTeX{} command to this lua function is \cmd{\cloze} % \secref{sec:command-cloze}. The argument |head| is the head node of a % node list. % \begin{macrocode} @@ -1914,7 +1969,7 @@ function cloze.basic(head) end % \end{macrocode} % -% \luafunction{fix\_make} +% \clozeluafunction{fix\_make} % The function |cloze.fix_make| generates a gap of fixed width. % % \subparagraph*{Node lists} @@ -1979,8 +2034,8 @@ function cloze.fix_make(head, start, stop) end % \end{macrocode} % -% \luafunction{fix} -% The corresponding \LaTeX command to this Lua function is +% \clozeluafunction{fix} +% The corresponding \LaTeX{} command to this Lua function is % \cmd{\clozefix} \secref{sec:command-clozefix}. The argument |head| is % the head node of a node list. % \begin{macrocode} @@ -2003,8 +2058,8 @@ function cloze.fix(head) end % \end{macrocode} % -% \luafunction{par} -% The corresponding \LaTeX environment to this lua function is +% \clozeluafunction{par} +% The corresponding \LaTeX{} environment to this lua function is % |clozepar| \secref{sec:command-clozepar}. % % \subparagraph*{Node lists} @@ -2061,7 +2116,7 @@ end % The |base| table contains functions which are published to the % |cloze.sty| file. % -% \luafunction{register} +% \clozeluafunction{register} % This function registers the functions |cloze.par|, |cloze.basic| and % |cloze.fix| the Lua callbacks. |cloze.par| and |cloze.basic| are % registered to the callback |post_linebreak_filter| and |cloze.fix| to @@ -2098,7 +2153,7 @@ function base.register(mode) end % \end{macrocode} % -% \luafunction{unregister} +% \clozeluafunction{unregister} % |base.unregister(mode)| deletes the registered functions from the Lua % callbacks. The argument |mode| accepts the string values |basic|, % |fix| and |par|. diff --git a/Master/texmf-dist/source/lualatex/cloze/cloze.ins b/Master/texmf-dist/source/lualatex/cloze/cloze.ins index 8012a6b5e35..87a4e09d25d 100644 --- a/Master/texmf-dist/source/lualatex/cloze/cloze.ins +++ b/Master/texmf-dist/source/lualatex/cloze/cloze.ins @@ -1,4 +1,4 @@ -% Copyright (C) 2015 by Josef Friedrich +% Copyright (C) 2015-2016 by Josef Friedrich % ---------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license @@ -14,7 +14,7 @@ \input docstrip.tex \keepsilent -\usedir{tex/latex/cloze} +\usedir{tex/lualatex/cloze} \askforoverwritefalse @@ -22,7 +22,7 @@ This is a generated file. -Copyright (C) 2015 by Josef Friedrich +Copyright (C) 2015-2016 by Josef Friedrich ---------------------------------------------------------------------- This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license diff --git a/Master/texmf-dist/tex/lualatex/cloze/cloze.sty b/Master/texmf-dist/tex/lualatex/cloze/cloze.sty index de90141b594..895a11bcd5e 100644 --- a/Master/texmf-dist/tex/lualatex/cloze/cloze.sty +++ b/Master/texmf-dist/tex/lualatex/cloze/cloze.sty @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright (C) 2015 by Josef Friedrich +%% Copyright (C) 2015-2016 by Josef Friedrich %% ---------------------------------------------------------------------- %% This work may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3c of this license @@ -22,7 +22,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{cloze} - [2015/07/08 v1.0 Package to typeset cloze worksheets or cloze tests] + [2016/06/13 v1.1 Package to typeset cloze worksheets or cloze tests] \RequirePackage{fontspec,luatexbase-mcb,kvoptions,xcolor} \directlua{ cloze = require('cloze') -- cgit v1.2.3