
我試著對我想要做的事情給出一個非常簡單的類比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
我不太明白你想要的輸出,但我肯定會透過 tikzmatrix
方式,將兩個節點矩陣放在同一個 tikzpicture 中,而不使用remember picture
Nor 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 版本的功能,高度基於 Jake 給出的好答案如何在TikZ中繪製路徑上任意點的切線。它利用 TikZmarkings
庫,因此可以將標記部署為從 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}
結果: