
Estoy interesado en crear un dibujo tikz del tamaño de un símbolo con un rectángulo que tenga la mitad del ancho del símbolo (y la altura de un símbolo) y una flecha que salga del lado medio derecho del rectángulo apuntando hacia la derecha (la punta de la flecha debe ser bastante pequeño). Intenté hacer algo así aquí (el símbolo A es para comparar el tamaño), pero no funcionó bien:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
node distance = 0mm,
box/.style = {% definition of rectangle as node
draw, line width=0.35mm,
text width=11pt, minimum height=11pt, align=left,
inner sep=1mm, outer sep=0pt}
]
\node (box1) [label=above:{}] {};
\node (B) [draw, right=of box1] {};
\draw [->] (box1) -- (B);
\end{tikzpicture}
A
\end{document}
¿Cómo hago para que el ancho del cuadrado sea la mitad de su tamaño?
¿Cómo hago para que la flecha salga del lado derecho del rectángulo?
¿Cómo hago un nodo "vacío" a la derecha del rectángulo para poder dibujarle una flecha?
¿Cómo hago para que la punta de la flecha sea más pequeña?
Respuesta1
Quizás así...
\documentclass[varwidth,border=5]{standalone}
\usepackage{tikz}
\def\abx{\tikz[x=0.75em,y=0.75em,baseline=0]\fill[even odd rule]
(0,0)--(.5,0)--(.5,.45)--(.75,.45)--(.75,.25)--(1,.5)--(.75,.75)--
(.75,.55)--(.5,.55)--(.5,1)--(0,1)--cycle(.1,.1)rectangle(.4,.9);}
\hbadness=10000
\begin{document}
\foreach \f in {\scriptsize,\footnotesize,\small,\normalsize,\large,\huge}{%
\noindent\hbox to1.125in{\texttt{\expandafter\string\f:}}
\f xX \abx\ yY \\[.5ex]}
\end{document}
Respuesta2
No entiendo del todo tu pregunta, ¿de qué símbolo estás hablando? Aquí he abordado sus preguntas, si el tamaño no se adapta a sus necesidades, simplemente escale o cambie el tamaño de los objetos:
\draw (0,0) rectangle (1,2);
\draw [->] (1,1)--+(1,0);
- El nodo vacío es una mala práctica, más bien un uso
\coordinate (name) at (1,1);
que conduce a\draw [->] (name)--+(1,0);
- Usando la biblioteca
arrows.meta
(eche un vistazo a estoenlace) puedes escalar el tamaño de la flecha de esta manera\draw [-{>[scale=0.7]}] (name)--+(1,0);
Podría resultar útil definir una pic
que permita colocar una forma predefinida como un "sello". He definido una imagen llamada mybox
:
\documentclass[tikz,convert]{standalone}
\usetikzlibrary{arrows.meta}
\tikzset{mybox/.pic={
\draw (-0.5,-1) rectangle (.5,1);
\draw [-{>[scale=0.5]}] (0.5,0)--+(0.5,0);
}
}
\begin{document}
\begin{tikzpicture}[>=Stealth]
\pic at (0,0) {mybox};
\draw (1,1) arc (135:45:3) pic [red,pos=0.3,scale=0.5,sloped] {mybox};
\end{tikzpicture}
\end{document}
Respuesta3
No estoy seguro de por qué deseas utilizar TikZ para esto. Sin embargo, ya que lo haces, aquí tienes una forma de hacerlo:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\newcounter{mybox}
\newlength\myboxminheight
\settoheight\myboxminheight{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\tikzset{%
pics/my box/.style={%
code={%
\stepcounter{mybox}%
\tikzset{%
>/.tip={Triangle[length=2.5pt,width=2.5pt]},
outer sep=0pt,
every node/.append style={draw},
make my box/.cd,
#1,
/tikz/.cd,
make my box/my box look,
}
\node (box\themybox) [make my box/my box look, label=above:{\myboxlabel}, inner sep=\myboxisep, minimum height=\myboxminht-\myboxlinewidth, minimum width=.5*\myboxminht-.5*\myboxlinewidth] at (0,0) {};
\draw [->, make my box/my box look, line width=\myboxlinewidth,] (box\themybox.east) -- +(\myboxextarrow,0);
}
},
make my box/.search also={/tikz},
make my box/.cd,
line width/.store in=\myboxlinewidth,
minimum height/.store in=\myboxminht,
inner sep/.store in=\myboxisep,
label/.store in=\myboxlabel,
extend arrow/.store in=\myboxextarrow,
look/.code={\tikzset{make my box/my box look/.append style={#1}}},
line width=.35mm,
minimum height=\myboxminheight,
inner sep=0pt,
label={},
extend arrow=5pt,
my box look/.style={draw, line width=\myboxlinewidth},
}
\newcommand\mybox[1][]{%
\tikz{\pic {my box={#1}};}}
\begin{document}
X \mybox{} \mybox[label={My Box}] \mybox[look={text=red, draw=blue}, extend arrow=25pt, minimum height=20pt, inner sep=2mm, line width=2.5pt, label={My Other Box}, >/.tip={Stealth[]}]
\end{document}
Tenga en cuenta que el cuadro de un glifo puede incluir un espacio encima de la letra dibujada y que no todas las letras mayúsculas parecen tener la misma altura de cerca. Por lo tanto, necesitarás modificar esto según tus preferencias, configuración de fuente y necesidades.
Respuesta4
Aquí hay una solución con pstricks
:
\documentclass{article}
\usepackage{pst-node}
\usepackage{auto-pst-pdf} \newcommand\mysymbol{\begin{pspicture}%
\fnode[linewidth=0.4pt, linecolor=blue, framesize=3.5pt 7pt, dimen=middle](0,3pt){R}
\uput{2.5ex}[r](R){\pnode{W}}\ncline[arrows=->, linecolor = red, linewidth=0.6pt, linejoin=1, nodesepA=0.5pt, arrowinset=0.15,arrowsize=2pt]{R}{W} \end{pspicture}}%
\begin{document}
A\enspace\mysymbol
\end{document}