箭头形的文本框(用于 ipe 矢量图形编辑器)?

箭头形的文本框(用于 ipe 矢量图形编辑器)?

Ipe矢量图形编辑器

我目前正在评估ipe矢量图形编辑器. 一个非常有吸引力的特点是可以在文本对象中使用 LaTeX 命令只要这些命令在\makebox(标签) 或 minipage (minipage) 中合法即可。但是,不能使用涉及非线性转换为 PDF 的命令,例如生成超链接或包含外部图像的命令。尽管如此,在附加 LaTeX 包中定义的 LaTeX 命令可以包含在 LaTeX 前言中的命令中,该命令可以在菜单下\usepackage设置。Document propertiesEdit

问题

我正在寻找一种方法,使用 LaTeX 命令将文本括在左或右箭头形框内ipe?一个简单的 LaTeX 包,可以创建类似于rarrowlarrow的文本框BoxStyle上课matplotlib(见下面的样本)就很好了。其他技术也欢迎。LibreOffice Impress 和 PowerPoint 也提供了带有文本的箭头形状,甚至是弯曲的箭头形状。

尝试

  1. \fbox在文本对象周围绘制一个ipe可以完美运行。即使\ovalbox是旋转的 也不会在序言中造成任何问题\usepackage{rotating, fancybox}。没有箭头fancybox, 尽管。
  2. 我寻找一个 LaTeX 包,其中提供了箭头形的框CTAN 上“装箱”中列出的软件包。我可能仔细看过了,但似乎没有列出这样的包。
  3. 这里的每个人似乎都使用 TikZ 箭头,所以我尝试了这个例子这个例子里面ipe。这些失败的 TikZ 实验的结果显示在下图中。它失败是因为ipe前面提到的 LaTeX 文本对象限制。

matplotlib Boxstyle 标本

matplotlib Boxstyle 标本

ipe 中的旋转椭圆框

ipe 中的旋转椭圆盒

TikZ 箭头在 ipe 中不起作用

TikZ 箭头在 ipe 中不起作用

答案1

这是基于 LaTeX 图片模式的“箭头框”宏。也许这对您有用?

\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}

输出:

示例输出

编辑

作为 OP,我已将上述序言添加到ipe,并附加了\usepackage{rotating}ipe文本对象仅包含以下内容以生成倾斜的文本箭头:

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

倾斜的文字箭头

相关内容