Замечания

Замечания

У меня есть следующая тикз-картинка:

 \documentclass{book}
 \usepackage{tikz}

 \begin{document}

 \begin{tikzpicture}
 \node(x1) {$x_1$};
 \node(x2) [right of = x1] {$x_2$};
 \node(x3) [right of = x2]{$x_3$};
 \node(x4) [right of = x3]{$x_4$};

 \draw [->] (x1) -- (x2) ;
 \draw [->] (x2) -- (x3) ;
 \draw [->] (x3) -- (x4) ;


 \node(y1) [below of = x1]{$y_1$};
 \node(y2) [right of = y1] {$y_2$};
 \node(y3) [right of = y2] {$y_3$};
 \node(y4) [right of = y3] {$y_4$};

 \draw [->] (y1) -- (x1) ;
 \draw [->] (y2) -- (x2) ;
 \draw [->] (y3) -- (x3) ;
 \draw [->] (y4) -- (x4) ;

 \end{tikzpicture}

  \end{document}

Я хочу, чтобы стрелки были длиннее. Когда я использую "shorten >= -5pt", например, в команде рисования в квадратных скобках, стрелки становятся длиннее, но они проходят над узлами. Есть ли способ сделать все более просторным, в дополнение к удлинению стрелок?

Кроме того, есть ли способ вставить еще один узел слева от одной из вертикальных стрелок? (или, точнее, как мне указать «ниже» или «слева от» и т. д. для стрелки, а не узла?) Я попробовал \draw(arr1), чтобы пометить стрелку, а затем позже поместить узел слева от arr1, но получаю ошибку.

решение1

Вам не следует использовать below of = node. Он устарел (см.Разница между «right of=» и «right=of» в PGF/TikZ). Вместо этого используйте positioningбиблиотеку от tikz. Она позволяет вам писать right = 1.5cm of node. Вы можете варьировать или не указывать расстояние.

Чтобы обозначить путь, просто добавьте node[left] {label 1}после --. Вы можете добавить pos=valueзначение от 0 до 1 к параметрам узла, чтобы указать положение на пути.

Пример

(ваш измененный код)

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{positioning}

\begin{document}
    \begin{tikzpicture}
        \node(x1) {$x_1$};
        \node(x2) [right = 1.5cm of x1] {$x_2$};
        \node(x3) [right = 1.5cm of x2]{$x_3$};
        \node(x4) [right = 1.5cm of x3]{$x_4$};

        \draw [->] (x1) -- (x2) ;
        \draw [->] (x2) -- (x3) ;
        \draw [->] (x3) -- (x4) ;


        \node(y1) [below = 2 of x1]{$y_1$};
        \node(y2) [below = 2 of x2] {$y_2$};
        \node(y3) [below = 2 of x3] {$y_3$};
        \node(y4) [below = 2 of x4] {$y_4$};

        \draw [->] (y1) -- node[left, pos=0.2] {beginning} (x1) ;
        \draw [->] (y2) -- node[left, pos=.8] {ending} (x2) ;
        \draw [->] (y3) -- node[left] {label 3} (x3) ;
        \draw [->] (y4) -- node[left] {label 4} (x4) ;
    \end{tikzpicture}
\end{document}

Результаты в:

результат

решение2

Замечания

Вы можете указать расстояние по умолчанию между узлами, которые размещаются с помощью right of=, left of=и т.д., используя ключ node distance=<length>.

Чтобы разместить узел вдоль пути, просто вставьте его после lineto-operation, т.е.

\draw (0,0) -- node {on the path} (4,0);

Если вы хотите, чтобы текст имел наклон в соответствии с вашим контуром, используйте slopedключ в качестве опции для узла.

Подробнее о размещении узлов читайте вДокументация TikZв разделе 16.8 на стр. 190. Вас также может заинтересовать Учебное пособие «Сеть Петри для Хагена», в котором исследуются узлы, и которое можно найти в главе 3 на стр. 40.

Выполнение

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[node distance=2.5cm]
    \node(x1) {$x_1$};
    \node(x2) [right of = x1] {$x_2$};
    \node(x3) [right of = x2] {$x_3$};
    \node(x4) [right of = x3] {$x_4$};

    \draw [->] (x1) -- (x2) ;
    \draw [->] (x2) -- (x3) ;
    \draw [->] (x3) -- (x4) ;


    \node(y1) [below of = x1]{$y_1$};
    \node(y2) [right of = y1] {$y_2$};
    \node(y3) [right of = y2] {$y_3$};
    \node(y4) [right of = y3] {$y_4$};

    \draw [->] (y1) -- node[sloped,below] {(y1) $\to$ (x1)} (x1) ;
    \draw [->] (y2) -- node[sloped,below] {(y2) $\to$ (x2)} (x2) ;
    \draw [->] (y3) -- node[sloped,below] {(y3) $\to$ (x3)} (x3) ;
    \draw [->] (y4) -- node[sloped,below] {(y4) $\to$ (x4)} (x4) ;
\end{tikzpicture}
\end{document}

Выход

введите описание изображения здесь

Связанный контент