使用 生成以下示例的 PDF 时pdflatex
,我在 Adobe Reader 和 TeXworks 之间得到不同的结果。我认为这是 Reader 处理不透明度/透明度的方式的一个错误。
我的目标是在黑色节点和每个边缘之间只留一个小空间(就像 TeXworks 渲染它的方式一样),我这样做的方法是为每个节点设置黑色填充和color=transparent
/opacity=0
边缘。
有人能建议一个好的解决方法来获得一致的结果吗?我尝试渲染的许多树都存在这个问题,我希望边缘和节点之间的空间是透明的而不是白色的。
也许我可以绘制完全透明的节点,然后在每个节点上方绘制一个较小的黑色节点。这可以作为设计的一部分自动完成吗state
?或者我可以在每个边的起点和终点之间设置一个间隙吗?(我该怎么做?)
\documentclass{article}
\usepackage{tikz}
\tikzstyle{lts}=[
state/.style={circle,draw,minimum size=4pt,inner sep=0pt,line width=2pt,draw opacity=0,color=transparent,fill=black},
edge from parent/.style={-stealth,draw},
obs/.style={edge from parent/.style={-stealth,draw,very thick}},
]
\begin{document}
\begin{tikzpicture}[lts]
\node[state] {}
child[obs] {node[state] {}
edge from parent node {}}
child[obs] {node[state] {}
edge from parent node {}};
\end{tikzpicture}
\end{document}
将 TeXworks 与 Reader 中的渲染进行比较:
答案1
使用draw=none
而不是color=transparent
似乎可以在 Acrobat 中正确显示它。左侧的图像是带有 的图像color=transparent
,右侧的图像是带有 的图像,draw=none
在 Acrobat 中显示如下:
笔记:
- 我用
tikzset
而不是tikzstyle
按照应该使用 \tikzset 还是 \tikzstyle 来定义 TikZ 样式?
代码:
\documentclass{article}
\usepackage{tikz}
\tikzstyle{lts}=[
state/.style={circle,draw,minimum size=4pt,inner sep=0pt,line width=2pt,draw opacity=0,color=transparent,fill=black},
edge from parent/.style={-stealth,draw},
obs/.style={edge from parent/.style={-stealth,draw,very thick}},
]
\tikzset{MyState/.style={circle,draw,minimum size=4pt,inner sep=0pt,line width=2pt,draw opacity=0,draw=none,fill=black}}
\tikzset{MyObs/.style={edge from parent/.style={-stealth,draw,very thick}}}
\begin{document}
\begin{tikzpicture}[lts]
\node[state] {}
child[obs] {node[state] {}
edge from parent node {}}
child[obs] {node[state] {}
edge from parent node {}};
\end{tikzpicture}%
\begin{tikzpicture}
\node[MyState] {}
child[MyObs] {node[MyState] {}
edge from parent node {}}
child[MyObs] {node[MyState] {}
edge from parent node {}};
\end{tikzpicture}
\end{document}