Caixas de texto em forma de seta (para uso no editor de gráficos vetoriais ipê)?

Caixas de texto em forma de seta (para uso no editor de gráficos vetoriais ipê)?

Editor de gráficos vetoriais ipê

Atualmente estou avaliando oipeeditor 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 \usepackagecomando no preâmbulo do LaTeX, que pode ser definido Document propertiesno Editmenu.

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 rarrowe larrowdoBoxStyleaula 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

  1. Desenhar \fboxem torno de um objeto de texto ipefunciona perfeitamente. Mesmo uma rotação \ovalboxcom matemática não constitui problema \usepackage{rotating, fancybox}no preâmbulo. Não há flechas emfancybox, no entanto.
  2. 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.
  3. 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 às ipelimitações do objeto de texto LaTeX mencionadas anteriormente.

Espécime Matplotlib Boxstyle

Espécime Matplotlib Boxstyle

Caixa oval girada em ipê

caixa oval girada em ipê

Setas TikZ não funcionam 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:

Exemplo de saída

EDITAR

Como OP, adicionei o preâmbulo acima ipe, junto com um arquivo \usepackage{rotating}. O ipeobjeto de texto contém apenas o seguinte para gerar a seta de texto inclinada:

\begin{turn}{56}
  \rightarrowbox{\Large\textbf{yahoo!}}
\end{turn}

seta de texto inclinada

informação relacionada