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\&#1\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.