%3F.png)
Векторный графический редактор Ipe
В настоящее время я оцениваюipe
редактор векторной графики. Очень привлекательной особенностью является то, чтовнутри текстовых объектов можно использовать команды LaTeXпока они допустимы внутри \makebox
(для меток) или внутри мини-страницы (для мини-страниц). Однако нельзя использовать команды, которые включают нелинейный перевод в PDF, такие как команды для создания гиперссылок или включения внешних изображений. Тем не менее, команды LaTeX, которые определены в дополнительных пакетах LaTeX, могут быть включены с командой \usepackage
в преамбуле LaTeX, которую можно установить Document properties
в Edit
меню.
Вопрос
Я ищу способ заключить текст в рамку в форме левой или правой стрелки с помощью команд LaTeX в ipe
? Простой пакет LaTeX, который будет создавать текстовые поля, очень похожие на rarrow
иlarrow
BoxStyle
класс вmatplotlib
(см. образец ниже) будет вполне достаточно. Другие методы тоже приветствуются. LibreOffice Impress и PowerPoint также предлагают такие формы стрелок с текстом, даже изогнутые.
Попытки
- Рисование
\fbox
вокруг текстового объекта вipe
работает безупречно. Даже повернутый\ovalbox
с математикой не представляет проблемы с\usepackage{rotating, fancybox}
в преамбуле. Нет стрелок вfancybox
, хотя. - Я искал пакет LaTeX, предоставляющий поля в форме стрелок средипакеты, перечисленные среди "боксов" на CTAN. Возможно, я просматриваю, но, похоже, такого пакета нет в списке.
- Кажется, здесь все используют стрелки TikZ, поэтому я попробовалэтот примериэтот примервнутри
ipe
. Результат этих неудачных экспериментов TikZ показан на нижнем изображении. Он терпит неудачу из-заipe
ограничений текстового объекта LaTeX, упомянутых ранее.
matplotlib образец Boxstyle
Повернутый овал в 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}