From 6ba6790f27cad3d67722d7cfe9a881bedf358fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ke=C3=9Fler?= Date: Sat, 18 Sep 2021 11:47:13 +0200 Subject: [PATCH] add restate package that provides mechanics to restate theorems if they are not part of the current document --- wip/mkessler-restate.sty | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 wip/mkessler-restate.sty diff --git a/wip/mkessler-restate.sty b/wip/mkessler-restate.sty new file mode 100644 index 0000000..495ed7a --- /dev/null +++ b/wip/mkessler-restate.sty @@ -0,0 +1,37 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-restate} + +\RequirePackage{xkeyval} + +\newif\ifmkessler@restate@english\mkessler@restate@englishtrue +\DeclareOptionX{english}{\mkessler@restate@englishtrue} +\DeclareOptionX{german}{\mkessler@restate@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@restate@englishfalse} + +\define@boolkey+{mkessler-restate.sty}[mkessler@restate@]{strict}[true]{ + \ifmkessler@restate@strict + \PackageInfo{mkessler-restate}{Strict mode enabled. Undefined restates will throw errors.}% + \else + \PackageInfo{mkessler-restate}{Strict mode disabled. Undefined restates will now print placeholder boxes}% + \fi +}{ + \PackageWarning{mkessler-restate}{Erroneous input to key 'strict' ignored. Provide =true or =false.} +} +\ProcessOptionsX*\relax + +\newcommand\restatesetup[1]{\setkeys{mkessler-restate.sty}{#1}} + +\RequirePackage{todonotes} +\RequirePackage{xparse} + +\NewDocumentCommand{\restatetheorem}{s m}{ + \ifcsdef{#2}{ + \ifx#1\BooleanTrue\csname#2\endcsname*\else\csname#2\endcsname\fi + }{ + \ifmkessler@restate@strict + \PackageError{mkessler-restate}{Strict mode enabled but restate command not defined}{The theorem you tried to restate is not defined. Either make sure it is so that it can be printed or disable the strict mode with \noexpand\restatesetup{strict=false} to print a placeholder instead} + \else + \missingfigure{\ifmkessler@restate@english Here theorem #1 is missing, since it is not part of this document.\else Hier fehlt die Wiederholung von Satz #1, der nicht Teil dieses Dokumentes ist.\fi} + \fi + } +}