%3F.png)
Editor de gráficos vetoriais ipê
Atualmente estou avaliando oipe
editor de gráficos vetoriais. Uma característica muito atraente é quepode-se usar comandos LaTeX dentro de seus objetos de textodesde que sejam legais dentro de uma \makebox
(para etiquetas) ou dentro de uma minipágina (para minipáginas). Porém, não se pode utilizar comandos que envolvam uma tradução não linear para PDF, como comandos para gerar hiperlinks ou para incluir imagens externas. No entanto, os comandos LaTeX definidos em pacotes LaTeX adicionais podem ser incluídos com um \usepackage
comando no preâmbulo do LaTeX, que pode ser definido Document properties
no Edit
menu.
Pergunta
O que estou procurando é uma maneira de colocar texto dentro de uma caixa em forma de seta para a esquerda ou para a direita com comandos LaTeX em ipe
? Um pacote LaTeX simples que criaria caixas de texto muito parecidas com rarrow
e larrow
doBoxStyle
aula emmatplotlib
(veja a amostra abaixo) serviria perfeitamente. Outras técnicas também são bem-vindas. O LibreOffice Impress e o PowerPoint também oferecem formatos de setas com texto, mesmo curvos.
Tentativas
- Desenhar
\fbox
em torno de um objeto de textoipe
funciona perfeitamente. Mesmo uma rotação\ovalbox
com matemática não constitui problema\usepackage{rotating, fancybox}
no preâmbulo. Não há flechas emfancybox
, no entanto. - Procurei um pacote LaTeX que fornecesse caixas em forma de seta entreos pacotes listados entre "boxe" no CTAN. Talvez eu esteja examinando isso, mas nenhum pacote desse tipo parece estar listado.
- Todo mundo aqui parece usar setas TikZ, então tenteieste exemploeeste exemplodentro
ipe
. O resultado dessas experiências fracassadas do TikZ é mostrado na imagem inferior. Ele falha devido àsipe
limitações do objeto de texto LaTeX mencionadas anteriormente.
Espécime Matplotlib Boxstyle
Caixa oval girada em ipê
Setas TikZ não funcionam em ipê
Responder1
Aqui está uma macro de "caixa de seta" baseada no modo de imagem LaTeX. Talvez isso funcione para você?
\documentclass{article}
\makeatletter
\newdimen\ab@texttotalheight
\newdimen\ab@arrowstemwidth
\newdimen\ab@arrowheadwidth
\newdimen\ab@arrowwidth
\newdimen\ab@arrowstemheight
\newdimen\ab@arrowheight
\newcommand\rightarrowbox{\@arrowbox+}
\newcommand\leftarrowbox{\@arrowbox-}
\newcommand\@arrowbox[2]
{%
\begingroup
\setbox\@tempboxa=\hbox{#2}%
\ab@texttotalheight\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax
\ab@arrowstemwidth\dimexpr\wd\@tempboxa\relax
\ab@arrowheadwidth\dimexpr2\fboxsep+.5\ab@texttotalheight\relax
\ab@arrowwidth\dimexpr\ab@arrowstemwidth+\ab@arrowheadwidth\relax
\ab@arrowstemheight\dimexpr2\fboxsep+\ab@texttotalheight\relax
\ab@arrowheight\dimexpr4\fboxsep+\ab@texttotalheight\relax
\thicklines
\unitlength\p@
\edef\@temp{{picture}(\strip@pt\ab@arrowwidth,\strip@pt\ab@arrowheight)\if#1-(-\strip@pt\ab@arrowwidth,0)\fi}%
\expandafter\raisebox\expandafter{\the\dimexpr-\dp\@tempboxa-2\fboxsep\relax}
{%
\expandafter\begin\@temp
\put(#1\strip@pt\@halfwidth,\strip@pt\fboxsep){\line(0,1){\strip@pt\ab@arrowstemheight}}
\@tempdima\dimexpr2\fboxsep+\dp\@tempboxa\relax
\@tempdimb\if#1-\dimexpr\fboxsep+\wd\@tempboxa\relax\else\fboxsep\fi\relax
\put(#1\strip@pt\@tempdimb,\strip@pt\@tempdima){\box\@tempboxa}
\@tempdima\dimexpr3\fboxsep+\ab@texttotalheight\relax
\@tempdimb\dimexpr\ab@arrowstemwidth+\@halfwidth\relax
\put(0,\strip@pt\@tempdima){\line(#11,0){\strip@pt\@tempdimb}}
\put(0,\strip@pt\fboxsep){\line(#11,0){\strip@pt\@tempdimb}}
\put(#1\strip@pt\ab@arrowstemwidth,\strip@pt\@tempdima){\line(0,1){\strip@pt\fboxsep}}
\put(#1\strip@pt\ab@arrowstemwidth,0){\line(0,1){\strip@pt\fboxsep}}
\advance\@tempdima\fboxsep
\put(#1\strip@pt\ab@arrowstemwidth,\strip@pt\@tempdima){\line(#11,-1){\strip@pt\ab@arrowheadwidth}}
\put(#1\strip@pt\ab@arrowstemwidth,0){\line(#11,1){\strip@pt\ab@arrowheadwidth}}
\end{picture}%
}%
\endgroup
}
\begin{document}
\leftarrowbox{\Large\textsf{foo}} \rightarrowbox{\Large\textsf{foo}}
\fbox{\Large\textsf{foo}}
\bigskip
\leftarrowbox{\Large\textsf{goo}} \rightarrowbox{\Large\textsf{goo}}
\fbox{\Large\textsf{goo}}
\bigskip
\leftarrowbox{\Large\textsf{\strut foo}} \rightarrowbox{\Large\textsf{\strut goo}}
\bigskip
\leftarrowbox{\Large\textsf{\begin{tabular}{l}foo\\goo\end{tabular}}}
\rightarrowbox{\Large\textsf{\begin{tabular}{l}foo\\goo\end{tabular}}}
\fbox{\Large\textsf{\begin{tabular}{l}foo\\goo\end{tabular}}}
\end{document}
Saída:
EDITAR
Como OP, adicionei o preâmbulo acima ipe
, junto com um arquivo \usepackage{rotating}
. O ipe
objeto de texto contém apenas o seguinte para gerar a seta de texto inclinada:
\begin{turn}{56}
\rightarrowbox{\Large\textbf{yahoo!}}
\end{turn}