![Разные направленные графы](https://rvso.com/image/298811/%D0%A0%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5%20%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B3%D1%80%D0%B0%D1%84%D1%8B.png)
Мне нужно сделать график, похожий на тот, что на картинке выше, но я не знаю, как сделать горизонтальные линии без стрелки или вертикальную стрелку. Лучшее, что я смог сделать, это следующее:
\documentclass{amsart}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}
\node (p1) at ( 0, 0) {};
\node (p2) at ( 1, -0.2) {i};
\node (p3) at ( 3,0) {};
\node (p4) at ( 0,1) {};
\node (p5) at ( 2,1.2) {n+j};
\node (p6) at ( 3,1) {};
\begin{scope}[every path/.style={->}]
\draw (p1) -- (p3);
\draw (p4) -- (p6);
\draw (p2) -- (p5);
\end{scope}
\end{tikzpicture}
\end{center}
\end{document}
Выход
решение1
Это желаемый результат:
Примечания:
- Если вы не хотите, чтобы на концах линий были стрелки, измените стиль на
every path/.style={-}
или просто уберите эту опцию, как я сделал ниже. По умолчанию линии не имеют стрелок. - Стиль стрелки, который вам нужен, —
-latex
. Поэтому просто добавьте эту опцию, когда это необходимо (как в случае с оранжевой линией). - Добавлено
shorten <=
иshorten >=
для продления оранжевой линии. В качестве альтернативы вы можете вручную выбрать точки, которыеналиния. - Библиотека
calc
использовалась для вычисления средней точкиcoordinate
s, с помощью которой была проведена вертикальная черная линия. - Я перевел метки узлов в математический режим, добавив
$
. - Добавлены цвета, чтобы было легче понять, какая команда рисования за что отвечает.
Код:
\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin{tikzpicture}[thick]
\node (p1) at ( 0, 0) {};
\node (p2) at ( 1, -0.2) {$i$};
\node (p3) at ( 3,0) {};
\node (p4) at ( 0,1) {};
\node (p5) at ( 2,1.2) {$n+j$};
\node (p6) at ( 3,1) {};
\coordinate (p1MidwayP3) at ($(p1)!0.5!(p3)$);
\coordinate (p4MidwayP6) at ($(p4)!0.5!(p6)$);
\begin{scope}%[every path/.style={-}]
\draw [red] (p1) -- (p3);
\draw [blue] (p4) -- (p6);
\draw [orange, shorten <=-0.08cm, shorten >=-0.10cm, -latex](p2) -- (p5);
\draw (p1MidwayP3) -- (p4MidwayP6);
\end{scope}
\end{tikzpicture}
\end{center}
\end{document}
решение2
Решение PSTricks в сочетании сxfp
:
\documentclass{article}
\usepackage{pstricks-add}
\usepackage{xfp}
\begin{document}
\def\Horizontal{5} % length of the horizontal line segments
\def\Vertical{3} % length of the vertical line segment
\def\Indent{0.5} % indentation of the arrow from both sides
\begin{pspicture}(0,-0.4)(\Horizontal,\fpeval{\Vertical+0.45})
\psline(0,0)(\Horizontal,0)
\psline(0,\Vertical)(\Horizontal,\Vertical)
\psline(\fpeval{\Horizontal/2},0)(\fpeval{\Horizontal/2},\Vertical)
\psline{->}(\Indent,0)(\fpeval{\Horizontal-\Indent},\Vertical)
\uput[270](\Indent,0){$i$}
\uput[90](\fpeval{\Horizontal-\Indent},\Vertical){$n+j$}
\end{pspicture}
\end{document}
Все, что вам нужно сделать, это выбрать значения \Horizontal
, \Vertical
, и \Indent
, и рисунок будет соответствующим образом скорректирован.