我有一份文档,其中包含关键部分。现在应该生成两个文档。一个版本是“黑色的”,另一个版本是完全可读的。
对于纯文本,我找到了一些使用该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}
不过,正如评论中提到的,您需要决定是否发送原始文件。其他策略包括从文件中导入图表,但您不会将其包含在您发送的最终草稿中。