
Tenho um pequeno problema com algumas setas, mas não consigo encontrar uma solução. Observe que esta pergunta é diferente deDefinir a cor de preenchimento apenas para as pontas das setas do TikZ (e não para o caminho em si), já que ali o OP pretendia fazer a seta inteira de uma cor.
Se eu quisesse que a ponta da seta fosse preta e o caminho da seta colorido, eu simplesmente diria, draw=black
mas preciso do oposto, um caminho preto com uma ponta colorida.
Então é isso que eu recebo:
E este é o meu código:
\documentclass[10pt]{article}
\usepackage[a4paper, margin=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{rotating}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,decorations,shapes,shapes.multipart,positioning}
\pgfplotsset{compat=1.7}
\begin{document}
\definecolor{blue}{RGB}{0,127,255}
\tikzset{
opera/.style={fill=white, inner sep=0pt, right=3mm, text width= 5cm,font=\footnotesize},
tear/.style={draw=black, fill=blue, -*},.
}
\begin{tikzpicture}
\draw[tear] (12, 5) -- (12,4) -- (10,3) -- (10,2) node[opera] at (10,2){Not the path!};
\end{tikzpicture}
\end{document}
Tentei remover o máximo possível para tornar o código mínimo, então não se preocupe se vir pacotes ou bibliotecas não utilizadas.
Pensei como uma possível solução adicionar uma opção como, >=stealth
mas tentar definir a cor usando as pontas das setas o
ou . *
Nenhum funcionou.
Responder1
a resposta a seguir é baseada em markings
e postaction
.
\documentclass[10pt]{article}
\usepackage[a4paper, margin=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{rotating}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,decorations.markings,shapes,shapes.multipart,positioning}
\pgfplotsset{compat=1.7}
\begin{document}
\definecolor{blue}{RGB}{0,127,255}
\tikzset{
opera/.style={fill=white, inner sep=0pt, right=3mm, text width= 5cm,font=\footnotesize},
tear/.style={draw=black,-,
decoration={markings,mark=at position 1 with {\arrow[draw=black,fill=blue]{*}}},
postaction=decorate},.
}
\begin{tikzpicture}
\draw[tear] (12, 5) -- (12,4) -- (10,3) -- (10,2);
\end{tikzpicture}
\end{document}
que produz:
Eu removi a ponta da seta do seu tear
estilo e adicionei decoration={markings,mark=at position 1 with {\arrow[draw=black,fill=blue]{*}}}
e postaction=decorate
. Desta forma a ponta da seta é desenhada como decoração no final do seu segmento, sem preencher o caminho. Você também precisa carregar a decoração como postaction
with postaction=decorate
, para que apenas a ponta da seta seja substituída e não a linha inteira.
Editar:A abordagem anterior está agora (com o lançamento do PGF 3.0.0) obsoleta:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\definecolor{myblue}{RGB}{0,127,255}
\tikzset{
opera/.style={
fill=white,
inner sep=0pt,
right=3mm,
text width= 5cm,
font=\footnotesize
},
tear/.style={
-{Circle[fill=myblue]} %new code, requires arrows.meta and at least PGF 3.0.0
},
}
\begin{document}
\begin{tikzpicture}
\draw[tear] (12, 5) -- (12,4) -- (10,3) -- (10,2) node[opera] {Not the path!};
\end{tikzpicture}
\end{document}