Текстовые поля в форме стрелок (для использования в редакторе векторной графики ipe)?

Текстовые поля в форме стрелок (для использования в редакторе векторной графики ipe)?

Векторный графический редактор Ipe

В настоящее время я оцениваюipeредактор векторной графики. Очень привлекательной особенностью является то, чтовнутри текстовых объектов можно использовать команды LaTeXпока они допустимы внутри \makebox(для меток) или внутри мини-страницы (для мини-страниц). Однако нельзя использовать команды, которые включают нелинейный перевод в PDF, такие как команды для создания гиперссылок или включения внешних изображений. Тем не менее, команды LaTeX, которые определены в дополнительных пакетах LaTeX, могут быть включены с командой \usepackageв преамбуле LaTeX, которую можно установить Document propertiesв Editменю.

Вопрос

Я ищу способ заключить текст в рамку в форме левой или правой стрелки с помощью команд LaTeX в ipe? Простой пакет LaTeX, который будет создавать текстовые поля, очень похожие на rarrowиlarrowBoxStyleкласс в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

Вот макрос "arrow box" на основе режима изображения 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}

наклонная текстовая стрелка

Связанный контент