Выделите и используйте стрелки в уравнении надежным способом

Выделите и используйте стрелки в уравнении надежным способом

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

\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows}% For nice arrow tips
% One style for all TikZ pictures for working with overlays:
\tikzset{every picture/.style=remember picture}
% Define a TikZ node for math content:
\newcommand{\mathnode}[1]{%
  \mathord{\tikz[baseline=(#1.base), inner sep = 0pt]{\node (#1) {$#1$};}}}



\begin{document}

$\begin{bmatrix}
     1 \\ \mathnode{2\rho \pi \\ 3}
\end{bmatrix}$
\\
$\begin{bmatrix}
     1 \\ 2\rho \pi \\ \mathnode{3}
\end{bmatrix}$

% Now we draw connections between defined nodes:
\begin{tikzpicture}[overlay]
  \path [>=stealth, <->, shorten <= 3pt, shorten >=3 pt]
    (N1) edge [bend left=60] (N2);
\end{tikzpicture}


\end{document}

Как изменить объявление mathnode, чтобы дать узлу имя и иметь возможность заполнять каждый узел отдельно?

Пожалуйста, есть какие-нибудь предложения?

Спасибо.

решение1

Я не совсем понимаю, какой вывод вы имеете в виду, но я бы определенно пошел по matrixпути tikz, поместив две матрицы узлов в одну и ту же tikzpicture, не используя remember picturenor overlay.

Например:

\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows,matrix,positioning}% For nice arrow tips
\begin{document}

\tikzset{
    !/.style = {
        fill=yellow!30,
    },
    mymatrix/.style = {
        matrix of math nodes,
        left delimiter  = (,
        right delimiter = ),
        nodes={minimum width=6ex},
    }
}

\begin{tikzpicture}
    \matrix[mymatrix, name=M1]{
                1 \\
        |[!]|   2\rho\pi \\
        |[!]|   3\\
    };
    \matrix[mymatrix, name=M2, below=of M1] {
                 1 \\
                 2\rho\pi\\
        |[!]|    3\\
    };
   \draw [red, >=stealth, <->, shorten <= 3pt, shorten >=3 pt]
     (M1-2-1.south east) to[bend left=60] (M2-3-1.east);
\end{tikzpicture}

\end{document}

Производит:

Результат

решение2

Посредствомhf-tikz, никто не обязан эксплуатировать TikZ- matrix. Это пример, показывающий, как выполнить такую ​​задачу:

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath, amssymb}
\usepackage[customcolors,markings]{hf-tikz}
\usetikzlibrary{calc}

\tikzset{aspect/.style={
    set fill color=green!50!lime!60,
    set border color=white,
    disable rounded corners=true
  },
  vert offsets/.style={
    above offset=0.32,
    below offset=-0.08
  },
  expr/.style={
    left offset=-0.05,
    right offset=0.25,
    vert offsets,
    aspect,
  },
  number/.style={
    left offset=-0.1,
    right offset=0.1,
    vert offsets,
    aspect
  }
}

\begin{document}
\[\begin{bmatrix}
     1 \\ \tikzmarkin[expr, mark at=0.135]{a}2\rho \pi \\ 3\tikzmarkend{a}
\end{bmatrix}
\]
% store the point in a coordinate: let it be a bit shifted for clarity
\tikz[remember picture,overlay]\coordinate[use marker id,xshift=0.1cm] (A) at (0,0);

\[\begin{bmatrix}
     1 \\ 2\rho \pi \\ \tikzmarkin[number, mark at=0.135]{b}3\tikzmarkend{b}
\end{bmatrix}
\]
% store the point in a coordinate: let it be a bit shifted for clarity
\tikz[remember picture]\coordinate[use marker id,xshift=0.25cm] (B) at (0,0);

% draw the curve
\tikz[remember picture,overlay]\draw[blue] 
 (A) edge[bend left=60,stealth-stealth](B);
\end{document}

Результат:

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

Эта markingsопция является функцией версии 0.3 пакета, в значительной степени основанной на хорошем ответе Джейка, который он дал вКак нарисовать касательную линию произвольной точки на траектории в TikZ. Он использует библиотеку TikZ markings, поэтому можно развернуть маркеры как число от 0 (начало пути) до 1 (конец пути). Чтобы показать, где размещены маркеры, используйте ключ show markers; например:

\[\begin{bmatrix}
     1 \\ \tikzmarkin[expr, show markers, mark at=0.135]{a}2\rho \pi \\ 3\tikzmarkend{a}
\end{bmatrix}
\]

...

\[\begin{bmatrix}
     1 \\ 2\rho \pi \\ \tikzmarkin[number,show markers, mark at=0.135]{b}3\tikzmarkend{b}
\end{bmatrix}
\]

дает:

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

Более того, пакет позволяет определять стиль аспектов с точки зрения штриховки: их можно принимать отдельно каждый раз, когда выделяется формула. Один из способов их использования следующий:

  • определить некоторые общие аспекты стиля, скажем aspect x;
  • определяет стили, содержащие определение смещения и аргумент: он будет отвечать за выбор правильного стиля аспекта; пример: expr=aspect x.

Вот пример, охватывающий некоторые возможности:

\documentclass[11pt,a4paper]{article}
\usepackage{amsmath, amssymb}
\usepackage[customcolors,shade,markings]{hf-tikz}
\usetikzlibrary{calc}

\tikzset{aspect 1/.style={
    set border color=green!70!black,
    top color=white,
    bottom color=green!50!lime!60,
    disable rounded corners=true
  },
  aspect 2/.style={
    set border color=cyan!50!blue,
    bottom color=white,
    top color=cyan!50!blue!60,
    disable rounded corners=true
  },
  aspect 3/.style={
    set border color=white,
    inner color=white,
    outer color=red!75!black!30,
    disable rounded corners=true
  },  
  vert offsets/.style={
    above offset=0.32,
    below offset=-0.08
  },
  expr/.style={
    left offset=-0.05,
    right offset=0.25,
    vert offsets,
    #1,
  },
  number/.style={
    left offset=-0.1,
    right offset=0.1,
    vert offsets,
    #1
  }
}

\begin{document}
\[
\begin{bmatrix}
     1 \\ \tikzmarkin[expr=aspect 1, mark at=0.135]{a}2\rho \pi \\ 3\tikzmarkend{a}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture,overlay]\coordinate[use marker id,xshift=0.1cm] (A) at (0,0);
\hspace{1cm}
\begin{bmatrix}
     1 \\ \tikzmarkin[expr=aspect 2, mark at=0.135]{a2}2\rho \pi \\ 3\tikzmarkend{a2}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture,overlay]\coordinate[use marker id,xshift=0.1cm] (A2) at (0,0);
\hspace{1cm}
\begin{bmatrix}
     1 \\ \tikzmarkin[expr=aspect 3, mark at=0.135]{a3}2\rho \pi \\ 3\tikzmarkend{a3}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture,overlay]\coordinate[use marker id,xshift=0.1cm] (A3) at (0,0);
\]


\[
\begin{bmatrix}
     1 \\ 2\rho \pi \\ \tikzmarkin[number=aspect 3, mark at=0.135]{b}3\tikzmarkend{b}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture]\coordinate[use marker id,xshift=0.25cm] (B) at (0,0);
\hspace{1cm}
\begin{bmatrix}
     1 \\ 2\rho \pi \\ \tikzmarkin[number=aspect 1, mark at=0.135]{b2}3\tikzmarkend{b2}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture]\coordinate[use marker id,xshift=0.25cm] (B2) at (0,0);
\hspace{1cm}
\begin{bmatrix}
     1 \\ 2\rho \pi \\ \tikzmarkin[number=aspect 2, mark at=0.135]{b3}3\tikzmarkend{b3}
\end{bmatrix}
% store the point in a coordinate: let it be a bit shifted
\tikz[remember picture]\coordinate[use marker id,xshift=0.25cm] (B3) at (0,0);
\]


% draw the curve
\tikz[remember picture,overlay]\draw[cyan!50!blue] 
 (A) edge[bend left=60,stealth-stealth](B);
\tikz[remember picture,overlay]\draw[red!75!black] 
 (A2) edge[bend left=60,stealth-stealth](B2);
\tikz[remember picture,overlay]\draw[green!70!black] 
 (A3) edge[bend left=60,stealth-stealth](B3);
\end{document}

Результат:

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

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