Параллельные стрелки в коммутативной диаграмме в Tikz

Параллельные стрелки в коммутативной диаграмме в Tikz

Я хотел бы сделать все стрелки, которые должны быть параллельны в моей коммутативной диаграмме, на самом деле параллельными. Вот моя диаграмма:

  \begin{center}
    \begin{tikzpicture}
    \matrix (m) [matrix of math nodes,row sep=3em,column sep=4em,minimum width=3em]
    {
        F(\mu F) & FA \\
        \mu F & A \\};
    \path[-stealth]
    (m-1-1) edge node [left] {$ in_{F} $} (m-2-1)
    edge  node [above] {$F(h)$} (m-1-2)
    (m-2-1.east) edge node [above] {$h$}
    node [above] {} (m-2-2)
    (m-1-2) edge node [right] {$ g $} (m-2-2)
    ;
    \end{tikzpicture}
\end{center}

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

Как мне это сместить и получить правильный квадрат?

решение1

Вместо матрицы используйте специализированное расширение TikZ, а именно tikz-cd:

\documentclass[a4paper,12pt]{article}
\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}
F(\mu F) \arrow[r, "F(h)"] \arrow[d, "\mathit{in}_{F}"'] & FA \arrow[d, "g"] \\
\mu F \arrow[r, "h"] & A
\end{tikzcd}
\end{document}

Синтаксис более естественный, метки имеют правильный размер, а стрелки такие же, как в общем математическом шрифте.

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

решение2

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

\documentclass[border=3mm]{standalone}
\usepackage{tikz-cd}

\begin{document}
\begin{tikzcd}[row sep=huge] % <---
    F(\mu F)
    \arrow{r}{F(h)} 
    \arrow{d}{in_F}
&
    FA
    \arrow{d}{g}   \\
%
    A
    \arrow{r}{h}
&
    (\mu F)
\end{tikzcd}
\end{document}

О, ответ почти такой же, как и усебастьяно:-(. ну диаграмма немного более квадратная :-)

решение3

На самом деле, есть довольно небольшое изменение, которое исправит вещи, которые могут вас заинтересовать, поскольку оно также полезно в других частях LaTeX. Проблема здесь в том, что \muу есть подстрочный элемент, а FAу нет. Вы можете получить блок, у которого есть «все высоты», связанные с высокими буквами и подстрочными элементами, но нет ширины через \strut, поэтому:

    F(\mu F) & FA\strut \\
    \mu F & A\strut

Остальная часть документа может остаться точно такой же. Если вы чувствуете себя параноиком, вы можете добавить \struts к другим ячейкам, а также обеспечить будущее на случай, если вы измените их содержимое позже.

В более общем смысле, вы можете использовать \vphantomдля ящиков без ширины с такими же параметрами высоты и глубины, как у другого данного ящика, и \hphantomдля ящиков без высоты с такой же шириной, как у другого данного ящика. Так что по-настоящему параноидальная версия будет

    F(\mu F)\vphantom{FA} & FA\vphantom{F(\mu F)} \\
    \mu F\vphantom{A} & A\vphantom{\mu F}

что гарантировало бы одинаковую высоту и глубину во всех столбцах в каждой строке. (Это также имело бы то преимущество, \strutчто это «минимально» в отношении высоты и глубины; например, если бы в данной строке ничего не имело подстрочных элементов, добавление \strutвезде придало бы ему глубину, а использование \vphantom, как указано выше, — нет.)

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