texlive[61969] Master/texmf-dist: censor (10feb22)
commits+karl at tug.org
commits+karl at tug.org
Thu Feb 10 22:18:52 CET 2022
Revision: 61969
http://tug.org/svn/texlive?view=revision&revision=61969
Author: karl
Date: 2022-02-10 22:18:52 +0100 (Thu, 10 Feb 2022)
Log Message:
-----------
censor (10feb22)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/censor/censor.pdf
trunk/Master/texmf-dist/doc/latex/censor/censor.tex
trunk/Master/texmf-dist/tex/latex/censor/censor.sty
Modified: trunk/Master/texmf-dist/doc/latex/censor/censor.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/censor/censor.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/censor/censor.tex 2022-02-10 21:18:19 UTC (rev 61968)
+++ trunk/Master/texmf-dist/doc/latex/censor/censor.tex 2022-02-10 21:18:52 UTC (rev 61969)
@@ -556,8 +556,20 @@
The \verb|\blackout| and \verb|\xblackout| macros can at least digest
control sequences in the input-text stream.
-How the sequences are handled will require some user intervention.
-By default, these macros will be echoed into the output stream in a literal
+How the sequences are handled may require some user intervention.
+
+Certain macro that are known to expand directly into typeset characters
+ are handled automatically.
+These include \verb|\$|, \verb|\&|, \verb|\#|, \verb|\%|, \verb|\_|,
+ \verb|\o|, \verb|\O|, \verb|\oe|, \verb|\OE|, \verb|\aa|, \verb|\AA|,
+ \verb|\ae|, \verb|\AE|, \verb|\l|, and \verb|\L|.
+Other macros, that are part of the \LaTeX{} accents, are likewise
+ handled seamlessly, including \verb|\`|, \verb|\=|, \verb|\'|,
+ \verb|\.|, \verb|\^|, \verb|\"|, \verb|\u|, \verb|\d|, \verb|\v|,
+ \verb|\b|, \verb|\H|, \verb|\t|, \verb|\~|, and \verb|\c|.
+
+For macros outside of these special cases, the default behavior is
+ to echo the macro into the output stream in a literal
(unexpanded) form.
Consider the following line of \LaTeX{} code:
@@ -574,7 +586,7 @@
of \verb|\textit|.
Some macros, however, expand to literal text.
-Because they are, by default, carried literally into the output, they
+Because macros are, by default, carried literally into the output, they
will only expand into text \textit{after} the censoring has been
applied.
Consider the following line of \LaTeX{} code:
Modified: trunk/Master/texmf-dist/tex/latex/censor/censor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/censor/censor.sty 2022-02-10 21:18:19 UTC (rev 61968)
+++ trunk/Master/texmf-dist/tex/latex/censor/censor.sty 2022-02-10 21:18:52 UTC (rev 61969)
@@ -1,7 +1,7 @@
% censor.sty
-\def\censorversionnumber{4.0}
+\def\censorversionnumber{4.1}
\ProvidesPackage{censor}
-[2021/12/23 \censorversionnumber
+[2022/02/09 \censorversionnumber\
Provides capability for redaction of sensitive information]
%
@@ -17,22 +17,6 @@
%
% The Current Maintainer of this work is Steven B. Segletes.
-% VERSION:
-% 1.00 - Initial release
-% 2.00 - Added \blackout
-% 2.10 - Allowed \blackout to cross paragraph boundaries with use of
-% \bpar. Stopped censoring periods, in order to preserve
-% end-of-sentence spacing, which differs from inter-word spacing.
-% 3.00 - \censorbox introduced to handle figures, tables, etc.
-% 3.10 - Made \blackout work with \par in argument. Introduced
-% \xblackout
-% 3.20 - Specify depth/height of censor rule. Introduced \def\censordot{}
-% 3.21 - Fixed bug regarding \xblackout rules remaining after a
-% \StopCensoring
-% 3.22 - changed `\if to \ifx in definition of \bl at t, to handle macros like \%
-% 4.0 - Recast \blackout and \xblackout in terms of tokcycle environments
-% - Introduced \blackoutenv...\endblackoutenv and
-% \xblackoutenv...\endxblackoutenv
\usepackage{pbox}
\newlength\censorruledepth
@@ -68,7 +52,8 @@
\usepackage{tokcycle}[2021/03/10]
-\def\@dump#1{\addcytoks[1]{\expandafter\censor\expandafter{#1}}\def#1{}}
+\def\@dump#1{\if\relax\detokenize\expandafter{#1}\relax\else
+ \addcytoks[1]{\expandafter\censor\expandafter{#1}}\fi\def#1{}}
\def\@append#1#2{\tc at defx#1{#1#2}}
\def\spacelap{0.6ex}
@@ -80,30 +65,78 @@
\newif\ifexpandarg
-\xtokcycleenvironment\xblackoutenv
+\xtokcycleenvironment\blackoutenv
{\ifx.##1\@dump\censored at word\addcytoks[1]{\censordot}\else
\@append\censored at word{##1}%
\tcpeek\@next\ifx\@next\@tcEscapeptr\@dump\censored at word\fi\fi}
- {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter{\expanded{##1}}}%
- {\processtoks{##1}}\@dump\censored at word\expandargfalse}
- {\@dump\censored at word\tctestifx{~##1}{\@append\censored at word{##1}}%
- {\tctestifx{\expanded##1}{\expandargtrue}{\addcytoks{##1}}}}
- {\@dump\censored at word\addcytoks{\censpace}}
- {\def\censored at word{}}
+ {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter
+ {\expanded{##1}}\@dump\censored at word}{\groupedcytoks{\processtoks{##1}%
+ \@dump\censored at word}}\expandargfalse}
+ {\tctestifx{~##1}{\@append\censored at word{##1}}%
+ {\tctestifx{\expanded##1}{\@dump\censored at word\expandargtrue}%
+ {\test at chars{##1}\ifchar\@append\censored at word{##1}\else
+ \test at accents{##1}\ifaccent\@append\censored at word{##1}\tcpop\tc at popped
+ \expandafter\@append\expandafter\censored at word\expandafter{\tc at popped}%
+ \else\@dump\censored at word\addcytoks{##1}\fi\fi}}}
+ {\@dump\censored at word\addcytoks{##1}}
+ {\stripgroupingtrue\def\censored at word{}}
{\@dump\censored at word}
-\xtokcycleenvironment\blackoutenv
+
+\xtokcycleenvironment\xblackoutenv
{\ifx.##1\@dump\censored at word\addcytoks[1]{\censordot}\else
\@append\censored at word{##1}%
\tcpeek\@next\ifx\@next\@tcEscapeptr\@dump\censored at word\fi\fi}
- {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter{\expanded{##1}}}%
- {\processtoks{##1}}\@dump\censored at word\expandargfalse}
- {\@dump\censored at word\tctestifx{~##1}{\@append\censored at word{##1}}%
- {\tctestifx{\expanded##1}{\expandargtrue}{\addcytoks{##1}}}}
- {\@dump\censored at word\addcytoks{##1}}
- {\def\censored at word{}}
+ {\tctestifcon\ifexpandarg{\expandafter\processtoks\expandafter
+ {\expanded{##1}}\@dump\censored at word}{\groupedcytoks{\processtoks{##1}%
+ \@dump\censored at word}}\expandargfalse}
+ {\tctestifx{~##1}{\@append\censored at word{##1}}%
+ {\tctestifx{\expanded##1}{\@dump\censored at word\expandargtrue}%
+ {\test at chars{##1}\ifchar\@append\censored at word{##1}\else
+ \test at accents{##1}\ifaccent\@append\censored at word{##1}\tcpop\tc at popped
+ \expandafter\@append\expandafter\censored at word\expandafter{\tc at popped}%
+ \else\@dump\censored at word\addcytoks{##1}\fi\fi}}}
+ {\@dump\censored at word\addcytoks{\censpace}}
+ {\stripgroupingtrue\def\censored at word{}}
{\@dump\censored at word}
+\newif\ifchar
+\newcommand\test at chars[1]{\charfalse
+ \ifx\$#1\chartrue\else
+ \ifx\\chartrue\else
+ \ifx\##1\chartrue\else
+ \ifx\%#1\chartrue\else
+ \ifx\_#1\chartrue\else
+ \ifx\o#1\chartrue\else
+ \ifx\O#1\chartrue\else
+ \ifx\oe#1\chartrue\else
+ \ifx\OE#1\chartrue\else
+ \ifx\aa#1\chartrue\else
+ \ifx\AA#1\chartrue\else
+ \ifx\ae#1\chartrue\else
+ \ifx\AE#1\chartrue\else
+ \ifx\l#1\chartrue\else
+ \ifx\L#1\chartrue
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
+\newif\ifaccent
+\newcommand\test at accents[1]{\accentfalse
+ \ifx\`#1\accenttrue\else
+ \ifx\=#1\accenttrue\else
+ \ifx\'#1\accenttrue\else
+ \ifx\.#1\accenttrue\else
+ \ifx\^#1\accenttrue\else
+ \ifx\"#1\accenttrue\else
+ \ifx\u#1\accenttrue\else
+ \ifx\d#1\accenttrue\else
+ \ifx\v#1\accenttrue\else
+ \ifx\b#1\accenttrue\else
+ \ifx\H#1\accenttrue\else
+ \ifx\t#1\accenttrue\else
+ \ifx\~#1\accenttrue\else
+ \ifx\c#1\accenttrue
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -122,4 +155,24 @@
% NOTE: A \protect\censorbox{} MAY BE REQUIRED INSIDE SOME ENVIRONMENTS
\endinput
+VERSION:
+1.00 - Initial release
+2.00 - Added \blackout
+2.10 - Allowed \blackout to cross paragraph boundaries with use of
+ \bpar. Stopped censoring periods, in order to preserve
+ end-of-sentence spacing, which differs from inter-word spacing.
+3.00 - \censorbox introduced to handle figures, tables, etc.
+3.10 - Made \blackout work with \par in argument. Introduced
+ \xblackout
+3.20 - Specify depth/height of censor rule. Introduced \def\censordot{}
+3.21 - Fixed bug regarding \xblackout rules remaining after a
+ \StopCensoring
+3.22 - changed `\if to \ifx in definition of \bl at t, to handle macros like \%
+4.0 - Recast \blackout and \xblackout in terms of tokcycle environments
+ - Introduced \blackoutenv...\endblackoutenv and
+ \xblackoutenv...\endxblackoutenv
+4.1 - Added automatic support for censoring character macros such as \$,
+ etc. and character accents such as \', etc. See \test at chars and
+ \test at accents for details.
+ - Fixed bug in which \expanded arguments remained inside a TeX group
More information about the tex-live-commits
mailing list.