tikz节点中项目列表的间距+节点措辞位置

tikz节点中项目列表的间距+节点措辞位置

是的,实际上有两个问题,但我希望它们足够接近以至于相互关联。

大家好,我正在尝试使用 tikz 绘制流程图。当我想在节点中放置一个逐项列表时,solb我无法single按照我的意愿使列表的间距保持左对齐。

此外,当我将描述添加到箭头时,我不知道如何将描述固定在北方中心到箭头的水平部分。

如果有人能帮我解决这两件事就最好了。非常感谢。

我的 MWE 在这里。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{varwidth}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}

\tikzstyle{rec} = [
    rectangle,
        minimum width = 1cm, minimum height = 1cm,
    text centered,
    draw = black, fill = white]
\tikzstyle{recw80} = [
    rectangle]
\tikzstyle{recw30} = [
    rectangle,
        minimum width = 1cm, minimum height = 1cm,
    text width = 3cm,
    draw = black, fill = white]
\tikzstyle{arrow} = [thick,->,>=stealth]

\begin{document}

\makebox[\textwidth][c]{\begin{tikzpicture}[node distance=2cm]

\node (start) [rec] {Hi};
\node (q1) [recw80, below of=start, yshift=-0.5cm] {};
\node (solb) [recw30, right of=q1, xshift=6.5cm] {
    \begin{varwidth}{\linewidth}\begin{itemize}
        \item Point 1,
        \item Point 2, or
        \item Point 3.
    \end{itemize}\end{varwidth}};

\draw [arrow] (solb) |- node[anchor=south] {How are you?} (start);

\end{tikzpicture}}

\end{document}

答案1

欢迎!请注意 已\tikzstyle弃用。(我也不明白 的用途\makebox。)您可以使用enumitem包来自定义您的itemize环境,使用align=left,并使用pos=0.75将边缘标签放在水平拉伸的中间。我还建议使用库positioning,即 而below of不是 ,例如使用below=<distance> of。在您的示例中,这使我们能够消除辅助q1节点。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{varwidth}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{positioning}

\tikzset{rec/.style={
    rectangle,
        minimum width = 1cm, minimum height = 1cm,
    text centered,
    draw = black, fill = white},
recw80/.style={
    rectangle},
recw30/.style={
    rectangle,
        minimum width = 1cm, minimum height = 1cm,
    text width = 3cm,align=left,
    draw = black, fill = white},
arrow/.style={thick,->,>=stealth}}

\begin{document}

\begin{figure}
\centering
\begin{tikzpicture}[node distance=2cm]
\node (start) [rec] {Hi};
\node (solb) [recw30,below right=0.5cm and 6.5cm of start] {
    \begin{varwidth}{\linewidth}\begin{itemize}[nosep,leftmargin=*]
        \item Point 1,
        \item Point 2, or
        \item Point 3.
    \end{itemize}\end{varwidth}};

\draw [arrow] (solb) |- node[pos=0.75,above] {How are you?} (start);

\end{tikzpicture}
\caption{A Ti\emph{k}Z picture.}
\end{figure}
\end{document}

在此处输入图片描述

相关内容