diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/censor')
-rw-r--r-- | Master/texmf-dist/tex/latex/censor/censor.sty | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/censor/censor.sty b/Master/texmf-dist/tex/latex/censor/censor.sty new file mode 100644 index 00000000000..7afa369ddfd --- /dev/null +++ b/Master/texmf-dist/tex/latex/censor/censor.sty @@ -0,0 +1,69 @@ +% censor.sty +% Copyright Steven B. Segletes +\ProvidesPackage{censor} +[2009/12/07 v1.00 + Provides capability for redaction of sensitive information] + +% CHOOSE MODE OF OPERATION: +% 1) IF .tex FILE IS CREATED IN PRIVATE (SECURE) ENVIRONMENT: +% a) To produce censored document, censor individual words with +% \censor{word} +% b) To produce uncensored document, place \StopCensoring in preamble +% c) To produced a mixed document with some redaction, but elsewhere +% turned off, place \StopCensoring and/or \RestartCensoring in +% various document locations as needed. +% +% DISCLAIMER: Don't \censor whitespace (i.e., phrases), or justifications +% could get fouled up. If space-laden phrase needs repeated censoring, +% I suggest typesetting according to the following example: +% \def\CodeName{\censor{Little} \censor{Bo} \censor{Peep}} +% In the text, refer to {\CodeName} as often as needed. +% +% 2) IF .tex FILE IS INITIALLY CREATED IN PUBLIC (UNSECURE) ENVIRONMENT: +% a) To produce censored document, define (in the document preamble) +% placeholders for all censored phrases, like: +% \def\ProjectName{\censor*{7}} +% In document, refer to {\ProjectName} as needed. The "7" refers +% to the approximate width (in ex's) of the censored word. +% b) Use of \StopCensoring in preamble will merely turn censored +% black rectangles into underlined blank spaces, since uncensored +% word is not known to the public source (.tex) document. +% c) To produce uncensored document, the source code must be moved +% to a private (secure) working environment. At that point, the +% uncensored document may be created merely by editing the document +% preamble and redefining the censored placeholders, so that +% \def\ProjectName{\censor*{7}} becomes \def\ProjectName{Liberty}, +% for example. Note that line justification could be affected, since +% censored placeholders are not exactly the same width as the +% actual word, in Mode 2 operation. +% d) To produced (in the private/secure environment) a mixed document +% with some redaction, but elsewhere turned off, place \StopCensoring +% and/or \RestartCensoring in various document locations as needed. +% +% DISCLAIMER: Don't \censor whitespace (i.e., phrases), or justifications +% could get fouled up. I suggest typesetting multi-word phrases according +% to the following example: +% \def\CodeName{\censor*{6} \censor*{2} \censor*{4}} +% In the text, refer to {\CodeName} as often as needed. +% +% NOTE: For both modes of operation, placeholders are placed in curly +% braces, so that surrounding white space and/or punctuation is properly +% handled. + +\usepackage{pbox} + +\newcommand\censor{\@ifstar{\@cenlen}{\@cenword}} + \newcommand\@cenlen[1]{\protect\rule[-.3ex]{#1 ex}{2.1ex}} + \newcommand\@cenword[1]{% + \protect\rule[-.3ex]{\widthofpbox{#1}}{2.1ex}} + +\newcommand\un@censor{\@ifstar{\un@cenlen}{\un@cenword}} + \newcommand\un@cenlen[1]{\protect\underline{\hspace{#1 ex}}} + \newcommand\un@cenword[1]{#1} + +\newcommand\StopCensoring{\let\censor\un@censor} +\newcommand\RestartCensoring{% + \renewcommand\censor{\@ifstar{\@cenlen}{\@cenword}}} + +\endinput + |