如何因保密原因而涂黑某个数字?

如何因保密原因而涂黑某个数字?

我有一份文档,其中包含关键部分。现在应该生成两个文档。一个版本是“黑色的”,另一个版本是完全可读的。

对于纯文本,我找到了一些使用该soul包的提示。请参阅http://latex-community.org/forum/viewtopic.php?f=44&t=18190

现在我遇到了一个问题,有些图形(用 tikz 绘制)应该被隐藏。有办法解决这个问题吗?

编辑:我得到了两个关于如何做到这一点的非常好的答案。不幸的是,我使用了 tikz 的外部化库。我当然不会导出 criticalat 图片,以避免文件编号出现问题。但是在编译其他图片(在 aBtikzpicture或 a中的一个之后ctikzpicture)时,编译时会出现问题,因为 latex 找到了\tikzpicture但似乎看不到,\enttikzpicture因此遇到了麻烦。你这里也有解决方案吗?我尝试使用,\NewEnviron但这并没有像我想的那样解决问题。

例子:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\usepackage{adjustbox}
\newif\ifblackOut
% \blackOuttrue
\ifblackOut
\newenvironment{ctikzpicture}
    {\tikzset{external/export next=false}
    \adjustbox{precode=\phantom,bgcolor=black!10}
    \bgroup\tikzpicture}
    {\endtikzpicture\egroup}
\else
\newenvironment{ctikzpicture}
    {\tikzset{external/export next=false}
    \tikzpicture}
    {\endtikzpicture}
\fi
\begin{document}
\begin{figure}[htbp]
\centering
\begin{tikzpicture}
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{figure}
% 
\begin{figure}[htbp]
\centering
\begin{ctikzpicture}
\draw (0,0) rectangle (1,1);
\end{ctikzpicture}
\caption{}
\end{figure}
% Uncomment next lines for other error
% \begin{figure}[htbp]
% \centering
% \begin{tikzpicture}
% \draw (0,0) circle (2cm);
% \end{tikzpicture}
% \end{figure}
\end{document}

答案1

只需定义一个Btikzpicture可以在设定的条件下表现不同的环境,并将其用于您想要有选择地省略的图片:

\documentclass{article}
\usepackage{tikz}

\newif\ifsecret
% \secrettrue % uncomment for the hidden version

\ifsecret
%%% code for blanking TikZ pictures
\newsavebox{\Btpbox}
\newenvironment{Btikzpicture}
  {\begin{lrbox}{\Btpbox}\begin{tikzpicture}}
  {\end{tikzpicture}\end{lrbox}%
   \fboxsep=-\fboxrule\fbox{\omission\phantom{\usebox{\Btpbox}}}}

\newcommand{\omission}{\makebox[0pt][l]{\,\tiny OMITTED\strut}}
%%%
\else
%%% code for normal printing
\newenvironment{Btikzpicture}{\tikzpicture}{\endtikzpicture}
%%%
\fi    

\begin{document}
\tikzset{
    every node/.style={
        circle,
        draw,
        solid,
        fill=black!50,
        inner sep=0pt,
        minimum width=4pt
    }
}
\begin{Btikzpicture}[thick,scale=0.8,->,shorten >=2pt]
    \draw (0,0) node {} -- (1,1) node {};
    \draw (1,1) node {} -- (2,1) node {};
    \draw (2,1) node {} -- (3,2) node {};
    \draw (3,2) node {} -- (4,1) node {};

    \draw  (0,2) node {} -- (1,1) node {};
    \draw (1,2) node {} -- (2,1) [dashed] node {};
    \draw (2,1) node {} -- (3,2) node {};
    \draw (3,2) node {} -- (4,1) node {};

    \draw (2,1) node {} -- (3,0) [dashed] node {};
    \draw (2,1) node {} -- (2,0) [dashed] node {};
    \draw (3,0) node {} -- (4,0) [dashed] node {};
    \draw (3,0) node {} -- (4,-1) [dashed] node {};
    \draw (1,1) node {} -- (1,0) [dashed] node {};
\end{Btikzpicture}

\end{document}

(图片代码取自Jake的回答。)

\secrettrue取消注释时,只会绘制正确大小的框架;只有度量信息才会出现在最终输出中。

答案2

您可以使用adjustbox黑色(或灰色,以节省墨水)矩形替换内容。

请注意,此解决方案不会将被审查的内容写入 PDF。

\documentclass{article}

\usepackage{adjustbox}
\usepackage{tikz}

\iffalse
\newenvironment{ctikzpicture}{%
    \tikzpicture
}{%
    \endtikzpicture
}
\else
\newenvironment{ctikzpicture}{%
    \adjustbox{precode=\phantom,bgcolor=black!10}\bgroup
    \tikzpicture
}{%
    \endtikzpicture
    \egroup
}
\fi

\begin{document}

\begin{ctikzpicture}[thick]
    \draw (0,0) -- (10,10);
    \node at (5,5) {Secret information};
\end{ctikzpicture}

\end{document}

使用最新版本adjustbox(即 v1.1 2018/04/08),您可以直接将其phantom作为密钥写入,并在其顶部添加一些“审查”文本。

\documentclass{article}

\usepackage{adjustbox}[2018/04/08]
\usepackage{tikz}

\iffalse
\newenvironment{ctikzpicture}{%
    \tikzpicture
}{%
    \endtikzpicture
}
\else
\newenvironment{ctikzpicture}{%
    \adjustbox{phantom,bgcolor=black!10,foreground={rotate=45}{\sffamily Censored!}}\bgroup
    \tikzpicture
}{%
    \endtikzpicture
    \egroup
}
\fi

\usepackage{blindtext}
\begin{document}
\blindtext

\begin{ctikzpicture}[thick]
    \draw (0,0) -- (10,10);
    \node at (5,5) {Secret information};
\end{ctikzpicture}

\blindtext
\end{document}

在此处输入图片描述

答案3

\censorbox我的包中的命令可以censor阻挡图形、表格等盒装材料。以下是文档的摘录:

在此处输入图片描述 在此处输入图片描述

答案4

这是一个 tikz 解决方案,将比例设置为低值并使用颜色将其清空(可能有更多的解决方案,例如 xshift=-2000pt)。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{every picture/.style={color=white,scale=0.0001}}
\begin{document}
abcd

\begin{tikzpicture}
\coordinate (1) at (0.1,0.2);
\coordinate (2) at (0.2,0.7);
\coordinate (3) at (0.4,-0.3);

\draw let \p1 = (1),
          \p2 = (2),
          \p3 = (3),
          \n{denom} = {(\x1 - \x2)*(\x1 - \x3)*(\x2-\x3)},
          \n{A} = {(\x3*(\y2-\y1) + \x2*(\y1-\y3) + \x1*(\y3-\y2))/\n{denom}},
          \n{B} = {(\x3*\x3*(\y1-\y2) + \x2*\x2*(\y3-\y1)+\x1*\x1*(\y2-\y3))/\n{denom}},
          \n{C} = {(\x2*\x3*(\x2-\x3)*\y1 + \x3*\x1*(\x3-\x1)*\y2 + \x1*\x2*(\x1-\x2)*\y3)/\n{denom}} in
          plot[domain=\x1:\x3] (\x,{\n{A}*\x*\x+\n{B}*\x + \n{C}});
\end{tikzpicture}

abcd
\end{document}

不过,正如评论中提到的,您需要决定是否发送原始文件。其他策略包括从文件中导入图表,但您不会将其包含在您发送的最终草稿中。

相关内容