Используйте произвольное количество подчеркиваний + описания с использованием TikZ для частей слов.

Используйте произвольное количество подчеркиваний + описания с использованием TikZ для частей слов.

Это расширениеэтот вопрос. В лингвистике часто необходим анализ слов, и я думаю, что TikZ — это отличный инструмент, чтобы привнести немного жизни, цвета и, прежде всего, ясности в сцену. Я не обладаю навыками, чтобы сделать это, поэтому я набросал набросок того, что я хотел бы сделать.

Используядругой вопросиследующий эскизВ качестве отправной точки я надеюсь, что какой-нибудь умный ум предложит гибкое решение.

Предварительный список критериев

  1. Скобки предназначены для обтекания определенных буквНЕДОСТИГНУТО
  2. Фигурные скобки должны иметь возможность перекрывать друг друга.НЕДОСТИГНУТО
  3. Расстояние между скобками и словом должно быть переменным(выполнено в другом вопросе)
  4. Описание Расстояние до скобы должно быть переменным(выполнено, см. обновление 2 апреля 2013 г.)
  5. Описание должно быть достаточно гибким, чтобы его можно было разместить где-нибудь далеко от скобки и соединить с скобкой пунктирной линией (или другим типом линии).(выполнено, см. обновление 2 апреля 2013 г.)
  6. Скобки должны быть такими, чтобы их можно было ставить как над, так и под словом.НЕДОСТИГНУТОсвоего рода см. ответ перкусса
  7. Гибкость и простота применения к целому абзацу слов (например, «Отче наш» на финском языке!) (TikZ вычисляет ширину скобок из указанных букв в слове)НЕДОСТИГНУТО

Пример анализа слова TikZ:

Анализ слов TikZ


ОБНОВЛЯТЬ2 апреля 2013 г.: Критерии № 4 и № 5

Сегодня мне удалось выполнить критерии № 4 и № 5! Это халтурная работа, и ее, возможно, можно оптимизировать (ищу профессионала, который это сделает!).

Я взял код из другого вопроса и добавил

  • Переменные
    • отрегулируйте вертикаль(yshift=)расположение текста
    • горизонтальный(xshift=)расположение текста
    • настроить ширину описания(ширина текста=)
  • Прилавок
    • автоматические имена узлов
    • связать описания с фигурными скобками(используя "текст#" и "фигурные скобки#")позволяет легко присоединить описания к правильным скобкам

Как это работает

Чтобы добавить скобку к слову, используйте команду \tikzbrace. Ниже показаны параметры и пример.

\tikzbrace[скобка yshift]{word}{description}[ширина текста=20ex][текст yshift][текст xshift]

например, в действии * Обратите внимание на избыточную ширину текста внутри переменной (не уверен, как это исправить — см. раздел «Немного путаницы»)

\tikzbrace[-1ex]{word}{Им.ед.ч. суффикс -me}[ширина текста=20ex][5ex][xshift=4cm]

Немного путаницы

Обратите внимание, что порядок переменных в команде\NewDocumentCommandсбивают с толку, и мне пришлось немного поэкспериментировать с их порядком. Вероятно, из-за порядка, в котором TikZ анализирует параметры. У меня также есть избыточныйширина текста=option жестко закодирован, но все равно необходимо включить текст width= в переменную. Может кто-то знает, как это исправить.

Почему я использую TikZ-Dependency?

Должны сработать две вещи:

  • Ссылки на целые слова (для дословного перевода) (над словами)

И

  • Все еще есть отдельные узлы, начинающиеся/заканчивающиеся на определенные буквы. (ниже слов)

Эту проблему можно решить, если кто-то знает, как решить критерий №2, используя буквы в качестве ссылок (часть гибкости этого проекта).

Делать

  • Соответствие недостающим критериям (см. контрольный список выше, который я буду обновлять, пока не разрешу проблему)
  • разрешить возврат каретки в описаниях (не работает даже при заданной ширине текста)Достигнуто (РЕШЕНИЕ: нужен параметр align= для узла описания, например align=left)

Обновленный пример критериев 4 и 5

\documentclass[]{beamer}
\usepackage{fontspec}
\usepackage{tikz-dependency}

\newcounter{mycounter}
\setcounter{mycounter}{1}


\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,calc}
\usepackage{xparse}

% TikZ Command for Brace
\NewDocumentCommand{\tikzbrace}{O{-2.5ex} m m O{} O{1ex} O{} O{0ex}}{%
   \tikz[remember picture]\coordinate (left brace coord);%
   #2%
   \tikz[remember picture]\coordinate (right brace coord);%
   \begin{tikzpicture}[remember picture,overlay,
      transform canvas={yshift=#1}]
      \draw [decoration={amplitude=1ex,brace},decorate,#4] %
         (right brace coord) -- (left brace coord)
         node [#6,xshift=#7,midway,below=#5,font=\scriptsize] (text\arabic{mycounter}) {#3};
      \path (right brace coord) -- (left brace coord) node[midway,yshift=#1] (brace\arabic{mycounter}) {\stepcounter{mycounter}};
   \end{tikzpicture}%
}

\begin{document}
  \begin{frame}{Satz 1}
    \begin{dependency}[edge style={red,densely dotted}]
      \begin{deptext}
        \tikzbrace[-1ex]{Isae}{Vater} \& meidän, \& joka \& \tikzbrace[-1ex]{olet}{2Psg} \& \tikzbrace[-1ex]{taiva}{-\emph{issa}=pl (sg -\emph{ssa}) Inessiv, ähnlich Lokativ, e.g. talossa "in dem Haus"}[text width=20ex][10ex][xshift=0cm]\tikzbrace[-1ex]{issa}{-issa=pl von -ssa Inessiv (ähnlich wie Lokativ). Trägt die Bedeutung „in“
z.B talossa=in the house
}[text width=20ex][5ex][xshift=4cm],\\
      \end{deptext}
      \deproot[edge unit distance=1ex]{1}{Vater}
      \deproot[edge unit distance=1ex]{2}{unserer}
      \deproot[edge unit distance=1ex]{3}{wer}
    \end{dependency}
    % Lines - Description to Brace
    \begin{tikzpicture}[remember picture, overlay]
    \draw[red, dotted] (text4.north) to [out=90,in=270](brace4.south);
    \draw[red, dotted] (text3.north) to [out=90,in=270](brace3.south);
    \end{tikzpicture}
  \end{frame}
\end{document}

решение1

Вы можете использовать одну и ту же идею с различными возможностями, такими как raiseдекор, или смещать координаты, использовать якоря и т. д.

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.pathmorphing,calc}
\begin{document}
\begin{tikzpicture}
\node[outer sep=0,inner sep=1pt] (w) {\Large Reenactment};
%The angle anchors
\draw[decoration={brace,raise=1mm},decorate,] (w.166) -- (w.13) 
node[midway,above=2mm,align=center,anchor=south] {Some linguistic\\ text here};

% The explicit coord calc
\draw[decoration={brace,raise=1mm,mirror},decorate] (w.south west) -- ($(w.south)-(8mm,0)$)
coordinate [midway,below=2mm] (c1);
\draw[densely dashed] ([yshift=-2mm]c1) --++(0,-1cm) node[below] {Prefix-re};

\draw[decoration={brace,raise=20mm,mirror},decorate] (w.south west) -- (w.south);

\draw[decoration={brace,mirror},decorate] 
     ([yshift=-3cm]w.south west) -- ([yshift=-3cm]w.south east);
\end{tikzpicture}
\end{document}

Размещение узла может быть выполнено через параметр midwayдля середины или pos=number. Смещение узла может быть достигнуто путем предоставления расстояния до aboveили belowв качестве аргументов.

введите описание изображения здесь

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