Tikz для коммутативных диаграмм

Tikz для коммутативных диаграмм

Мне нужно использовать tikzпакет из-за качества коммутативных диаграмм, которые он производит, как я видел в некоторых руководствах. Я пробовал его несколько раз, но все безрезультатно. Я использую MiKTeX с редактором TeXmaker на Windows. MiKTeX был установлен в сентябре прошлого года (2012). Мне бы хотелось узнать

  1. если мне нужно установить какой-то определенный пакет или последнюю версию MiKTeX
  2. что именно и что мне нужно указать или включить в мою преамбулу, имея в виду, что документ, который я пишу, представляет собой диссертацию в алгебраической категории.

\documentclass[12pt]{book}
\usepackage{amsmath,amssymb,amsthm,latexsym}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows}

\begin{document}

\begin{tikzcd}[column sep = 1.3cm]
  K 
   \arrow{r}{\kappa}  
  & L
    \arrow[transform canvas = {yshift = 0.7ex}]{r}{\alpha}        
    \arrow[transform canvas = {yshift = -0.7ex},leftarrow]
    {r}{\beta}
  & M
 \end{tikzcd}
\end{document}

решение1

Я бы рекомендовалtikz-cdпакет для ваших коммутативных диаграмм; документация пакета содержит примеры, например, следующий пример:

\documentclass{article} 
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[row sep=scriptsize, column sep=scriptsize]
& f^* E_V \arrow{dl}\arrow{rr}\arrow{dd} & & E_V \arrow{dl}\arrow{dd} \\
f^* E \arrow[crossing over]{rr}\arrow{dd} & & E \\
& U \arrow{dl}\arrow{rr} & & V \arrow{dl} \\
M \arrow{rr} & & N\arrow[crossing over, leftarrow]{uu}\\
\end{tikzcd}

\end{document}

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

Что касается вашей системы LaTeX, лучше всего поддерживать установку в актуальном состоянии. Установите последнюю версию MiKTeX и выполните полную установку, а не только базовую установку MiKTeX.

Что касается упомянутой проблемы, в комментарии можно использовать swapдля изменения положения метки стрелки:

\documentclass[12pt]{book}
\usepackage{amsmath,amssymb,amsthm,latexsym}
\usepackage{tikz-cd}
\usetikzlibrary{matrix,arrows}

\begin{document}

\begin{tikzcd}[column sep = 1.3cm]
  K 
   \arrow{r}{\kappa}  
  & L
    \arrow[transform canvas={yshift = 0.7ex}]{r}{\alpha}        
    \arrow[transform canvas={yshift = -0.3ex},leftarrow,swap]
    {r}{\beta}
  & M
 \end{tikzcd}

\end{document}

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

решение2

С помощью PSTricks.

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

\documentclass[preview,border=12pt]{standalone}
\usepackage{pst-node}
\psset{rowsep=1,colsep}
\begin{document}
\offinterlineskip
$
\psmatrix
&
    f^*E_v&
        &
            E_v\\
f^*E&
    &
        E&
            \\
&
    U&
        &
            V\\
M&
    &
        N&
\endpsmatrix
\everypsbox{\scriptstyle}
\psset{arrows=->,nodesep=3pt,border=3pt}
\ncline{1,2}{1,4}
\ncline{1,2}{2,1}
\ncline{1,4}{2,3}
\ncline{2,1}{4,1}
\ncline{1,2}{3,2}
\ncline{1,4}{3,4}
\ncline{2,1}{2,3}
\ncline{3,2}{4,1}
\ncline{3,2}{3,4}
\ncline{3,4}{4,3}
\ncline{4,1}{4,3}
\ncline{2,3}{4,3}
$
\end{document}

Для двойных линий и этикеток:

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

\documentclass[preview,border=12pt]{standalone}
\usepackage{pst-node}
\psset{rowsep=1,colsep}
\begin{document}
\offinterlineskip
$
\psmatrix
&
    f^*E_v&
        &
            E_v\\
f^*E&
    &
        E&
            \\
&
    U&
        &
            V\\
M&
    &
        N&
\endpsmatrix
\everypsbox{\scriptstyle}
\psset{arrows=->,nodesep=3pt,border=2pt,shortput=tablr,labelsep=2pt}
\ncline[offset=2pt]{1,2}{1,4}^{a}
\ncline[offset=-2pt,arrows=<-]{1,2}{1,4}_{b}
\ncline{1,2}{2,1}
\ncline{1,4}{2,3}
\ncline{2,1}{4,1}
\ncline{1,2}{3,2}
\ncline{1,4}{3,4}
\ncline{2,1}{2,3}
\ncline{3,2}{4,1}
\ncline{3,2}{3,4}
\ncline{3,4}{4,3}
\ncline{4,1}{4,3}
\ncline{2,3}{4,3}
$
\end{document}

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