%3F.png)
¿Cuál es la diferencia entre los pares clave-valor de TikZ draw=none
y draw opacity=0
? ¿Son funcionalmente equivalentes o hay situaciones en las que uno debería preferirse a otro? De manera similar, ¿cuál es la diferencia entre fill=none
y fill opacity=0
?
Respuesta1
draw=none
(que es igual al \path
comando) en realidad hace que TikZ descarte la ruta construida y el cuadro delimitador no se altere (Tonterías, cambia el cuadro delimitador pero solo line width
se ignora. Gracias a @Fritz por detectar esta estupidez).
draw opacity=0
sin embargo, hace que la ruta se dibuje sin tinta, por lo que el cuadro delimitador se actualiza con line width
la opción vigente, por lo que el estilo de línea es importante para el cálculo del cuadro delimitador.
\begin{tikzpicture}
\draw (0,0) rectangle (3,3);
\draw[opacity=0,line width=1cm] (0,0) rectangle (3,3); % Enlarge the bounding box
\pgfsetlinewidth{5cm} % this has no effect
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpoint{4cm}{4cm}} % this updates the known max x,y coordinates!!
\pgfusepath{} % even though it's thrown away.
\begin{pgfinterruptboundingbox}
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpoint{10cm}{10cm}} % Nothing happens
\pgfusepath{}
\end{pgfinterruptboundingbox}
\draw[dashed,thin] (current bounding box.north east) rectangle (current bounding box.south west);
\end{tikzpicture}
Respuesta2
filling opacity
se aplica no sólo a las operaciones de llenado, sino también a texto e imágenes; el siguiente ejemplo muestra un caso en el que fill=none
y fill opacity=0
(en realidad lo usé fill opacity=0.2
solo para hacer visible el texto) producen resultados diferentes; fill=none
no tiene ningún efecto en la etiqueta del nodo, pero fill opacity=<value>
afectará el texto:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\fill[olive] (0,0) rectangle (3,2);
\node[fill opacity=0.2] at (3,2) {\huge B};
\node[fill=none] at (0,0) {\huge A};
\end{tikzpicture}
\end{document}