TikZ:节点两侧的项目符号

TikZ:节点两侧的项目符号

这是我正在为论文研究的图表的 MWE:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}

\begin{document}
\begin{tikzpicture}
[
    item/.style={circle, fill, minimum width=2pt, inner sep=0pt},
    group/.style={rectangle, draw},
]

% group 1
\node (item1)      [item, label=left:item 1] {};
\node (item2)      [item, label=left:item 2, below=12pt of item1] {};

% group 2
\node (item3)      [item, label=right:item 3, right=60pt of item1] {};
\node (item4)      [item, label=right:item 4, below=12pt of item3] {};

\begin{scope}[on background layer]
% groups
\node (group1) [fit=(item1) (item2), group, label=above:group 1, xshift=-27pt, minimum width=80pt, inner sep=12pt] {};
\node (group2) [fit=(item3) (item4), group, label=above:group 2, xshift=27pt, minimum width=80pt, inner sep=12pt] {};
\end{scope}
\end{tikzpicture}
\end{document}

有几组(画成矩形),每组包含一些项目。每个项目旁边都有一个要点。

TikZ 图

我的问题:我怎样才能在项目的两侧复制项目要点(即,当它们在右侧时,我希望它们也同时在左侧)?谢谢,

查理

答案1

将每条线放在 80pt 节点中lineitem,并用来path picture创建两个圆圈。

([xshift=-2pt]item1.east)编辑:我们可以通过将 修改outer sep=2pt为 来定位具有 和 的点 outer sep=0pt

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,backgrounds}

\begin{document}
\begin{tikzpicture}
[
%item/.style={circle, fill,red, minimum width=2pt, inner sep=0pt},
lineitem/.style={
        %draw,
        minimum width=80pt,
        inner sep=0pt, 
        outer sep=0pt,%<-- modif
        path picture = {
            \draw [fill] ([xshift=2pt]path picture bounding box.west) circle (1pt);
            \draw [fill] ([xshift=-2pt]path picture bounding box.east) circle (1pt);
                }
},
group/.style={rectangle, draw},
]

% group 1
\node [lineitem]                        (item1) {item 1};
\node [lineitem,below=12pt of item1]    (item2) {item 2};

% group 2
\node [lineitem, right=60pt of item1]   (item3) {item 3};
\node [lineitem, below=12pt of item3]   (item4) {item 4};


\begin{scope}[on background layer]
% groups
\node (group1) [fit=(item1) (item2), group, label=above:group 1minimum,inner sep=12pt] {};
\node (group2) [fit=(item3) (item4), group, label=above:group 2,inner sep=12pt] {};
\end{scope}


\draw ([xshift=-2pt]item1.east)--([xshift=2pt]item4.west);
\end{tikzpicture}
\end{document}

[1]:https://i.stack.imgur.com/q3Hgd.png

答案2

mid west我将使用和锚点为项目符号添加标签,mid east使其垂直对齐。通过使这些标签的名称取决于\tikzlastnode,它们将自动根据其父节点的名称进行命名。

我在下面的例子中使用矩阵来命名节点<matrix name>-<row>-<column>,因此项目符号被命名<matrix name>-<row>-<column>-w为“---e”,但上面的内容适用于每个命名节点。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix, positioning, quotes}
\tikzset{
  group with itemize/.style={
    matrix of nodes, draw, nodes={itemize, text depth=+0pt}},
  itemize/.style={
    append after command={
      [every node/.code=] % empty “every node”
        nodealso[
          label={[every item=weast,xshift=+-.15em]mid west:},
          label={[every item=ewest,xshift=+ .15em]mid east:}](\tikzlastnode)}},
  every item/.style 2 args={
    shape=circle, inner sep=+0pt, outer sep=+0pt,
    minimum size=+.6ex, fill, name=\tikzlastnode-#1, anchor=#2}}
\begin{document}
\tikz
 \node[group with itemize, "group 1"]                  (group1) {
    item 1 \\
    item 2 \\
  }
  node[group with itemize, "group 2", right=of group1] (group2) {
    Foo Long Text Bar  \\
    item 4 \\
  }
  (group1-1-1-e) edge[red] (group2-2-1-w)
  ;
\end{document}

输出

在此处输入图片描述

答案3

像这样:

在此处输入图片描述

代码(仅 tikz - 没有库):

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

\begin{document}
    \begin{tikzpicture}
        \node at(4,3) () {group1};
        \node at(9,3) () {group2};
        \draw (2,1) rectangle (6,2.5);
        \draw (7,1) rectangle (11,2.5);
        \filldraw[draw=white] (2.5,2) circle(2pt) -- (5.5,2) circle(2pt) node[pos=.5,fill=white] () {item 1};
        \filldraw[draw=white] (2.5,1.5) circle(2pt) -- (5.5,1.5) circle(2pt) node[pos=.5,fill=white] () {item 2};
        \filldraw[draw=white] (7.5,2) circle(2pt) -- (10.5,2) circle(2pt) node[pos=.5,fill=white] () {item 3};
        \filldraw[draw=white] (7.5,1.5) circle(2pt) -- (10.5,1.5) circle(2pt) node[pos=.5,fill=white] () {item 4};
    \end{tikzpicture}
\end{document}

您可以使图片更紧凑——更改坐标的节点。

相关内容