Two down arrows over specific separator lines of an array
I need to make a figure like the attached image, which contains multiple arrays, two down arrows over the specific separator lines of the first array and text above these two arrows. I could make the arrays in align environment but the problem is arrows and text above them. I used the code below to make the arrays as a figure:
begin{figure}[!ht]
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
caption{An example}
end{figure}
floats arrows arrays
add a comment |
I need to make a figure like the attached image, which contains multiple arrays, two down arrows over the specific separator lines of the first array and text above these two arrows. I could make the arrays in align environment but the problem is arrows and text above them. I used the code below to make the arrays as a figure:
begin{figure}[!ht]
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
caption{An example}
end{figure}
floats arrows arrays
add a comment |
I need to make a figure like the attached image, which contains multiple arrays, two down arrows over the specific separator lines of the first array and text above these two arrows. I could make the arrays in align environment but the problem is arrows and text above them. I used the code below to make the arrays as a figure:
begin{figure}[!ht]
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
caption{An example}
end{figure}
floats arrows arrays
I need to make a figure like the attached image, which contains multiple arrays, two down arrows over the specific separator lines of the first array and text above these two arrows. I could make the arrays in align environment but the problem is arrows and text above them. I used the code below to make the arrays as a figure:
begin{figure}[!ht]
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
caption{An example}
end{figure}
floats arrows arrays
floats arrows arrays
edited Nov 23 at 23:03
asked Nov 22 at 13:50
M. Mojrian
335
335
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
After the new tikzmark
library, which contains the fabulous command tikzmarknode
, was uploaded to CTAN and became part of the standard TeX installations, there is no longer a real need to translate existing tables or matrices to TikZ since now you can use tikzmarknode
to do all the things that were harder to accomplish before. That is, you can keep what you have and just add the annotations with TikZ and with minimal effort.
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{tikzmark,calc}
begin{document}
begin{figure}[!ht]
vspace*{0.6cm}
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & tikzmarknode{a3}{alpha_3} & tikzmarknode{a4}{alpha_4} & alpha_5 & alpha_6 & alpha_7 & tikzmarknode{a8}{alpha_8} & tikzmarknode{a9}{alpha_9} \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
begin{tikzpicture}[overlay,remember picture]
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
draw[line width=1mm,latex-,red] ($(a8.north east)!0.5!(a9.north west)+(0,0.2)$) -- ++(0,0.6)node[black,above]{$P_2$};
end{tikzpicture}
caption{An example}
end{figure}
end{document}
To understand what's going on here, look e.g. at
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
Here +(0,0.2)
determines how much the tip (i.e. lower end) of the arrow gets shifted upwards, and ++(0,0.6)
determines the length of the arrow. If you increase 0.2
, the whole arrow will move upwards, and if you increase/decrease 0.6
, the arrow will get longer/shorter.
tikzmark
library is indeed powerful, however transforming ``matrix` toarray
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!
– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZmatrix
. Features that are hard to get with a TikZmatrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZmatrix
in a very elegant way, but at the very moment in which the OP really makes use ofalign*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.
– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
|
show 1 more comment
since you include this two equations as figure, why not draw them? for example, draw them with tikz
and use of the library matrix
:
documentclass{article}
usepackage{tikz}
usetikzlibrary{arrows.meta, matrix, positioning}
begin{document}
begin{figure}[htb]
centering
begin{tikzpicture}[
node distance = 9mm and 1.5mm,
arr/.style = {draw=red, very thick, Trinagle-, shorten <=1mm},
mtrx/.style = {matrix of math nodes,
nodes={minimum width=2em},
left delimiter={[},
right delimiter={]},
inner ysep=1pt, inner xsep=-2pt}
]
matrix (m) [mtrx]
{
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
};
node[left=of m] {$vec{P}=$};
%
matrix (n) [mtrx, right=of n0]
{
alpha_1' & alpha_2' & alpha_3' & alpha_4' & alpha_5' & alpha_6' & alpha_7' & alpha_8' & alpha_9' \
beta_1' & beta_2' & beta_3' & beta_4' & beta_5' & beta_6' & beta_7' & beta_8' & beta_9' \
};
node[left=of n]{$vec{S}_1$};
%
foreach i in {1,...,8}
{
draw (m-1-i.north east) -- (m-2-i.south east);
draw (n-1-i.north east) -- (n-2-i.south east);
}
path[arr]
(m-1-3.north east) -- + (0,0.5) node[above] {$mathbf{P1}$};
path[arr]
(m-1-8.north east) -- + (0,0.5) node[above] {$mathbf{P2}$};
end{tikzpicture}
caption{An example of applied two-point quantum crossover}
label{fig:equation}
end{figure}
end{document}
add a comment |
You can place the P_1
and P_2
markers using eso-pic
's absolute positioning mechanism - placing it in the F
oreG
round of the current page (via AddToShipoutPictureFG*
). zref
's savepos
module allows you to capture the x,y coordinates of a <label>
(set using zsavepos{<label>}
) which can be retrieved using zposx
/zposy
(both expandable).
documentclass{article}
usepackage{amsmath,zref-savepos,eso-pic}
begin{document}
begin{align*}
& \ % Just to leave an empty line
overrightarrow{P}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3zsavepos{P1L} & zsavepos{P1R}alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8zsavepos{P2L} & zsavepos{P2R}alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
AddToShipoutPictureFG*{%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P1L}sp+zposx{P1R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_1 \ downarrow}$}}%
}%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P2L}sp+zposx{P2R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_2 \ downarrow}$}}%
}%
}
end{document}
Above I place two markers around the array
column divider for each of P_1
and P_2
(denoted with a L
eft and R
ight suffix) and position the labels to be at the horizontal centre of these markers.
An empty line within the align*
is left at the top in order to avoid unnecessary interaction with content appearing above the environment.
Since the markers use TeX's label
-ref
-like system, any change in the location of the markers requires an additional compilation so reference can settle.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f461281%2ftwo-down-arrows-over-specific-separator-lines-of-an-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
After the new tikzmark
library, which contains the fabulous command tikzmarknode
, was uploaded to CTAN and became part of the standard TeX installations, there is no longer a real need to translate existing tables or matrices to TikZ since now you can use tikzmarknode
to do all the things that were harder to accomplish before. That is, you can keep what you have and just add the annotations with TikZ and with minimal effort.
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{tikzmark,calc}
begin{document}
begin{figure}[!ht]
vspace*{0.6cm}
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & tikzmarknode{a3}{alpha_3} & tikzmarknode{a4}{alpha_4} & alpha_5 & alpha_6 & alpha_7 & tikzmarknode{a8}{alpha_8} & tikzmarknode{a9}{alpha_9} \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
begin{tikzpicture}[overlay,remember picture]
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
draw[line width=1mm,latex-,red] ($(a8.north east)!0.5!(a9.north west)+(0,0.2)$) -- ++(0,0.6)node[black,above]{$P_2$};
end{tikzpicture}
caption{An example}
end{figure}
end{document}
To understand what's going on here, look e.g. at
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
Here +(0,0.2)
determines how much the tip (i.e. lower end) of the arrow gets shifted upwards, and ++(0,0.6)
determines the length of the arrow. If you increase 0.2
, the whole arrow will move upwards, and if you increase/decrease 0.6
, the arrow will get longer/shorter.
tikzmark
library is indeed powerful, however transforming ``matrix` toarray
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!
– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZmatrix
. Features that are hard to get with a TikZmatrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZmatrix
in a very elegant way, but at the very moment in which the OP really makes use ofalign*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.
– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
|
show 1 more comment
After the new tikzmark
library, which contains the fabulous command tikzmarknode
, was uploaded to CTAN and became part of the standard TeX installations, there is no longer a real need to translate existing tables or matrices to TikZ since now you can use tikzmarknode
to do all the things that were harder to accomplish before. That is, you can keep what you have and just add the annotations with TikZ and with minimal effort.
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{tikzmark,calc}
begin{document}
begin{figure}[!ht]
vspace*{0.6cm}
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & tikzmarknode{a3}{alpha_3} & tikzmarknode{a4}{alpha_4} & alpha_5 & alpha_6 & alpha_7 & tikzmarknode{a8}{alpha_8} & tikzmarknode{a9}{alpha_9} \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
begin{tikzpicture}[overlay,remember picture]
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
draw[line width=1mm,latex-,red] ($(a8.north east)!0.5!(a9.north west)+(0,0.2)$) -- ++(0,0.6)node[black,above]{$P_2$};
end{tikzpicture}
caption{An example}
end{figure}
end{document}
To understand what's going on here, look e.g. at
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
Here +(0,0.2)
determines how much the tip (i.e. lower end) of the arrow gets shifted upwards, and ++(0,0.6)
determines the length of the arrow. If you increase 0.2
, the whole arrow will move upwards, and if you increase/decrease 0.6
, the arrow will get longer/shorter.
tikzmark
library is indeed powerful, however transforming ``matrix` toarray
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!
– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZmatrix
. Features that are hard to get with a TikZmatrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZmatrix
in a very elegant way, but at the very moment in which the OP really makes use ofalign*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.
– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
|
show 1 more comment
After the new tikzmark
library, which contains the fabulous command tikzmarknode
, was uploaded to CTAN and became part of the standard TeX installations, there is no longer a real need to translate existing tables or matrices to TikZ since now you can use tikzmarknode
to do all the things that were harder to accomplish before. That is, you can keep what you have and just add the annotations with TikZ and with minimal effort.
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{tikzmark,calc}
begin{document}
begin{figure}[!ht]
vspace*{0.6cm}
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & tikzmarknode{a3}{alpha_3} & tikzmarknode{a4}{alpha_4} & alpha_5 & alpha_6 & alpha_7 & tikzmarknode{a8}{alpha_8} & tikzmarknode{a9}{alpha_9} \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
begin{tikzpicture}[overlay,remember picture]
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
draw[line width=1mm,latex-,red] ($(a8.north east)!0.5!(a9.north west)+(0,0.2)$) -- ++(0,0.6)node[black,above]{$P_2$};
end{tikzpicture}
caption{An example}
end{figure}
end{document}
To understand what's going on here, look e.g. at
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
Here +(0,0.2)
determines how much the tip (i.e. lower end) of the arrow gets shifted upwards, and ++(0,0.6)
determines the length of the arrow. If you increase 0.2
, the whole arrow will move upwards, and if you increase/decrease 0.6
, the arrow will get longer/shorter.
After the new tikzmark
library, which contains the fabulous command tikzmarknode
, was uploaded to CTAN and became part of the standard TeX installations, there is no longer a real need to translate existing tables or matrices to TikZ since now you can use tikzmarknode
to do all the things that were harder to accomplish before. That is, you can keep what you have and just add the annotations with TikZ and with minimal effort.
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{tikzmark,calc}
begin{document}
begin{figure}[!ht]
vspace*{0.6cm}
begin{align*}
overrightarrow{P}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & tikzmarknode{a3}{alpha_3} & tikzmarknode{a4}{alpha_4} & alpha_5 & alpha_6 & alpha_7 & tikzmarknode{a8}{alpha_8} & tikzmarknode{a9}{alpha_9} \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_{1}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_{2}
&left[
begin{array}{c|c|c|c|c|c|c|c|c}
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
begin{tikzpicture}[overlay,remember picture]
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
draw[line width=1mm,latex-,red] ($(a8.north east)!0.5!(a9.north west)+(0,0.2)$) -- ++(0,0.6)node[black,above]{$P_2$};
end{tikzpicture}
caption{An example}
end{figure}
end{document}
To understand what's going on here, look e.g. at
draw[line width=1mm,latex-,red] ($(a3.north east)!0.5!(a4.north west)+(0,0.2)$) -- ++(0,0.6) node[black,above]{$P_1$};
Here +(0,0.2)
determines how much the tip (i.e. lower end) of the arrow gets shifted upwards, and ++(0,0.6)
determines the length of the arrow. If you increase 0.2
, the whole arrow will move upwards, and if you increase/decrease 0.6
, the arrow will get longer/shorter.
edited Nov 23 at 17:57
answered Nov 22 at 16:56
marmot
86.6k499185
86.6k499185
tikzmark
library is indeed powerful, however transforming ``matrix` toarray
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!
– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZmatrix
. Features that are hard to get with a TikZmatrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZmatrix
in a very elegant way, but at the very moment in which the OP really makes use ofalign*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.
– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
|
show 1 more comment
tikzmark
library is indeed powerful, however transforming ``matrix` toarray
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!
– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZmatrix
. Features that are hard to get with a TikZmatrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZmatrix
in a very elegant way, but at the very moment in which the OP really makes use ofalign*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.
– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
tikzmark
library is indeed powerful, however transforming ``matrix` to array
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!– Zarko
Nov 22 at 18:26
tikzmark
library is indeed powerful, however transforming ``matrix` to array
is not so big deal (except that drawing vertical lines require separate command) ;-). +1 for nice answer!– Zarko
Nov 22 at 18:26
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZ
matrix
. Features that are hard to get with a TikZ matrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZ matrix
in a very elegant way, but at the very moment in which the OP really makes use of align*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.– marmot
Nov 22 at 18:35
@Zarko Well, you are very powerful with tables, so you know better than me that you can do things with tables which are very hard to reproduce with a TikZ
matrix
. Features that are hard to get with a TikZ matrix
include aligning the decimal points and so on. In the present situation I agree that you can use a TikZ matrix
in a very elegant way, but at the very moment in which the OP really makes use of align*
it will be harder. So I guess everything will depend on what the OP ultimately wants to do, which we do not know.– marmot
Nov 22 at 18:35
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
i agree with you. the tools which you use are depend on task.
– Zarko
Nov 22 at 19:13
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@marmot Thanks for your nice and simple solution. But, is there any way to put a small vertical space between the arrows and the corresponding separator lines?
– M. Mojrian
Nov 23 at 17:46
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
@M.Mojrian Sure. I moved them up a bit and added more explanation such that you can adjust them further, if needed.
– marmot
Nov 23 at 17:53
|
show 1 more comment
since you include this two equations as figure, why not draw them? for example, draw them with tikz
and use of the library matrix
:
documentclass{article}
usepackage{tikz}
usetikzlibrary{arrows.meta, matrix, positioning}
begin{document}
begin{figure}[htb]
centering
begin{tikzpicture}[
node distance = 9mm and 1.5mm,
arr/.style = {draw=red, very thick, Trinagle-, shorten <=1mm},
mtrx/.style = {matrix of math nodes,
nodes={minimum width=2em},
left delimiter={[},
right delimiter={]},
inner ysep=1pt, inner xsep=-2pt}
]
matrix (m) [mtrx]
{
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
};
node[left=of m] {$vec{P}=$};
%
matrix (n) [mtrx, right=of n0]
{
alpha_1' & alpha_2' & alpha_3' & alpha_4' & alpha_5' & alpha_6' & alpha_7' & alpha_8' & alpha_9' \
beta_1' & beta_2' & beta_3' & beta_4' & beta_5' & beta_6' & beta_7' & beta_8' & beta_9' \
};
node[left=of n]{$vec{S}_1$};
%
foreach i in {1,...,8}
{
draw (m-1-i.north east) -- (m-2-i.south east);
draw (n-1-i.north east) -- (n-2-i.south east);
}
path[arr]
(m-1-3.north east) -- + (0,0.5) node[above] {$mathbf{P1}$};
path[arr]
(m-1-8.north east) -- + (0,0.5) node[above] {$mathbf{P2}$};
end{tikzpicture}
caption{An example of applied two-point quantum crossover}
label{fig:equation}
end{figure}
end{document}
add a comment |
since you include this two equations as figure, why not draw them? for example, draw them with tikz
and use of the library matrix
:
documentclass{article}
usepackage{tikz}
usetikzlibrary{arrows.meta, matrix, positioning}
begin{document}
begin{figure}[htb]
centering
begin{tikzpicture}[
node distance = 9mm and 1.5mm,
arr/.style = {draw=red, very thick, Trinagle-, shorten <=1mm},
mtrx/.style = {matrix of math nodes,
nodes={minimum width=2em},
left delimiter={[},
right delimiter={]},
inner ysep=1pt, inner xsep=-2pt}
]
matrix (m) [mtrx]
{
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
};
node[left=of m] {$vec{P}=$};
%
matrix (n) [mtrx, right=of n0]
{
alpha_1' & alpha_2' & alpha_3' & alpha_4' & alpha_5' & alpha_6' & alpha_7' & alpha_8' & alpha_9' \
beta_1' & beta_2' & beta_3' & beta_4' & beta_5' & beta_6' & beta_7' & beta_8' & beta_9' \
};
node[left=of n]{$vec{S}_1$};
%
foreach i in {1,...,8}
{
draw (m-1-i.north east) -- (m-2-i.south east);
draw (n-1-i.north east) -- (n-2-i.south east);
}
path[arr]
(m-1-3.north east) -- + (0,0.5) node[above] {$mathbf{P1}$};
path[arr]
(m-1-8.north east) -- + (0,0.5) node[above] {$mathbf{P2}$};
end{tikzpicture}
caption{An example of applied two-point quantum crossover}
label{fig:equation}
end{figure}
end{document}
add a comment |
since you include this two equations as figure, why not draw them? for example, draw them with tikz
and use of the library matrix
:
documentclass{article}
usepackage{tikz}
usetikzlibrary{arrows.meta, matrix, positioning}
begin{document}
begin{figure}[htb]
centering
begin{tikzpicture}[
node distance = 9mm and 1.5mm,
arr/.style = {draw=red, very thick, Trinagle-, shorten <=1mm},
mtrx/.style = {matrix of math nodes,
nodes={minimum width=2em},
left delimiter={[},
right delimiter={]},
inner ysep=1pt, inner xsep=-2pt}
]
matrix (m) [mtrx]
{
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
};
node[left=of m] {$vec{P}=$};
%
matrix (n) [mtrx, right=of n0]
{
alpha_1' & alpha_2' & alpha_3' & alpha_4' & alpha_5' & alpha_6' & alpha_7' & alpha_8' & alpha_9' \
beta_1' & beta_2' & beta_3' & beta_4' & beta_5' & beta_6' & beta_7' & beta_8' & beta_9' \
};
node[left=of n]{$vec{S}_1$};
%
foreach i in {1,...,8}
{
draw (m-1-i.north east) -- (m-2-i.south east);
draw (n-1-i.north east) -- (n-2-i.south east);
}
path[arr]
(m-1-3.north east) -- + (0,0.5) node[above] {$mathbf{P1}$};
path[arr]
(m-1-8.north east) -- + (0,0.5) node[above] {$mathbf{P2}$};
end{tikzpicture}
caption{An example of applied two-point quantum crossover}
label{fig:equation}
end{figure}
end{document}
since you include this two equations as figure, why not draw them? for example, draw them with tikz
and use of the library matrix
:
documentclass{article}
usepackage{tikz}
usetikzlibrary{arrows.meta, matrix, positioning}
begin{document}
begin{figure}[htb]
centering
begin{tikzpicture}[
node distance = 9mm and 1.5mm,
arr/.style = {draw=red, very thick, Trinagle-, shorten <=1mm},
mtrx/.style = {matrix of math nodes,
nodes={minimum width=2em},
left delimiter={[},
right delimiter={]},
inner ysep=1pt, inner xsep=-2pt}
]
matrix (m) [mtrx]
{
alpha_1 & alpha_2 & alpha_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
};
node[left=of m] {$vec{P}=$};
%
matrix (n) [mtrx, right=of n0]
{
alpha_1' & alpha_2' & alpha_3' & alpha_4' & alpha_5' & alpha_6' & alpha_7' & alpha_8' & alpha_9' \
beta_1' & beta_2' & beta_3' & beta_4' & beta_5' & beta_6' & beta_7' & beta_8' & beta_9' \
};
node[left=of n]{$vec{S}_1$};
%
foreach i in {1,...,8}
{
draw (m-1-i.north east) -- (m-2-i.south east);
draw (n-1-i.north east) -- (n-2-i.south east);
}
path[arr]
(m-1-3.north east) -- + (0,0.5) node[above] {$mathbf{P1}$};
path[arr]
(m-1-8.north east) -- + (0,0.5) node[above] {$mathbf{P2}$};
end{tikzpicture}
caption{An example of applied two-point quantum crossover}
label{fig:equation}
end{figure}
end{document}
edited Nov 22 at 18:16
answered Nov 22 at 14:41
Zarko
120k865156
120k865156
add a comment |
add a comment |
You can place the P_1
and P_2
markers using eso-pic
's absolute positioning mechanism - placing it in the F
oreG
round of the current page (via AddToShipoutPictureFG*
). zref
's savepos
module allows you to capture the x,y coordinates of a <label>
(set using zsavepos{<label>}
) which can be retrieved using zposx
/zposy
(both expandable).
documentclass{article}
usepackage{amsmath,zref-savepos,eso-pic}
begin{document}
begin{align*}
& \ % Just to leave an empty line
overrightarrow{P}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3zsavepos{P1L} & zsavepos{P1R}alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8zsavepos{P2L} & zsavepos{P2R}alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
AddToShipoutPictureFG*{%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P1L}sp+zposx{P1R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_1 \ downarrow}$}}%
}%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P2L}sp+zposx{P2R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_2 \ downarrow}$}}%
}%
}
end{document}
Above I place two markers around the array
column divider for each of P_1
and P_2
(denoted with a L
eft and R
ight suffix) and position the labels to be at the horizontal centre of these markers.
An empty line within the align*
is left at the top in order to avoid unnecessary interaction with content appearing above the environment.
Since the markers use TeX's label
-ref
-like system, any change in the location of the markers requires an additional compilation so reference can settle.
add a comment |
You can place the P_1
and P_2
markers using eso-pic
's absolute positioning mechanism - placing it in the F
oreG
round of the current page (via AddToShipoutPictureFG*
). zref
's savepos
module allows you to capture the x,y coordinates of a <label>
(set using zsavepos{<label>}
) which can be retrieved using zposx
/zposy
(both expandable).
documentclass{article}
usepackage{amsmath,zref-savepos,eso-pic}
begin{document}
begin{align*}
& \ % Just to leave an empty line
overrightarrow{P}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3zsavepos{P1L} & zsavepos{P1R}alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8zsavepos{P2L} & zsavepos{P2R}alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
AddToShipoutPictureFG*{%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P1L}sp+zposx{P1R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_1 \ downarrow}$}}%
}%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P2L}sp+zposx{P2R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_2 \ downarrow}$}}%
}%
}
end{document}
Above I place two markers around the array
column divider for each of P_1
and P_2
(denoted with a L
eft and R
ight suffix) and position the labels to be at the horizontal centre of these markers.
An empty line within the align*
is left at the top in order to avoid unnecessary interaction with content appearing above the environment.
Since the markers use TeX's label
-ref
-like system, any change in the location of the markers requires an additional compilation so reference can settle.
add a comment |
You can place the P_1
and P_2
markers using eso-pic
's absolute positioning mechanism - placing it in the F
oreG
round of the current page (via AddToShipoutPictureFG*
). zref
's savepos
module allows you to capture the x,y coordinates of a <label>
(set using zsavepos{<label>}
) which can be retrieved using zposx
/zposy
(both expandable).
documentclass{article}
usepackage{amsmath,zref-savepos,eso-pic}
begin{document}
begin{align*}
& \ % Just to leave an empty line
overrightarrow{P}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3zsavepos{P1L} & zsavepos{P1R}alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8zsavepos{P2L} & zsavepos{P2R}alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
AddToShipoutPictureFG*{%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P1L}sp+zposx{P1R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_1 \ downarrow}$}}%
}%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P2L}sp+zposx{P2R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_2 \ downarrow}$}}%
}%
}
end{document}
Above I place two markers around the array
column divider for each of P_1
and P_2
(denoted with a L
eft and R
ight suffix) and position the labels to be at the horizontal centre of these markers.
An empty line within the align*
is left at the top in order to avoid unnecessary interaction with content appearing above the environment.
Since the markers use TeX's label
-ref
-like system, any change in the location of the markers requires an additional compilation so reference can settle.
You can place the P_1
and P_2
markers using eso-pic
's absolute positioning mechanism - placing it in the F
oreG
round of the current page (via AddToShipoutPictureFG*
). zref
's savepos
module allows you to capture the x,y coordinates of a <label>
(set using zsavepos{<label>}
) which can be retrieved using zposx
/zposy
(both expandable).
documentclass{article}
usepackage{amsmath,zref-savepos,eso-pic}
begin{document}
begin{align*}
& \ % Just to leave an empty line
overrightarrow{P}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3zsavepos{P1L} & zsavepos{P1R}alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8zsavepos{P2L} & zsavepos{P2R}alpha_9 \
beta_1 & beta_2 & beta_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta_9 \
end{array}
right] \
overrightarrow{P}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta^prime_9 \
end{array}
right] \
\
overrightarrow{S}_1
& left[
begin{array}{ *{8}{c|} c }
alpha_1 & alpha_2 & alpha_3 & alpha^prime_4 & alpha^prime_5 & alpha^prime_6 & alpha^prime_7 & alpha^prime_8 & alpha_9 \
beta_1 & beta_2 & beta_3 & beta^prime_4 & beta^prime_5 & beta^prime_6 & beta^prime_7 & beta^prime_8 & beta_9 \
end{array}
right] \
overrightarrow{S}_2
& left[
begin{array}{ *{8}{c|} c }
alpha^prime_1 & alpha^prime_2 & alpha^prime_3 & alpha_4 & alpha_5 & alpha_6 & alpha_7 & alpha_8 & alpha^prime_9 \
beta^prime_1 & beta^prime_2 & beta^prime_3 & beta_4 & beta_5 & beta_6 & beta_7 & beta_8 & beta^prime_9 \
end{array}
right]
end{align*}
AddToShipoutPictureFG*{%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P1L}sp+zposx{P1R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_1 \ downarrow}$}}%
}%
AtPageLowerLeft{%
hspace{0.5dimexprzposx{P2L}sp+zposx{P2R}sprelax}%
raisebox{dimexprzposy{P1L}sp+1.5baselineskip}{makebox[0pt]{$substack{P_2 \ downarrow}$}}%
}%
}
end{document}
Above I place two markers around the array
column divider for each of P_1
and P_2
(denoted with a L
eft and R
ight suffix) and position the labels to be at the horizontal centre of these markers.
An empty line within the align*
is left at the top in order to avoid unnecessary interaction with content appearing above the environment.
Since the markers use TeX's label
-ref
-like system, any change in the location of the markers requires an additional compilation so reference can settle.
answered Nov 22 at 18:57
Werner
437k649581647
437k649581647
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f461281%2ftwo-down-arrows-over-specific-separator-lines-of-an-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown