tikz 图片上方和下方的标签

tikz 图片上方和下方的标签

以下是我需要做的事情:

在此处输入图片描述

我的尝试(当然是错误的):

\documentclass{article}
\usepackage{tikz}
%\usetikzlibrary{positioning}

 \tikzset{
  mynode/.style={fill,circle,inner sep=2pt,outer sep=0pt}
  }

\begin{document}
\begin{tikzpicture}
 \draw[black,thick] (0,0) -- (5,0)
  node[pos=0,mynode,label=above:{\itshape /in/}]{}
  node[pos=0.5,mynode,label=above:{\itshape /z/}, label=below:{
    \draw[->] (0,0) -- (-4,0) node [pos=.5, below] {\itshape phonology}; 
    {\scshape midpoint};
    \draw[->] (0, 0) -- (4, 0) node [pos=.5, below] {\itshape suppletion} } ]{}
  node[pos=1,mynode,label=above:{\itshape go/went}]{};
\end{tikzpicture}
\end{document}

答案1

您的主要问题是标签应该是普通的 LaTeX 代码,但您在标签中放入了 tikz 代码。您可以通过将标签内容封装在 tikz 环境中来编译代码,但这可能不是您想要的(嵌套 tikz 环境充其量是一种不确定的做法)。

最好将“中点”标签定位为其自身的实际节点(因为您目前正在进行“音系学”和“补充学”),以便您可以添加相对于它的箭头。

\documentclass[tikz, border=5pt]{standalone}
\usepackage{tikz}
% \usetikzlibrary{positioning}

 \tikzset{
    mynode/.style={fill,circle,inner sep=2pt,outer sep=0pt}
  }

\begin{document}
\begin{tikzpicture}[font=\itshape]
  \draw[thick] (0,0) node[mynode, label=/in/] {}
    -- ++(7,0) node[mynode, label=go/went] {}
    node[pos=.5, mynode, label=/z/] (z) {}
    node[pos=.5, below=3pt] (midpoint) {\scshape midpoint}
    ;
  \draw[->] (midpoint) -- ++(-3,0) node[pos=.5,below] {phonology};
  \draw[->] (midpoint) -- ++( 3,0) node[pos=.5,below] {suppletion};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

这只是与 Emma 的代码有一点点不同。

有时提醒一下是有用的:

  • 可以声明多个label选项: node[label=A, label=below:B, label=...]

  • 每个标签都可以包含特殊选项:node[label={[options valid for this particular label]label position:label text}

  • 其中一个选项是name为特定标签节点分配名称

因此可以这样写:

node[pos=.5, mynode, label=/z/, 
     label={[name=midpoint]below:midpoint}] (z) {}

它声明了一个节点,上面(默认位置)和下面z有两个标签。第二个标签名为。此后,标签可以作为名为 的常规节点引用。/z/midpointmidpointmidpointmidpoint

\documentclass[tikz, border=5pt]{standalone}
\usepackage{tikz}

 \tikzset{
    mynode/.style={fill,circle,inner sep=2pt,outer sep=0pt}
  }

\begin{document}
\begin{tikzpicture}[font=\itshape]
  \draw[thick] (0,0) node[mynode, label=/in/] {}
    -- ++(7,0) node[mynode, label=go/went] {}
    node[pos=.5, mynode, label=/z/, label={[name=midpoint]below:midpoint}] (z) {}
    ;
  \draw[->] (midpoint) -- ++(-3,0) node[pos=.5,below] {phonology};
  \draw[->] (midpoint) -- ++( 3,0) node[pos=.5,below] {suppletion};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

看看以下解决方案是否可以接受:

\documentclass[ tikz,
                border=3mm]{standalone}
%\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
    mynode/.style = {fill,circle,inner sep=2pt,outer sep=0pt,
                     node contents={}},
every node/.style = {font=\itshape}
                    ]
\draw[black,thick] 
    (0,0)   node (a) [mynode,label=/in/] 
      --    node (b) [below] {phonology}
    (5,0)   node (c) [mynode,label=/z/]
            node (d) [below] {midpoint}
      --    node (e) [below] {suppletion} 
    (10,0)  node (f) [mynode,label=go/went]; 
\draw[->] (d) -- (b);
\draw[->] (d) -- (e);
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑: ups,在上面的回答中我忽略了所需的图像形式...下面是更正的版本:

在此处输入图片描述

获得方式如下:

\documentclass[ tikz,
                border=3mm]{standalone}

\begin{document}
\begin{tikzpicture}[
    mynode/.style = {fill,circle,inner sep=2pt,outer sep=0pt,
                     node contents={}},
every node/.style = {font=\itshape}
                    ]
\draw[black,thick] 
    (0,0)   node (a) [mynode,label=/in/] 
      --    
    (5,0)   node (b) [mynode,label=/z/]
            node (c) [below] {midpoint}
      --    
    (10,0)  node (d) [mynode,label=go/went]; 
\draw[->] (c) -- node [below] {phonology}   ([xshift= 12mm] c -| a);
\draw[->] (c) -- node [below] {suppletion}  ([xshift=-12mm] c -| d);
\end{tikzpicture}
\end{document}

相关内容