當使用以下範例產生 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}