在一个 TiKZ 矩形节点内左对齐和右对齐

在一个 TiKZ 矩形节点内左对齐和右对齐

我想创建一个类似于的 PID 控制器框图这里。目前我的图表如下所示。我还需要将矩形节点内的文本左右对齐,即我希望字母 P、I、D 位于左侧,而方程式位于右侧。我该如何实现这一点?另外,您能告诉我如何将圆圈缩小一点吗?

enter image description here

\tikzstyle{int}=[draw, fill=blue!20, minimum size=2em, text width=2.5cm]
\tikzstyle{sum}=[draw, fill=blue!20, shape=circle, node distance=2.5cm]
\begin{figure}[htbp]
\centering
    \begin{tikzpicture}[node distance=1.5cm,auto,>=latex']
        \node [int] (kp) {P $k_p e(t)$};
        \node [int] (ki) [below of=kp] {I $k_i \int{e(t)dt}$};
        \node [int] (kd) [below of=ki] {D $k_d \frac{e(t)}{dt}$};
        \node [sum] (sum) [right of=ki] {$\sum$};
        \node [coordinate] (joint1) [left of=ki, node distance=2cm]{};
        \node [coordinate] (begin) [left of=joint1, node distance=2cm]{};
        \node [coordinate] (end) [right of=sum, node distance=2cm]{};
        \draw[-] (begin) -- node {$e(t)$} (joint1);
        \draw[->] (joint1) |- (kp.west);
        \draw[->] (joint1) -- (ki);
        \draw[->] (joint1) |- (kd);
        \draw[->] (kp.east) -| node [pos=0.95] {$+$} (sum.north);
        \draw[->] (ki.east) -- node [pos=0.8] {$+$} (sum.west);
        \draw[->] (kd.east) -| node [pos=0.95] {$+$} (sum.south);
        \draw[->] (sum.east) -- (end);
    \end{tikzpicture}   
\end{figure}

答案1

您可以\hfill在字母和公式之间使用 来同时进行左右调整。text width但这只有在您明确指定 时才有效(就像您在代码中所做的那样)。

要减小圆圈的尺寸,您必须减小inner sep(默认设置为2pt)。如果您希望节点更小,您必须选择较小的字体大小(font=\small例如使用),或者使用缩放节点scale=<value>

这是一个最小的例子(这也是在问题中发布代码的首选形式,因为它省去了人们猜测所需库/包的麻烦,并确保代码实际上是完整的):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\tikzstyle{int}=[draw, fill=blue!20, minimum size=2em, text width=2.5cm]
\tikzstyle{sum}=[draw, fill=blue!20, shape=circle, inner sep=1pt, node distance=2.5cm]
\begin{figure}[htbp]
\centering
    \begin{tikzpicture}[node distance=1.5cm,auto,>=latex']
        \node [int] (kp) {P\hfill$k_p e(t)$};
        \node [int] (ki) [below of=kp] {I\hfill$k_i \int{e(t)dt}$};
        \node [int] (kd) [below of=ki] {D\hfill$k_d \frac{e(t)}{dt}$};
        \node [sum] (sum) [right of=ki] {$\sum$};
        \node [coordinate] (joint1) [left of=ki, node distance=2cm]{};
        \node [coordinate] (begin) [left of=joint1, node distance=2cm]{};
        \node [coordinate] (end) [right of=sum, node distance=2cm]{};
        \draw[-] (begin) -- node {$e(t)$} (joint1);
        \draw[->] (joint1) |- (kp.west);
        \draw[->] (joint1) -- (ki);
        \draw[->] (joint1) |- (kd);
        \draw[->] (kp.east) -| node [pos=0.95] {$+$} (sum.north);
        \draw[->] (ki.east) -- node [pos=0.8] {$+$} (sum.west);
        \draw[->] (kd.east) -| node [pos=0.95] {$+$} (sum.south);
        \draw[->] (sum.east) -- (end);
    \end{tikzpicture}   
\end{figure}

\end{document}

相关内容