比例因子为零的 Tikz 基元不会消失

比例因子为零的 Tikz 基元不会消失

我正在输入一些.tikz由我无法修改的程序生成的文件。这些文件包含许多基本tikz原语,其比例键值设置为零。所有比例为零的原语都应被忽略。但是,tikz 不会忽略它们。以这个 MWE 为例:

\documentclass{report}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \draw [anchor= east] (1.9,2.53686) node[scale=1.28308, rotate=0]{-3000};
    \draw [anchor= east] (1.9,2.53686) node[scale=0, rotate=0]{-3000};
\end{tikzpicture}

\end{document}

我希望只有一个标签-3000,但是,编译(pdflatex)后,有两个不同大小的标签[注意:我已经用 acroread、evince 和 okular 测试过了。acroread 打印错误并显示两个标签,evince 只打印两个标签,而 okular 只打印一个,但无法打印文档]。

有什么方法可以告诉 tikz 忽略所有比例为零的基元?我当前的解决方法是一个小脚本,它会在包含字符串的任何行之前放置一个注释符号scale=0,,但是,这并不是一个真正强大的修复方法。

答案1

我个人在按预期显示文档时没有遇到任何问题(即第二个节点不会出现在 Okular 或 Acrobat Reader 中),但无论如何:您可以使用处理.prefix code程序添加一些代码,使元素不可见。我认为这应该有效:

\documentclass{report}

\usepackage{tikz}
\tikzset{
 scale/.prefix code={\pgfmathnot{#1}\ifnum\pgfmathresult=1\pgfkeysalso{/tikz/opacity=0}\fi}
}

\begin{document}
\begin{tikzpicture}
    \draw [anchor= east] (1.9,2.53686) node[scale=1.28308, rotate=0]{-3000};
    \draw [anchor= east] (1.9,2.53686) node[scale=0, rotate=0]{-3000};
\end{tikzpicture}

\end{document}

如果您有比将不透明度设置为零更好的方法让某些东西不可见,请使用该方法。(据我所知,没有“根本不渲染它”的样式。)

相关内容