summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/censor
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-12-11 17:26:57 +0000
committerKarl Berry <karl@freefriends.org>2009-12-11 17:26:57 +0000
commit3225c190bb874fa17c648d7e7a4a5f9340b37eff (patch)
tree626c1be1785dbea2e51c0abaa252f3070c324ecd /Master/texmf-dist/tex/latex/censor
parent3a28cb3d05eecce2c577dd0fd95dab1955ccca74 (diff)
new package censor 1.00 (9dec09)
git-svn-id: svn://tug.org/texlive/trunk@16365 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/censor')
-rw-r--r--Master/texmf-dist/tex/latex/censor/censor.sty69
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
+