summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/censor/censor.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-12-24 03:01:03 +0000
committerNorbert Preining <norbert@preining.info>2021-12-24 03:01:03 +0000
commit71bfbdc975332e32bf47112ec2d32f8491b1df40 (patch)
tree9fd890769d91f55bee8be839f70c2e41450adbac /macros/latex/contrib/censor/censor.sty
parentefa3a013f699c533896b44e4fcb74c730e94ad34 (diff)
CTAN sync 202112240301
Diffstat (limited to 'macros/latex/contrib/censor/censor.sty')
-rw-r--r--macros/latex/contrib/censor/censor.sty135
1 files changed, 53 insertions, 82 deletions
diff --git a/macros/latex/contrib/censor/censor.sty b/macros/latex/contrib/censor/censor.sty
index 49e1190619..6335b16ae3 100644
--- a/macros/latex/contrib/censor/censor.sty
+++ b/macros/latex/contrib/censor/censor.sty
@@ -1,7 +1,7 @@
% censor.sty
-\def\censorversionnumber{3.22}
+\def\censorversionnumber{4.0}
\ProvidesPackage{censor}
-[2018/11/15 \censorversionnumber
+[2021/12/23 \censorversionnumber
Provides capability for redaction of sensitive information]
%
@@ -30,15 +30,17 @@
% 3.21 - Fixed bug regarding \xblackout rules remaining after a
% \StopCensoring
% 3.22 - changed `\if to \ifx in definition of \bl@t, to handle macros like \%
+% 4.0 - Recast \blackout and \xblackout in terms of tokcycle environments
+% - Introduced \blackoutenv...\endblackoutenv and
+% \xblackoutenv...\endxblackoutenv
\usepackage{pbox}
-\usepackage{ifnextok}
\newlength\censorruledepth
\newlength\censorruleheight
\censorruledepth=-0.3ex% -0.3ex DEFAULT
\censorruleheight=2.1ex% 2.1ex DEFAULT
-\def\censordot{.}% versus \def\censordot{ }%
+\def\censordot{\censor{.}}% versus \def\censordot{ }%
\newcommand\censorrule[1]{\protect\rule[\censorruledepth]{#1}{\censorruleheight}}
@@ -53,90 +55,57 @@
\newcommand\StopCensoring{%
\let\censor\un@censor%
\let\censorbox\un@censorbox%
- \let\xblackout\blackout%
+ \renewcommand\censpace{ }%
}
\newcommand\RestartCensoring{%
\renewcommand\censor{\@ifstar{\@cenlen}{\@cenword}}%
\renewcommand\censorbox{\@ifstar{\censor@dim}{\censor@box}}%
- \let\xblackout\sv@xblackout%
+ \let\censpace\sv@censpace%
}
-\let\sv@tilde~
-
-\def\stringend{$}
-
-\long\def\blackout#1{\def~{-}\censor@Block#1\stringend\let~\sv@tilde}
-\long\def\censor@Block{\IfNextToken\stringend{\@gobble}%
- {\IfNextToken\@sptoken{ \bl@t{\censor@Block}}%
- {\bl@t{\censor@Block}}}}
-
-% V2.00 DEFINITION:
-% \def\bl@t#1#2{\censor{#2}#1}
-
-% V2.10 DEFINITION (MADE \long IN V3.1):
-%\long\def\bl@t#1#2{\if\bpar#2\par\else\if.#2\censordot\else\censor{#2}\fi\fi#1}
-
-% V3.22 DEFINITION
-\long\def\bl@t#1#2{\ifx\bpar#2\par\else\if.#2\censordot\else\censor{#2}\fi\fi#1}
-
-%\def\bpar{_} %V3.00 DEFINITION
-\let\bpar\par %AS OF V3.1, CAN HANDLE \par
-
-\long\def\xblackout#1{\rule{0ex}{0ex}%
- \def~{-}%
- \def\@justpar{F}%
- \def\@justperiod{F}%
- \def\@justspace{F}%
- \xcensor@Block#1\stringend%
- \let~\sv@tilde%
- }
-
-\let\sv@xblackout\xblackout
-
-\long\def\xcensor@Block{\IfNextToken\stringend{\@gobble}%
- {\IfNextToken\@sptoken{ \def\@justspace{T}\xbl@t{\xcensor@Block}}%
- {\xbl@t{\xcensor@Block}}}}
-
-\newlength\periodrlap\setlength\periodrlap{1.6ex}
-\newlength\afterperiodlap\setlength\afterperiodlap{1.2ex}
-\newlength\lletterlap\setlength\lletterlap{0.55ex}
-\newlength\rletterlap\setlength\rletterlap{0.55ex}
-\newlength\afterspacelap\setlength\afterspacelap{0.0ex}
-
-\def\@periodrlap{\rlap{\censorrule{\periodrlap}}}
-\def\@afterperiodlap{\llap{\censorrule{\afterperiodlap}}}
-\def\@lletterlap{\llap{\censorrule{\lletterlap}}}
-\def\@rletterlap{\rlap{\censorrule{\rletterlap}}}
-\def\@afterspacelap{\llap{\censorrule{\afterspacelap}}}
-
-\long\def\xbl@t#1#2{%
- \ifx\par#2%
- \par\def\@justpar{T}%
- \else%
- \if T\@justspace%
- \rule{0ex}{1ex}\@afterspacelap%
- \fi%
- \if.#2%
- \def\@justperiod{T}%
- \@periodrlap%
- \censordot%
- \else%
- \if F\@justpar%
- \if T\@justperiod%
- \@afterperiodlap%
- \else%
- \@lletterlap%
- \fi%
- \fi%
- \censor{#2}%
- \@rletterlap%
- \def\@justpar{F}%
- \def\@justperiod{F}%
- \def\@justspace{F}%
- \fi%
- \fi%
- #1%
-}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage{tokcycle}[2021/03/10]
+
+
+\def\@dump#1{\addcytoks[1]{\expandafter\censor\expandafter{#1}}\def#1{}}
+\def\@append#1#2{\tc@defx#1{#1#2}}
+
+\def\spacelap{0.6ex}
+\def\censpace{\rlap{\censorrule{\spacelap}} \llap{\censorrule{\spacelap}}}
+\let\sv@censpace\censpace
+
+\long\def\blackout#1{\blackoutenv#1\endblackoutenv}
+\long\def\xblackout#1{\xblackoutenv#1\endxblackoutenv}
+
+\newif\ifexpandarg
+
+\xtokcycleenvironment\xblackoutenv
+ {\ifx.##1\@dump\censored@word\addcytoks[1]{\censordot}\else
+ \@append\censored@word{##1}%
+ \tcpeek\@next\ifx\@next\@tcEscapeptr\@dump\censored@word\fi\fi}
+ {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter{\expanded{##1}}}%
+ {\processtoks{##1}}\@dump\censored@word\expandargfalse}
+ {\@dump\censored@word\tctestifx{~##1}{\@append\censored@word{##1}}%
+ {\tctestifx{\expanded##1}{\expandargtrue}{\addcytoks{##1}}}}
+ {\@dump\censored@word\addcytoks{\censpace}}
+ {\def\censored@word{}}
+ {\@dump\censored@word}
+\xtokcycleenvironment\blackoutenv
+ {\ifx.##1\@dump\censored@word\addcytoks[1]{\censordot}\else
+ \@append\censored@word{##1}%
+ \tcpeek\@next\ifx\@next\@tcEscapeptr\@dump\censored@word\fi\fi}
+ {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter{\expanded{##1}}}%
+ {\processtoks{##1}}\@dump\censored@word\expandargfalse}
+ {\@dump\censored@word\tctestifx{~##1}{\@append\censored@word{##1}}%
+ {\tctestifx{\expanded##1}{\expandargtrue}{\addcytoks{##1}}}}
+ {\@dump\censored@word\addcytoks{##1}}
+ {\def\censored@word{}}
+ {\@dump\censored@word}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\censorbox{\@ifstar{\censor@dim}{\censor@box}}
\newcommand\censor@dim[4][]{{#1%
@@ -152,3 +121,5 @@
% NOTE: A \protect\censorbox{} MAY BE REQUIRED INSIDE SOME ENVIRONMENTS
\endinput
+
+