使用 TikZ 在单词的部分上使用任意数量的下划线 + 描述

使用 TikZ 在单词的部分上使用任意数量的下划线 + 描述

这是这个问题。在语言学中,词汇分析通常是必要的,我认为 TikZ 是一款出色的工具,可以为场景带来一些生命力、色彩,最重要的是清晰度。我不具备完成这一任务的技能,因此我绘制了一张我想做的事情的草图。

使用其他问题以下草图作为起点,我希望一些聪明的人能够想出一个灵活的解决方案。

暂定标准清单

  1. 括号针对要环绕的特定字母未实现
  2. 括号(花括号)应该能够互相重叠未实现
  3. 括号与单词之间的距离应可变(已在其他问题中完成)
  4. 描述到支撑的距离应该是可变的(已完成,请参阅 2013 年 4 月 2 日更新)
  5. 描述应该足够灵活,可以放置在远离括号的地方,并用虚线(或某种类型的线)连接到括号(已完成,请参阅 2013 年 4 月 2 日更新)
  6. 括号应该可以放在单词的上方和下方未实现有点像 percusse 的回答
  7. 灵活且易于应用于整段单词(例如芬兰语中的“我们的父亲”)!(TikZ 根据单词中指定的字母计算括号的宽度)未实现

TikZ 词分析示例

TikZ 词语分析


更新2013 年 4 月 2 日:标准 #4 和 #5

我今天能够满足标准 4 和标准 5!这是一份粗制滥造的工作,可能会简化(寻找专业人士来做这件事!)。

我从另一个问题中取出代码并添加

  • 变量
    • 调整垂直(yshift=)文本位置
    • 水平的(移位=)文本位置
    • 调整描述宽度(文字宽度=)
  • 柜台
    • 自动节点名称
    • 将描述与括号联系起来(使用“text#”和“brace#”)允许轻松地将描述连接到正确的括号

怎么运行的

为了给单词添加括号,可以使用 \tikzbrace 命令。下面显示了选项和示例。

\tikzbrace[括号 yshift]{word}{description}[文本宽度=20ex][文本 yshift][文本 xshift]

例如在操作中 * 注意变量内的冗余文本宽度(不确定如何修复此问题 - 请参阅“有点困惑”部分)

\tikzbrace[-1ex]{word}{名词后缀-me}[text width=20ex][5ex][xshift=4cm]

有点困惑

请注意命令中的变量顺序\新文档命令令人困惑,我不得不尝试一下它们的顺序。可能是由于 TikZ 解析参数的顺序。我还有一个冗余的文字宽度=选项已硬编码,但仍需要在变量中包含文本 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实现。abovebelow

在此处输入图片描述

相关内容