對齊 tikz 鏈圖中的節點

對齊 tikz 鏈圖中的節點

我的工作就是從這裡開始的例子

清理程式碼以更好地理解命令後,我遇到了這種情況

\begin{tikzpicture}[
    scale=0.75,
    start chain=1 going below, 
    start chain=2 going right,
    node distance=3mm,
    blocksgeneric/.style={
        scale=0.75,
        on chain=2,
        rectangle,
        rounded corners,
        draw=black, 
        very thick,
        text centered,
        text width=8cm,
        minimum height=12mm,
        fill=black!10
        },
    blocksblue/.style={
        fill=blue!30
    },
    labels/.style={
        scale=0.75,
        on chain=1,
        minimum height=12mm,
        text width=2cm,
        text centered
    },
    every node/.style={font=\sffamily}
]

% Left column
\node [labels] (L5) {L5};
\node [labels] (L4) {L4};
\node [labels] (L3) {L3};
\node [labels] (L2) {L2\\L2\\L2\\L2\\L2\\L2};
\node [labels] (L1) {L1};
\node [labels] (L0) {L0};

% Right column
\chainin (L5); % Start right of L5

\node [blocksgeneric] (B5) {B5};
\node [blocksgeneric, blocksblue, continue chain=going below] (B4) {B4};
\node [blocksgeneric] (B3) {B3};
\node [blocksgeneric] (B2) {B2};
\node [blocksgeneric] (B1) {B1};
\node [blocksgeneric] (B0) {B0};

\end{tikzpicture}

結果是這樣的。

我想要的是以相同的方式將 L2 標籤保留在 B2 塊和其他區塊旁邊。

編輯1:如果我想自訂右側其中一個區塊的高度以代表更大的概念,我該怎麼辦?左側的標籤應位於區塊的中心。同時,如果一個區塊比包含大量文字的標籤小(因為我希望它很小),我怎麼能保持區塊小,但同時將其放在左側文字的中心?

編輯2:最後一個問題:如果我想將塊B2的尺寸擴展到標籤L2的尺寸(取決於實際高的值)我該怎麼辦?

答案1

您可以使用 來定位節點,而不是使用鏈\matrix,其行為類似於tabular具有動態列的環境。如果您想了解更多信息,請查看 PGF 手冊。

我在那裡修好了

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}[
    scale=0.75,
    blocksgeneric/.style={
        scale=0.75,
        rectangle,
        rounded corners,
        draw=black, 
        very thick,
        text centered,
        text width=8cm,
        minimum height=12mm,
        fill=black!10
        },
    blocksblue/.style={
        fill=blue!30
    },
    labels/.style={
        scale=0.75,
        minimum height=12mm,
        text width=2cm,
        text centered
    },
    every node/.style={font=\sffamily}
]

% Left column

\matrix[row sep=3mm]{
    \node [labels] (L5) {L5}; &
    \node [blocksgeneric] (B5) {B5}; \\

    \node [labels] (L4) {L4}; &
    \node [blocksgeneric, blocksblue] (B4) {B4\\B4\\B4\\B4\\B4}; \\

    \node [labels] (L3) {L3}; &
    \node [blocksgeneric] (B3) {B3}; \\

    \node [labels] (L2) {L2\\L2\\L2\\L2\\L2\\L2}; &
    \node [blocksgeneric] (B2) {B2}; \\

    \node [labels] (L1) {L1}; &
    \node [blocksgeneric] (B1) {B1}; \\

    \node [labels] (L0) {L0}; &
    \node [blocksgeneric] (B0) {B0}; \\
};

\end{tikzpicture}
\end{document}

相關內容