Creating a lot of checkbox'es to make visible/invisible arrows using `tikzpicture` environmentChecking...

Tiptoe or tiphoof? Adjusting words to better fit fantasy races

Class Action - which options I have?

Two monoidal structures and copowering

Escape a backup date in a file name

How to safely derail a train during transit?

Trouble understanding the speech of overseas colleagues

What does the word "Atten" mean?

Did Dumbledore lie to Harry about how long he had James Potter's invisibility cloak when he was examining it? If so, why?

Failed to fetch jessie backports repository

What is the best translation for "slot" in the context of multiplayer video games?

Sequence of Tenses: Translating the subjunctive

Pole-zeros of a real-valued causal FIR system

How do we know the LHC results are robust?

What does "I’d sit this one out, Cap," imply or mean in the context?

How do I extract a value from a time formatted value in excel?

Integer addition + constant, is it a group?

Where does the Z80 processor start executing from?

How does the UK government determine the size of a mandate?

How do I go from 300 unfinished/half written blog posts, to published posts?

How long to clear the 'suck zone' of a turbofan after start is initiated?

Do the temporary hit points from Reckless Abandon stack if I make multiple attacks on my turn?

Fine Tuning of the Universe

Why Were Madagascar and New Zealand Discovered So Late?

Sort a list by elements of another list



Creating a lot of checkbox'es to make visible/invisible arrows using `tikzpicture` environment


Checking whether or not a node has been previously definedHow to draw a diagram of custom subject correlativitiesDesign an algorithm capable of predicting collisions to choose alternative path using `tikzpicture` environmentHow to connect `pic`s through a set of colorful arrows using `tikzpicture` environment













0















I have this MWE, taken from marmot's nice answer:



documentclass{article}
usepackage[margin=0in,footskip=0in,paperwidth=60cm,paperheight=29cm]{geometry}
usepackage[english]{babel}
usepackage[utf8]{inputenc}
usepackage[T1]{fontenc}
usepackage{hyperref}

usepackage{tikz}
usetikzlibrary{positioning,fit,calc}
pgfdeclarelayer{behind}
pgfdeclarelayer{background}
pgfdeclarelayer{foreground}
pgfsetlayers{behind,background,main,foreground}
tikzset{
text field/.style={text height=1.5ex,align=center,rounded corners},
nonfillable title field/.style={text height=2ex,text depth=0.3em,anchor=south,text
width=5cm,align=center,font=footnotesizesffamily},
fillable title field/.style={text height=3.14ex,text depth=0em,anchor=south,text
width=5cm,align=center,font=footnotesizesffamily},
pics/fillable subject/.style={code={%
node[text field] (-TF)
{hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
node[nonfillable title field] (-Title)
at ([yshift=0.4em]-TF.north) {#1};
draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
-- cycle;
draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
}},
pics/nonfillable subject/.style={code={%
node[text field] (-TF)
{hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
node[nonfillable title field] (-Title)
at ([yshift=0.4em]-TF.north) {#1};
draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
-- cycle;
draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
}},
pics/fillable elective subject/.style={code={%
node[text field] (-TF)
{hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
node[fillable title field] (-Title)
at ([yshift=0.4em]-TF.north) {hspace*{-0.34em}TextField[align=1,name=#1-electivesubject,width=4.5cm,charsize=8pt,height=.5cm,bordercolor={1 1 1}]{}};
draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
-- cycle;
draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
}},
pics/nonfillable elective subject/.style={code={%
node[text field] (-TF)
{hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
node[nonfillable title field] (-Title)
at ([yshift=0.4em]-TF.north) {};
draw[rounded corners] (-TF.south west) |- (-Title.south west)
|- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
-- cycle;
draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
}},
manoooh/.style={column sep=-1.75cm,row sep=5mm},
manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
electives/.style={column sep=-7.25cm,row sep=5mm},
fit sep/.initial=4pt, % change width of node (big rectangle shape)
fit dist/.initial=40pt, % change node distance (big rectangle shape)
inlay top sep/.initial=24pt,
matrix top sep/.initial=24pt,
manoooh curve/.style={to path={let p1=($(tikztotarget)-(tikztostart)$)
in (tikztostart) .. controls ($(tikztostart)+(#1*x1,0)$)
and ($(tikztotarget)+(-#1*x1,0)$) .. (tikztotarget)}},
manoooh curve/.default=0.3,
along node/.style={insert path={
to[out=0,in=180]
([yshift=5pt]#1-Title.north west) -- ([yshift=5pt]#1-Title.north east)}}
} % From https://tex.stackexchange.com/a/478723/152550

makeatletter% from https://tex.stackexchange.com/a/85531/121799
longdefifnodedefined#1#2#3{%
@ifundefined{pgf@sh@ns@#1}{#3}{#2}%
}
makeatother

begin{document}
thispagestyle{empty} % To suppress page number
noindent
begin{tikzpicture}
fill[white,fill=orange] (0,0) rectangle (paperwidth,-2cm) node[midway,align=center,font=Huge] {bfseries Some text here\LARGE More text here};
end{tikzpicture}

ifdefinedmymatbottom
else
typeout{Pleasespace recompilespace yourspace file!}
defmymatbottom{-150pt}
fi
ifdefinedmyheight
else
defmyheight{0}
typeout{Pleasespace recompilespace yourspace file!}
fi
ifdefinedLstMatYShifts
else
defLstMatYShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
fi
ifdefinedLstMatXShifts
else
defLstMatXShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
fi

%typeout{height:myheight}
%typeout{xshifts(in):LstMatXShifts}

vfill
centering
begin{Form}
begin{tikzpicture}
% step 1: add the matrices, name them mat0, mat1 etc.
begin{scope}[local bounding box=matrices]
matrix[manoooh] (mat0) at ({LstMatXShifts[0]},{LstMatYShifts[0]}) {
pic[local bounding box=A] (0) {nonfillable subject={Subject A}}; \
pic (1) {nonfillable subject={Subject B}}; \
};
matrix[manoooh] (mat1) at ({LstMatXShifts[1]},{LstMatYShifts[1]}) {

pic (2) {nonfillable subject={Subject C}}; \
pic (3) {nonfillable subject={Subject D}}; \
pic (4) {nonfillable subject={Subject E}}; \
pic (5) {nonfillable subject={Subject F}}; \
pic (6) {nonfillable subject={Subject G}}; \
pic (7) {nonfillable subject={Subject H}}; \
pic (8) {nonfillable subject={Subject I}}; \
pic[draw=red] (9) {nonfillable subject={Subject J}}; \
};
matrix[manoooh] (mat2) at ({LstMatXShifts[2]},{LstMatYShifts[2]}) {
pic[draw=red] (10) {nonfillable subject={Subject K}}; \
pic (11) {nonfillable subject={Subject L}}; \
pic (12) {nonfillable subject={Subject A}}; \
pic (13) {nonfillable subject={Subject N}}; \
pic (14) {nonfillable subject={Subject O}}; \
pic (15) {nonfillable subject={Subject P}}; \
pic (16) {nonfillable subject={Subject Q}}; \
pic (17) {nonfillable subject={Subject R}}; \
};
matrix[manoooh] (mat3) at ({LstMatXShifts[3]},{LstMatYShifts[3]}) {
pic[draw=red] (18) {nonfillable subject={Subject S}}; \
pic (19) {nonfillable subject={Subject T}}; \
pic (20) {nonfillable subject={Subject U}}; \
pic (21) {nonfillable subject={Subject V}}; \
pic (22) {nonfillable subject={Subject W}}; \
pic (23) {nonfillable subject={Subject X}}; \
pic (24) {nonfillable subject={Subject Y}}; \
pic (25) {nonfillable subject={Subject Z}}; \
};
matrix[manooohE] (matE3) at ({LstMatXShifts[3]},mymatbottom) {
pic (L3E1) {nonfillable elective subject={Subject}}; & &
pic (L3E2) {nonfillable elective subject={Subject}}; \
& pic (L3E3) {nonfillable elective subject={Subject}}; & \
};
matrix[manoooh] (mat4) at ({LstMatXShifts[4]},{LstMatYShifts[4]}) {
& pic[draw=red] (26) {nonfillable subject={Subject AA}}; & \
pic (27) {nonfillable subject={Subject AB}}; & & pic (28) {nonfillable subject={Subject AC}}; \
& pic (29) {nonfillable subject={Subject AD}}; & \
& pic (30) {nonfillable subject={Subject AE}}; & \
& pic (31) {nonfillable subject={Subject AF}}; & \
& pic (32) {nonfillable subject={Subject AG}}; & \
};
matrix[manooohE] (matE4) at ({LstMatXShifts[4]},mymatbottom) {
pic (L4E1) {nonfillable elective subject={Subject}}; \
};
matrix[manoooh] (mat5) at ({LstMatXShifts[5]},{LstMatYShifts[5]}) {
pic (33) {nonfillable subject={Subject AH}}; \
pic (34) {nonfillable subject={Subject AI}}; \
pic[draw=red] (35) {nonfillable subject={Subject AJ}}; \
pic (36) {nonfillable subject={Subject AK}}; \
};
matrix[manooohE] (matE5) at ({LstMatXShifts[5]},mymatbottom) {
pic (L5E1) {nonfillable elective subject={Subject}}; \
pic (L5E2) {nonfillable elective subject={Subject}}; \
pic (L5E3) {nonfillable elective subject={Subject}}; \
pic (L5E4) {nonfillable elective subject={Subject}}; \
pic (L5E5) {nonfillable elective subject={Subject}}; \
};
end{scope}
pgfmathsetmacro{groupwidth}{0}
pgfmathsetmacro{lastwidth}{0}
foreach X in {0,...,5} %<- if you have more or less matrices, adjust 3
{
node[anchor=south,yshift=1cm,align=center,font=LARGEbfseriesboldmath]
at (matX |-matrices.north) (LX) {Level $X$};
ifnodedefined{matEX}{% has inlay
node[xshift=1em,anchor=south west,font=LARGEbfseries,opacity=0] (matElX) at (matEX.north west) {Electives};
begin{pgfonlayer}{background}
path let p1=($(matX.north east)-(matX.south west)$) in
node[fit=(matEX) (matElX),inner ysep=5mm,fill=blue!30,rounded
corners=40pt,minimum width=x1-2*pgfkeysvalueof{/tikz/fit sep},
inner xsep=pgfkeysvalueof{/tikz/fit sep}](FX){};
node[xshift=1em,anchor=south west,font=LARGEbfseries]
(matElX) at ([xshift=1.3em]FX.west|-matElX.center) {Electives};
end{pgfonlayer}
path let p1=($(matX.north east)-(matX.south west)$),
p2=($(FX.north east)-(FX.south west)$),
n1={max(abs(y1)/2+abs(y2)/2+0*pgfkeysvalueof{/tikz/inlay top sep},mymatbottom)}
in
pgfextra{xdefmymatbottom{n1}
ifnumX=0
pgfmathsetmacro{groupwidth}{0}
else
pgfmathsetmacro{groupwidth}{groupwidth+max(x1,x2)/2+lastwidth/2+2*pgfkeysvalueof{/tikz/fit sep}+pgfkeysvalueof{/tikz/fit dist}}
fi
pgfmathsetmacro{lastwidth}{max(x1,x2)+8*pgfkeysvalueof{/tikz/fit sep}}
xdeflastwidth{lastwidth}
xdefgroupwidth{groupwidth}
pgfmathsetmacro{myheight}{max(y1+y2+%
pgfkeysvalueof{/tikz/inlay top sep}+pgfkeysvalueof{/tikz/matrix top sep},%
myheight)}
xdefmyheight{myheight}
pgfmathsetmacro{myshift}{(pgfkeysvalueof{/tikz/inlay top sep}+y2)/2}
ifnumX=0
xdefLstMatYShifts{myshift pt}
xdefLstMatXShifts{0pt}
else
xdefLstMatYShifts{LstMatYShifts,myshift pt}
xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
fi};
% the fit parameters determine the shape of the background rectangles
begin{pgfonlayer}{behind}
node[fit=(LX) (matX) (matrices.south-|matX.south)
(matEX) (matElX),inner ysep=8mm,inner xsep=4*pgfkeysvalueof{/tikz/fit sep},
fill=orange!30,rounded corners=50pt](FX){};
end{pgfonlayer}}{% no inlay
path
let p1=($(matX.north east)-(matX.south west)$),
n1={max(abs(y1)/2,mymatbottom)}
in
pgfextra{xdefmymatbottom{n1}
ifnumX=0
pgfmathsetmacro{groupwidth}{0}
else
pgfmathsetmacro{groupwidth}{groupwidth+x1/2+lastwidth/2+pgfkeysvalueof{/tikz/fit dist}}
fi
xdefgroupwidth{groupwidth}
xdeflastwidth{x1}
pgfmathsetmacro{myheight}{max(y1+pgfkeysvalueof{/tikz/matrix top sep},myheight)}
xdefmyheight{myheight}
ifnumX=0
xdefLstMatYShifts{0pt}
xdefLstMatXShifts{0pt}
else
xdefLstMatYShifts{LstMatYShifts,0pt}
xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
fi};
% the fit parameters determine the shape of the background rectangles
begin{pgfonlayer}{behind}
node[fit=(LX) (matX) (matrices.south-|matX.south),inner ysep=8mm,
fill=orange!30,rounded corners=50pt](FX){};
end{pgfonlayer}
}
}
makeatletter
immediatewrite@mainaux{xdefstringmymatbottom{-mymatbottom}relax}
immediatewrite@mainaux{xdefstringmyheight{myheight}relax}
immediatewrite@mainaux{xdefstringLstMatYShifts{{LstMatYShifts}}relax}
immediatewrite@mainaux{xdefstringLstMatXShifts{{LstMatXShifts}}relax}
makeatother

newcommandtotalnodes{5} % Define the total of subjects that need arrows-1

% From https://tex.stackexchange.com/a/480685/152550

% now add the arrows.

defLstCon{%
{
"{2,...,9}",%subjects that 0 links
"{2,10/5,13/5,14/5}",%subjects that 1 links
"{11,14}",%subjects that 2 links
"{10,13,14,25/13}",%subjects that 3 links
"{36/{12,21,29}}",%subjects that 4 links
}
}
foreach X in {0,...,totalnodes} {
pgfmathsetmacro{huenum}{X*0.75*(1/totalnodes)}
definecolor{mycolor}{hsb}{huenum,1,1}
pgfmathsetmacro{mylst}{LstCon[X]}
typeout{X:mylst}
foreach Y/myalong in mylst {
ifxmyalongY
%typeout{X:Y,empty}
draw[-latex,mycolor,very thick] (X-Title.east)
to[manoooh curve] (Y-Title.west);
else
%typeout{X:Yspace andspace myalong}
draw[-latex,mycolor,very thick] (X-Title.east)
[along node/.list/.expanded=myalong]
to[manoooh curve] (Y-Title.west);
fi
}
}
end{tikzpicture}
end{Form}

vfill

end{document}


MWE



I would like to add a set of checkbox'es from ocgx2 package, where we can set the arrows to "Visible" or "Invisible" that connect two or more subjects:



What I want



If we deselect e.g. "Correlatives of subject C" then all the arrows that start from "Subject C" must be changed to "Invisible", so we cannot see them. Also the "Select All" checkbox has to change, meaning that "We have not selected all the checkbox'es" i.e.:



Example



If we deselect all of them:



Example 2



Note that the "Select All" checkbox is automatically changed due to the user's deselection of all the other checkbox'es.



As expected, the user can select "Select All" to make all the arrows visible. If he deselects it, all the arrows must be invisible.



You can rely on this great example of AlexG's comment:



documentclass[12pt,margin=3pt]{standalone}

usepackage[tikz]{ocgx2} % PDF Layers
usepackage{amssymb} % checkmark
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check box command for layer switching
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
newcommandlayerCheckBox[3]{%
% #1: layer name (as shown in Layers tab), #2: layer id,
% #3: initial visibility
resizebox{2ex}{!}{ooalign{%
switchocg{#2}{$square$}cr%
begin{ocg}{#1}{#2}{#3}$checkmark$end{ocg}%
}}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

begin{document}

begin{tikzpicture}
node (a) at (0,0) {A};
node (b) at (1,1) {B};
begin{scope}[ocg={name=Arrow,ref=myArrow,status=visible}]
draw[->] (a.east) -| (b.south);
end{scope}
end{tikzpicture}

layerCheckBox{Arrow}{myArrow}{on}A$rightarrow$B

end{document}


If possible, the addition of the checkbox'es should be automatic, in the sense that if there is a set of arrows then they will be inserted in a new line of the big black frame.



After the compilation all the checkbox'es have to start "on".









share



























    0















    I have this MWE, taken from marmot's nice answer:



    documentclass{article}
    usepackage[margin=0in,footskip=0in,paperwidth=60cm,paperheight=29cm]{geometry}
    usepackage[english]{babel}
    usepackage[utf8]{inputenc}
    usepackage[T1]{fontenc}
    usepackage{hyperref}

    usepackage{tikz}
    usetikzlibrary{positioning,fit,calc}
    pgfdeclarelayer{behind}
    pgfdeclarelayer{background}
    pgfdeclarelayer{foreground}
    pgfsetlayers{behind,background,main,foreground}
    tikzset{
    text field/.style={text height=1.5ex,align=center,rounded corners},
    nonfillable title field/.style={text height=2ex,text depth=0.3em,anchor=south,text
    width=5cm,align=center,font=footnotesizesffamily},
    fillable title field/.style={text height=3.14ex,text depth=0em,anchor=south,text
    width=5cm,align=center,font=footnotesizesffamily},
    pics/fillable subject/.style={code={%
    node[text field] (-TF)
    {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
    node[nonfillable title field] (-Title)
    at ([yshift=0.4em]-TF.north) {#1};
    draw[rounded corners] (-TF.south west) |- (-Title.south west)
    |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
    -- cycle;
    draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
    }},
    pics/nonfillable subject/.style={code={%
    node[text field] (-TF)
    {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
    node[nonfillable title field] (-Title)
    at ([yshift=0.4em]-TF.north) {#1};
    draw[rounded corners] (-TF.south west) |- (-Title.south west)
    |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
    -- cycle;
    draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
    }},
    pics/fillable elective subject/.style={code={%
    node[text field] (-TF)
    {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
    node[fillable title field] (-Title)
    at ([yshift=0.4em]-TF.north) {hspace*{-0.34em}TextField[align=1,name=#1-electivesubject,width=4.5cm,charsize=8pt,height=.5cm,bordercolor={1 1 1}]{}};
    draw[rounded corners] (-TF.south west) |- (-Title.south west)
    |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
    -- cycle;
    draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
    }},
    pics/nonfillable elective subject/.style={code={%
    node[text field] (-TF)
    {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
    node[nonfillable title field] (-Title)
    at ([yshift=0.4em]-TF.north) {};
    draw[rounded corners] (-TF.south west) |- (-Title.south west)
    |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
    -- cycle;
    draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
    }},
    manoooh/.style={column sep=-1.75cm,row sep=5mm},
    manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
    electives/.style={column sep=-7.25cm,row sep=5mm},
    fit sep/.initial=4pt, % change width of node (big rectangle shape)
    fit dist/.initial=40pt, % change node distance (big rectangle shape)
    inlay top sep/.initial=24pt,
    matrix top sep/.initial=24pt,
    manoooh curve/.style={to path={let p1=($(tikztotarget)-(tikztostart)$)
    in (tikztostart) .. controls ($(tikztostart)+(#1*x1,0)$)
    and ($(tikztotarget)+(-#1*x1,0)$) .. (tikztotarget)}},
    manoooh curve/.default=0.3,
    along node/.style={insert path={
    to[out=0,in=180]
    ([yshift=5pt]#1-Title.north west) -- ([yshift=5pt]#1-Title.north east)}}
    } % From https://tex.stackexchange.com/a/478723/152550

    makeatletter% from https://tex.stackexchange.com/a/85531/121799
    longdefifnodedefined#1#2#3{%
    @ifundefined{pgf@sh@ns@#1}{#3}{#2}%
    }
    makeatother

    begin{document}
    thispagestyle{empty} % To suppress page number
    noindent
    begin{tikzpicture}
    fill[white,fill=orange] (0,0) rectangle (paperwidth,-2cm) node[midway,align=center,font=Huge] {bfseries Some text here\LARGE More text here};
    end{tikzpicture}

    ifdefinedmymatbottom
    else
    typeout{Pleasespace recompilespace yourspace file!}
    defmymatbottom{-150pt}
    fi
    ifdefinedmyheight
    else
    defmyheight{0}
    typeout{Pleasespace recompilespace yourspace file!}
    fi
    ifdefinedLstMatYShifts
    else
    defLstMatYShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
    fi
    ifdefinedLstMatXShifts
    else
    defLstMatXShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
    fi

    %typeout{height:myheight}
    %typeout{xshifts(in):LstMatXShifts}

    vfill
    centering
    begin{Form}
    begin{tikzpicture}
    % step 1: add the matrices, name them mat0, mat1 etc.
    begin{scope}[local bounding box=matrices]
    matrix[manoooh] (mat0) at ({LstMatXShifts[0]},{LstMatYShifts[0]}) {
    pic[local bounding box=A] (0) {nonfillable subject={Subject A}}; \
    pic (1) {nonfillable subject={Subject B}}; \
    };
    matrix[manoooh] (mat1) at ({LstMatXShifts[1]},{LstMatYShifts[1]}) {

    pic (2) {nonfillable subject={Subject C}}; \
    pic (3) {nonfillable subject={Subject D}}; \
    pic (4) {nonfillable subject={Subject E}}; \
    pic (5) {nonfillable subject={Subject F}}; \
    pic (6) {nonfillable subject={Subject G}}; \
    pic (7) {nonfillable subject={Subject H}}; \
    pic (8) {nonfillable subject={Subject I}}; \
    pic[draw=red] (9) {nonfillable subject={Subject J}}; \
    };
    matrix[manoooh] (mat2) at ({LstMatXShifts[2]},{LstMatYShifts[2]}) {
    pic[draw=red] (10) {nonfillable subject={Subject K}}; \
    pic (11) {nonfillable subject={Subject L}}; \
    pic (12) {nonfillable subject={Subject A}}; \
    pic (13) {nonfillable subject={Subject N}}; \
    pic (14) {nonfillable subject={Subject O}}; \
    pic (15) {nonfillable subject={Subject P}}; \
    pic (16) {nonfillable subject={Subject Q}}; \
    pic (17) {nonfillable subject={Subject R}}; \
    };
    matrix[manoooh] (mat3) at ({LstMatXShifts[3]},{LstMatYShifts[3]}) {
    pic[draw=red] (18) {nonfillable subject={Subject S}}; \
    pic (19) {nonfillable subject={Subject T}}; \
    pic (20) {nonfillable subject={Subject U}}; \
    pic (21) {nonfillable subject={Subject V}}; \
    pic (22) {nonfillable subject={Subject W}}; \
    pic (23) {nonfillable subject={Subject X}}; \
    pic (24) {nonfillable subject={Subject Y}}; \
    pic (25) {nonfillable subject={Subject Z}}; \
    };
    matrix[manooohE] (matE3) at ({LstMatXShifts[3]},mymatbottom) {
    pic (L3E1) {nonfillable elective subject={Subject}}; & &
    pic (L3E2) {nonfillable elective subject={Subject}}; \
    & pic (L3E3) {nonfillable elective subject={Subject}}; & \
    };
    matrix[manoooh] (mat4) at ({LstMatXShifts[4]},{LstMatYShifts[4]}) {
    & pic[draw=red] (26) {nonfillable subject={Subject AA}}; & \
    pic (27) {nonfillable subject={Subject AB}}; & & pic (28) {nonfillable subject={Subject AC}}; \
    & pic (29) {nonfillable subject={Subject AD}}; & \
    & pic (30) {nonfillable subject={Subject AE}}; & \
    & pic (31) {nonfillable subject={Subject AF}}; & \
    & pic (32) {nonfillable subject={Subject AG}}; & \
    };
    matrix[manooohE] (matE4) at ({LstMatXShifts[4]},mymatbottom) {
    pic (L4E1) {nonfillable elective subject={Subject}}; \
    };
    matrix[manoooh] (mat5) at ({LstMatXShifts[5]},{LstMatYShifts[5]}) {
    pic (33) {nonfillable subject={Subject AH}}; \
    pic (34) {nonfillable subject={Subject AI}}; \
    pic[draw=red] (35) {nonfillable subject={Subject AJ}}; \
    pic (36) {nonfillable subject={Subject AK}}; \
    };
    matrix[manooohE] (matE5) at ({LstMatXShifts[5]},mymatbottom) {
    pic (L5E1) {nonfillable elective subject={Subject}}; \
    pic (L5E2) {nonfillable elective subject={Subject}}; \
    pic (L5E3) {nonfillable elective subject={Subject}}; \
    pic (L5E4) {nonfillable elective subject={Subject}}; \
    pic (L5E5) {nonfillable elective subject={Subject}}; \
    };
    end{scope}
    pgfmathsetmacro{groupwidth}{0}
    pgfmathsetmacro{lastwidth}{0}
    foreach X in {0,...,5} %<- if you have more or less matrices, adjust 3
    {
    node[anchor=south,yshift=1cm,align=center,font=LARGEbfseriesboldmath]
    at (matX |-matrices.north) (LX) {Level $X$};
    ifnodedefined{matEX}{% has inlay
    node[xshift=1em,anchor=south west,font=LARGEbfseries,opacity=0] (matElX) at (matEX.north west) {Electives};
    begin{pgfonlayer}{background}
    path let p1=($(matX.north east)-(matX.south west)$) in
    node[fit=(matEX) (matElX),inner ysep=5mm,fill=blue!30,rounded
    corners=40pt,minimum width=x1-2*pgfkeysvalueof{/tikz/fit sep},
    inner xsep=pgfkeysvalueof{/tikz/fit sep}](FX){};
    node[xshift=1em,anchor=south west,font=LARGEbfseries]
    (matElX) at ([xshift=1.3em]FX.west|-matElX.center) {Electives};
    end{pgfonlayer}
    path let p1=($(matX.north east)-(matX.south west)$),
    p2=($(FX.north east)-(FX.south west)$),
    n1={max(abs(y1)/2+abs(y2)/2+0*pgfkeysvalueof{/tikz/inlay top sep},mymatbottom)}
    in
    pgfextra{xdefmymatbottom{n1}
    ifnumX=0
    pgfmathsetmacro{groupwidth}{0}
    else
    pgfmathsetmacro{groupwidth}{groupwidth+max(x1,x2)/2+lastwidth/2+2*pgfkeysvalueof{/tikz/fit sep}+pgfkeysvalueof{/tikz/fit dist}}
    fi
    pgfmathsetmacro{lastwidth}{max(x1,x2)+8*pgfkeysvalueof{/tikz/fit sep}}
    xdeflastwidth{lastwidth}
    xdefgroupwidth{groupwidth}
    pgfmathsetmacro{myheight}{max(y1+y2+%
    pgfkeysvalueof{/tikz/inlay top sep}+pgfkeysvalueof{/tikz/matrix top sep},%
    myheight)}
    xdefmyheight{myheight}
    pgfmathsetmacro{myshift}{(pgfkeysvalueof{/tikz/inlay top sep}+y2)/2}
    ifnumX=0
    xdefLstMatYShifts{myshift pt}
    xdefLstMatXShifts{0pt}
    else
    xdefLstMatYShifts{LstMatYShifts,myshift pt}
    xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
    fi};
    % the fit parameters determine the shape of the background rectangles
    begin{pgfonlayer}{behind}
    node[fit=(LX) (matX) (matrices.south-|matX.south)
    (matEX) (matElX),inner ysep=8mm,inner xsep=4*pgfkeysvalueof{/tikz/fit sep},
    fill=orange!30,rounded corners=50pt](FX){};
    end{pgfonlayer}}{% no inlay
    path
    let p1=($(matX.north east)-(matX.south west)$),
    n1={max(abs(y1)/2,mymatbottom)}
    in
    pgfextra{xdefmymatbottom{n1}
    ifnumX=0
    pgfmathsetmacro{groupwidth}{0}
    else
    pgfmathsetmacro{groupwidth}{groupwidth+x1/2+lastwidth/2+pgfkeysvalueof{/tikz/fit dist}}
    fi
    xdefgroupwidth{groupwidth}
    xdeflastwidth{x1}
    pgfmathsetmacro{myheight}{max(y1+pgfkeysvalueof{/tikz/matrix top sep},myheight)}
    xdefmyheight{myheight}
    ifnumX=0
    xdefLstMatYShifts{0pt}
    xdefLstMatXShifts{0pt}
    else
    xdefLstMatYShifts{LstMatYShifts,0pt}
    xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
    fi};
    % the fit parameters determine the shape of the background rectangles
    begin{pgfonlayer}{behind}
    node[fit=(LX) (matX) (matrices.south-|matX.south),inner ysep=8mm,
    fill=orange!30,rounded corners=50pt](FX){};
    end{pgfonlayer}
    }
    }
    makeatletter
    immediatewrite@mainaux{xdefstringmymatbottom{-mymatbottom}relax}
    immediatewrite@mainaux{xdefstringmyheight{myheight}relax}
    immediatewrite@mainaux{xdefstringLstMatYShifts{{LstMatYShifts}}relax}
    immediatewrite@mainaux{xdefstringLstMatXShifts{{LstMatXShifts}}relax}
    makeatother

    newcommandtotalnodes{5} % Define the total of subjects that need arrows-1

    % From https://tex.stackexchange.com/a/480685/152550

    % now add the arrows.

    defLstCon{%
    {
    "{2,...,9}",%subjects that 0 links
    "{2,10/5,13/5,14/5}",%subjects that 1 links
    "{11,14}",%subjects that 2 links
    "{10,13,14,25/13}",%subjects that 3 links
    "{36/{12,21,29}}",%subjects that 4 links
    }
    }
    foreach X in {0,...,totalnodes} {
    pgfmathsetmacro{huenum}{X*0.75*(1/totalnodes)}
    definecolor{mycolor}{hsb}{huenum,1,1}
    pgfmathsetmacro{mylst}{LstCon[X]}
    typeout{X:mylst}
    foreach Y/myalong in mylst {
    ifxmyalongY
    %typeout{X:Y,empty}
    draw[-latex,mycolor,very thick] (X-Title.east)
    to[manoooh curve] (Y-Title.west);
    else
    %typeout{X:Yspace andspace myalong}
    draw[-latex,mycolor,very thick] (X-Title.east)
    [along node/.list/.expanded=myalong]
    to[manoooh curve] (Y-Title.west);
    fi
    }
    }
    end{tikzpicture}
    end{Form}

    vfill

    end{document}


    MWE



    I would like to add a set of checkbox'es from ocgx2 package, where we can set the arrows to "Visible" or "Invisible" that connect two or more subjects:



    What I want



    If we deselect e.g. "Correlatives of subject C" then all the arrows that start from "Subject C" must be changed to "Invisible", so we cannot see them. Also the "Select All" checkbox has to change, meaning that "We have not selected all the checkbox'es" i.e.:



    Example



    If we deselect all of them:



    Example 2



    Note that the "Select All" checkbox is automatically changed due to the user's deselection of all the other checkbox'es.



    As expected, the user can select "Select All" to make all the arrows visible. If he deselects it, all the arrows must be invisible.



    You can rely on this great example of AlexG's comment:



    documentclass[12pt,margin=3pt]{standalone}

    usepackage[tikz]{ocgx2} % PDF Layers
    usepackage{amssymb} % checkmark
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % check box command for layer switching
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    newcommandlayerCheckBox[3]{%
    % #1: layer name (as shown in Layers tab), #2: layer id,
    % #3: initial visibility
    resizebox{2ex}{!}{ooalign{%
    switchocg{#2}{$square$}cr%
    begin{ocg}{#1}{#2}{#3}$checkmark$end{ocg}%
    }}%
    }
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    begin{document}

    begin{tikzpicture}
    node (a) at (0,0) {A};
    node (b) at (1,1) {B};
    begin{scope}[ocg={name=Arrow,ref=myArrow,status=visible}]
    draw[->] (a.east) -| (b.south);
    end{scope}
    end{tikzpicture}

    layerCheckBox{Arrow}{myArrow}{on}A$rightarrow$B

    end{document}


    If possible, the addition of the checkbox'es should be automatic, in the sense that if there is a set of arrows then they will be inserted in a new line of the big black frame.



    After the compilation all the checkbox'es have to start "on".









    share

























      0












      0








      0








      I have this MWE, taken from marmot's nice answer:



      documentclass{article}
      usepackage[margin=0in,footskip=0in,paperwidth=60cm,paperheight=29cm]{geometry}
      usepackage[english]{babel}
      usepackage[utf8]{inputenc}
      usepackage[T1]{fontenc}
      usepackage{hyperref}

      usepackage{tikz}
      usetikzlibrary{positioning,fit,calc}
      pgfdeclarelayer{behind}
      pgfdeclarelayer{background}
      pgfdeclarelayer{foreground}
      pgfsetlayers{behind,background,main,foreground}
      tikzset{
      text field/.style={text height=1.5ex,align=center,rounded corners},
      nonfillable title field/.style={text height=2ex,text depth=0.3em,anchor=south,text
      width=5cm,align=center,font=footnotesizesffamily},
      fillable title field/.style={text height=3.14ex,text depth=0em,anchor=south,text
      width=5cm,align=center,font=footnotesizesffamily},
      pics/fillable subject/.style={code={%
      node[text field] (-TF)
      {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {#1};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/nonfillable subject/.style={code={%
      node[text field] (-TF)
      {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {#1};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/fillable elective subject/.style={code={%
      node[text field] (-TF)
      {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
      node[fillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {hspace*{-0.34em}TextField[align=1,name=#1-electivesubject,width=4.5cm,charsize=8pt,height=.5cm,bordercolor={1 1 1}]{}};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/nonfillable elective subject/.style={code={%
      node[text field] (-TF)
      {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      manoooh/.style={column sep=-1.75cm,row sep=5mm},
      manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
      electives/.style={column sep=-7.25cm,row sep=5mm},
      fit sep/.initial=4pt, % change width of node (big rectangle shape)
      fit dist/.initial=40pt, % change node distance (big rectangle shape)
      inlay top sep/.initial=24pt,
      matrix top sep/.initial=24pt,
      manoooh curve/.style={to path={let p1=($(tikztotarget)-(tikztostart)$)
      in (tikztostart) .. controls ($(tikztostart)+(#1*x1,0)$)
      and ($(tikztotarget)+(-#1*x1,0)$) .. (tikztotarget)}},
      manoooh curve/.default=0.3,
      along node/.style={insert path={
      to[out=0,in=180]
      ([yshift=5pt]#1-Title.north west) -- ([yshift=5pt]#1-Title.north east)}}
      } % From https://tex.stackexchange.com/a/478723/152550

      makeatletter% from https://tex.stackexchange.com/a/85531/121799
      longdefifnodedefined#1#2#3{%
      @ifundefined{pgf@sh@ns@#1}{#3}{#2}%
      }
      makeatother

      begin{document}
      thispagestyle{empty} % To suppress page number
      noindent
      begin{tikzpicture}
      fill[white,fill=orange] (0,0) rectangle (paperwidth,-2cm) node[midway,align=center,font=Huge] {bfseries Some text here\LARGE More text here};
      end{tikzpicture}

      ifdefinedmymatbottom
      else
      typeout{Pleasespace recompilespace yourspace file!}
      defmymatbottom{-150pt}
      fi
      ifdefinedmyheight
      else
      defmyheight{0}
      typeout{Pleasespace recompilespace yourspace file!}
      fi
      ifdefinedLstMatYShifts
      else
      defLstMatYShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
      fi
      ifdefinedLstMatXShifts
      else
      defLstMatXShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
      fi

      %typeout{height:myheight}
      %typeout{xshifts(in):LstMatXShifts}

      vfill
      centering
      begin{Form}
      begin{tikzpicture}
      % step 1: add the matrices, name them mat0, mat1 etc.
      begin{scope}[local bounding box=matrices]
      matrix[manoooh] (mat0) at ({LstMatXShifts[0]},{LstMatYShifts[0]}) {
      pic[local bounding box=A] (0) {nonfillable subject={Subject A}}; \
      pic (1) {nonfillable subject={Subject B}}; \
      };
      matrix[manoooh] (mat1) at ({LstMatXShifts[1]},{LstMatYShifts[1]}) {

      pic (2) {nonfillable subject={Subject C}}; \
      pic (3) {nonfillable subject={Subject D}}; \
      pic (4) {nonfillable subject={Subject E}}; \
      pic (5) {nonfillable subject={Subject F}}; \
      pic (6) {nonfillable subject={Subject G}}; \
      pic (7) {nonfillable subject={Subject H}}; \
      pic (8) {nonfillable subject={Subject I}}; \
      pic[draw=red] (9) {nonfillable subject={Subject J}}; \
      };
      matrix[manoooh] (mat2) at ({LstMatXShifts[2]},{LstMatYShifts[2]}) {
      pic[draw=red] (10) {nonfillable subject={Subject K}}; \
      pic (11) {nonfillable subject={Subject L}}; \
      pic (12) {nonfillable subject={Subject A}}; \
      pic (13) {nonfillable subject={Subject N}}; \
      pic (14) {nonfillable subject={Subject O}}; \
      pic (15) {nonfillable subject={Subject P}}; \
      pic (16) {nonfillable subject={Subject Q}}; \
      pic (17) {nonfillable subject={Subject R}}; \
      };
      matrix[manoooh] (mat3) at ({LstMatXShifts[3]},{LstMatYShifts[3]}) {
      pic[draw=red] (18) {nonfillable subject={Subject S}}; \
      pic (19) {nonfillable subject={Subject T}}; \
      pic (20) {nonfillable subject={Subject U}}; \
      pic (21) {nonfillable subject={Subject V}}; \
      pic (22) {nonfillable subject={Subject W}}; \
      pic (23) {nonfillable subject={Subject X}}; \
      pic (24) {nonfillable subject={Subject Y}}; \
      pic (25) {nonfillable subject={Subject Z}}; \
      };
      matrix[manooohE] (matE3) at ({LstMatXShifts[3]},mymatbottom) {
      pic (L3E1) {nonfillable elective subject={Subject}}; & &
      pic (L3E2) {nonfillable elective subject={Subject}}; \
      & pic (L3E3) {nonfillable elective subject={Subject}}; & \
      };
      matrix[manoooh] (mat4) at ({LstMatXShifts[4]},{LstMatYShifts[4]}) {
      & pic[draw=red] (26) {nonfillable subject={Subject AA}}; & \
      pic (27) {nonfillable subject={Subject AB}}; & & pic (28) {nonfillable subject={Subject AC}}; \
      & pic (29) {nonfillable subject={Subject AD}}; & \
      & pic (30) {nonfillable subject={Subject AE}}; & \
      & pic (31) {nonfillable subject={Subject AF}}; & \
      & pic (32) {nonfillable subject={Subject AG}}; & \
      };
      matrix[manooohE] (matE4) at ({LstMatXShifts[4]},mymatbottom) {
      pic (L4E1) {nonfillable elective subject={Subject}}; \
      };
      matrix[manoooh] (mat5) at ({LstMatXShifts[5]},{LstMatYShifts[5]}) {
      pic (33) {nonfillable subject={Subject AH}}; \
      pic (34) {nonfillable subject={Subject AI}}; \
      pic[draw=red] (35) {nonfillable subject={Subject AJ}}; \
      pic (36) {nonfillable subject={Subject AK}}; \
      };
      matrix[manooohE] (matE5) at ({LstMatXShifts[5]},mymatbottom) {
      pic (L5E1) {nonfillable elective subject={Subject}}; \
      pic (L5E2) {nonfillable elective subject={Subject}}; \
      pic (L5E3) {nonfillable elective subject={Subject}}; \
      pic (L5E4) {nonfillable elective subject={Subject}}; \
      pic (L5E5) {nonfillable elective subject={Subject}}; \
      };
      end{scope}
      pgfmathsetmacro{groupwidth}{0}
      pgfmathsetmacro{lastwidth}{0}
      foreach X in {0,...,5} %<- if you have more or less matrices, adjust 3
      {
      node[anchor=south,yshift=1cm,align=center,font=LARGEbfseriesboldmath]
      at (matX |-matrices.north) (LX) {Level $X$};
      ifnodedefined{matEX}{% has inlay
      node[xshift=1em,anchor=south west,font=LARGEbfseries,opacity=0] (matElX) at (matEX.north west) {Electives};
      begin{pgfonlayer}{background}
      path let p1=($(matX.north east)-(matX.south west)$) in
      node[fit=(matEX) (matElX),inner ysep=5mm,fill=blue!30,rounded
      corners=40pt,minimum width=x1-2*pgfkeysvalueof{/tikz/fit sep},
      inner xsep=pgfkeysvalueof{/tikz/fit sep}](FX){};
      node[xshift=1em,anchor=south west,font=LARGEbfseries]
      (matElX) at ([xshift=1.3em]FX.west|-matElX.center) {Electives};
      end{pgfonlayer}
      path let p1=($(matX.north east)-(matX.south west)$),
      p2=($(FX.north east)-(FX.south west)$),
      n1={max(abs(y1)/2+abs(y2)/2+0*pgfkeysvalueof{/tikz/inlay top sep},mymatbottom)}
      in
      pgfextra{xdefmymatbottom{n1}
      ifnumX=0
      pgfmathsetmacro{groupwidth}{0}
      else
      pgfmathsetmacro{groupwidth}{groupwidth+max(x1,x2)/2+lastwidth/2+2*pgfkeysvalueof{/tikz/fit sep}+pgfkeysvalueof{/tikz/fit dist}}
      fi
      pgfmathsetmacro{lastwidth}{max(x1,x2)+8*pgfkeysvalueof{/tikz/fit sep}}
      xdeflastwidth{lastwidth}
      xdefgroupwidth{groupwidth}
      pgfmathsetmacro{myheight}{max(y1+y2+%
      pgfkeysvalueof{/tikz/inlay top sep}+pgfkeysvalueof{/tikz/matrix top sep},%
      myheight)}
      xdefmyheight{myheight}
      pgfmathsetmacro{myshift}{(pgfkeysvalueof{/tikz/inlay top sep}+y2)/2}
      ifnumX=0
      xdefLstMatYShifts{myshift pt}
      xdefLstMatXShifts{0pt}
      else
      xdefLstMatYShifts{LstMatYShifts,myshift pt}
      xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
      fi};
      % the fit parameters determine the shape of the background rectangles
      begin{pgfonlayer}{behind}
      node[fit=(LX) (matX) (matrices.south-|matX.south)
      (matEX) (matElX),inner ysep=8mm,inner xsep=4*pgfkeysvalueof{/tikz/fit sep},
      fill=orange!30,rounded corners=50pt](FX){};
      end{pgfonlayer}}{% no inlay
      path
      let p1=($(matX.north east)-(matX.south west)$),
      n1={max(abs(y1)/2,mymatbottom)}
      in
      pgfextra{xdefmymatbottom{n1}
      ifnumX=0
      pgfmathsetmacro{groupwidth}{0}
      else
      pgfmathsetmacro{groupwidth}{groupwidth+x1/2+lastwidth/2+pgfkeysvalueof{/tikz/fit dist}}
      fi
      xdefgroupwidth{groupwidth}
      xdeflastwidth{x1}
      pgfmathsetmacro{myheight}{max(y1+pgfkeysvalueof{/tikz/matrix top sep},myheight)}
      xdefmyheight{myheight}
      ifnumX=0
      xdefLstMatYShifts{0pt}
      xdefLstMatXShifts{0pt}
      else
      xdefLstMatYShifts{LstMatYShifts,0pt}
      xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
      fi};
      % the fit parameters determine the shape of the background rectangles
      begin{pgfonlayer}{behind}
      node[fit=(LX) (matX) (matrices.south-|matX.south),inner ysep=8mm,
      fill=orange!30,rounded corners=50pt](FX){};
      end{pgfonlayer}
      }
      }
      makeatletter
      immediatewrite@mainaux{xdefstringmymatbottom{-mymatbottom}relax}
      immediatewrite@mainaux{xdefstringmyheight{myheight}relax}
      immediatewrite@mainaux{xdefstringLstMatYShifts{{LstMatYShifts}}relax}
      immediatewrite@mainaux{xdefstringLstMatXShifts{{LstMatXShifts}}relax}
      makeatother

      newcommandtotalnodes{5} % Define the total of subjects that need arrows-1

      % From https://tex.stackexchange.com/a/480685/152550

      % now add the arrows.

      defLstCon{%
      {
      "{2,...,9}",%subjects that 0 links
      "{2,10/5,13/5,14/5}",%subjects that 1 links
      "{11,14}",%subjects that 2 links
      "{10,13,14,25/13}",%subjects that 3 links
      "{36/{12,21,29}}",%subjects that 4 links
      }
      }
      foreach X in {0,...,totalnodes} {
      pgfmathsetmacro{huenum}{X*0.75*(1/totalnodes)}
      definecolor{mycolor}{hsb}{huenum,1,1}
      pgfmathsetmacro{mylst}{LstCon[X]}
      typeout{X:mylst}
      foreach Y/myalong in mylst {
      ifxmyalongY
      %typeout{X:Y,empty}
      draw[-latex,mycolor,very thick] (X-Title.east)
      to[manoooh curve] (Y-Title.west);
      else
      %typeout{X:Yspace andspace myalong}
      draw[-latex,mycolor,very thick] (X-Title.east)
      [along node/.list/.expanded=myalong]
      to[manoooh curve] (Y-Title.west);
      fi
      }
      }
      end{tikzpicture}
      end{Form}

      vfill

      end{document}


      MWE



      I would like to add a set of checkbox'es from ocgx2 package, where we can set the arrows to "Visible" or "Invisible" that connect two or more subjects:



      What I want



      If we deselect e.g. "Correlatives of subject C" then all the arrows that start from "Subject C" must be changed to "Invisible", so we cannot see them. Also the "Select All" checkbox has to change, meaning that "We have not selected all the checkbox'es" i.e.:



      Example



      If we deselect all of them:



      Example 2



      Note that the "Select All" checkbox is automatically changed due to the user's deselection of all the other checkbox'es.



      As expected, the user can select "Select All" to make all the arrows visible. If he deselects it, all the arrows must be invisible.



      You can rely on this great example of AlexG's comment:



      documentclass[12pt,margin=3pt]{standalone}

      usepackage[tikz]{ocgx2} % PDF Layers
      usepackage{amssymb} % checkmark
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % check box command for layer switching
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      newcommandlayerCheckBox[3]{%
      % #1: layer name (as shown in Layers tab), #2: layer id,
      % #3: initial visibility
      resizebox{2ex}{!}{ooalign{%
      switchocg{#2}{$square$}cr%
      begin{ocg}{#1}{#2}{#3}$checkmark$end{ocg}%
      }}%
      }
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      begin{document}

      begin{tikzpicture}
      node (a) at (0,0) {A};
      node (b) at (1,1) {B};
      begin{scope}[ocg={name=Arrow,ref=myArrow,status=visible}]
      draw[->] (a.east) -| (b.south);
      end{scope}
      end{tikzpicture}

      layerCheckBox{Arrow}{myArrow}{on}A$rightarrow$B

      end{document}


      If possible, the addition of the checkbox'es should be automatic, in the sense that if there is a set of arrows then they will be inserted in a new line of the big black frame.



      After the compilation all the checkbox'es have to start "on".









      share














      I have this MWE, taken from marmot's nice answer:



      documentclass{article}
      usepackage[margin=0in,footskip=0in,paperwidth=60cm,paperheight=29cm]{geometry}
      usepackage[english]{babel}
      usepackage[utf8]{inputenc}
      usepackage[T1]{fontenc}
      usepackage{hyperref}

      usepackage{tikz}
      usetikzlibrary{positioning,fit,calc}
      pgfdeclarelayer{behind}
      pgfdeclarelayer{background}
      pgfdeclarelayer{foreground}
      pgfsetlayers{behind,background,main,foreground}
      tikzset{
      text field/.style={text height=1.5ex,align=center,rounded corners},
      nonfillable title field/.style={text height=2ex,text depth=0.3em,anchor=south,text
      width=5cm,align=center,font=footnotesizesffamily},
      fillable title field/.style={text height=3.14ex,text depth=0em,anchor=south,text
      width=5cm,align=center,font=footnotesizesffamily},
      pics/fillable subject/.style={code={%
      node[text field] (-TF)
      {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {#1};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/nonfillable subject/.style={code={%
      node[text field] (-TF)
      {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {#1};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/fillable elective subject/.style={code={%
      node[text field] (-TF)
      {hspace*{-0.5em}TextField[align=1,name=#1-day,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0.15em}TextField[align=1,name=#1-month,width=1em,charsize=7pt,maxlen=2,bordercolor={1 1 1}]~~/hspace*{-0em}TextField[align=1,name=#1-year,width=2em,charsize=7pt,maxlen=4,bordercolor={1 1 1}]{}~};
      node[fillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {hspace*{-0.34em}TextField[align=1,name=#1-electivesubject,width=4.5cm,charsize=8pt,height=.5cm,bordercolor={1 1 1}]{}};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      pics/nonfillable elective subject/.style={code={%
      node[text field] (-TF)
      {hspace{1.2em}~/~hspace{1.15em}~/~hspace{2.35em}{}};
      node[nonfillable title field] (-Title)
      at ([yshift=0.4em]-TF.north) {};
      draw[rounded corners] (-TF.south west) |- (-Title.south west)
      |- (-Title.north east) -- (-Title.south east) -| (-TF.south east)
      -- cycle;
      draw ([xshift=4pt]-Title.south west) -- ([xshift=-4pt]-Title.south east);
      }},
      manoooh/.style={column sep=-1.75cm,row sep=5mm},
      manooohE/.style={column sep=-2.25cm,row sep=5mm,anchor=south},
      electives/.style={column sep=-7.25cm,row sep=5mm},
      fit sep/.initial=4pt, % change width of node (big rectangle shape)
      fit dist/.initial=40pt, % change node distance (big rectangle shape)
      inlay top sep/.initial=24pt,
      matrix top sep/.initial=24pt,
      manoooh curve/.style={to path={let p1=($(tikztotarget)-(tikztostart)$)
      in (tikztostart) .. controls ($(tikztostart)+(#1*x1,0)$)
      and ($(tikztotarget)+(-#1*x1,0)$) .. (tikztotarget)}},
      manoooh curve/.default=0.3,
      along node/.style={insert path={
      to[out=0,in=180]
      ([yshift=5pt]#1-Title.north west) -- ([yshift=5pt]#1-Title.north east)}}
      } % From https://tex.stackexchange.com/a/478723/152550

      makeatletter% from https://tex.stackexchange.com/a/85531/121799
      longdefifnodedefined#1#2#3{%
      @ifundefined{pgf@sh@ns@#1}{#3}{#2}%
      }
      makeatother

      begin{document}
      thispagestyle{empty} % To suppress page number
      noindent
      begin{tikzpicture}
      fill[white,fill=orange] (0,0) rectangle (paperwidth,-2cm) node[midway,align=center,font=Huge] {bfseries Some text here\LARGE More text here};
      end{tikzpicture}

      ifdefinedmymatbottom
      else
      typeout{Pleasespace recompilespace yourspace file!}
      defmymatbottom{-150pt}
      fi
      ifdefinedmyheight
      else
      defmyheight{0}
      typeout{Pleasespace recompilespace yourspace file!}
      fi
      ifdefinedLstMatYShifts
      else
      defLstMatYShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
      fi
      ifdefinedLstMatXShifts
      else
      defLstMatXShifts{{0pt,0pt,0pt,0pt,0pt,0pt,0pt}}
      fi

      %typeout{height:myheight}
      %typeout{xshifts(in):LstMatXShifts}

      vfill
      centering
      begin{Form}
      begin{tikzpicture}
      % step 1: add the matrices, name them mat0, mat1 etc.
      begin{scope}[local bounding box=matrices]
      matrix[manoooh] (mat0) at ({LstMatXShifts[0]},{LstMatYShifts[0]}) {
      pic[local bounding box=A] (0) {nonfillable subject={Subject A}}; \
      pic (1) {nonfillable subject={Subject B}}; \
      };
      matrix[manoooh] (mat1) at ({LstMatXShifts[1]},{LstMatYShifts[1]}) {

      pic (2) {nonfillable subject={Subject C}}; \
      pic (3) {nonfillable subject={Subject D}}; \
      pic (4) {nonfillable subject={Subject E}}; \
      pic (5) {nonfillable subject={Subject F}}; \
      pic (6) {nonfillable subject={Subject G}}; \
      pic (7) {nonfillable subject={Subject H}}; \
      pic (8) {nonfillable subject={Subject I}}; \
      pic[draw=red] (9) {nonfillable subject={Subject J}}; \
      };
      matrix[manoooh] (mat2) at ({LstMatXShifts[2]},{LstMatYShifts[2]}) {
      pic[draw=red] (10) {nonfillable subject={Subject K}}; \
      pic (11) {nonfillable subject={Subject L}}; \
      pic (12) {nonfillable subject={Subject A}}; \
      pic (13) {nonfillable subject={Subject N}}; \
      pic (14) {nonfillable subject={Subject O}}; \
      pic (15) {nonfillable subject={Subject P}}; \
      pic (16) {nonfillable subject={Subject Q}}; \
      pic (17) {nonfillable subject={Subject R}}; \
      };
      matrix[manoooh] (mat3) at ({LstMatXShifts[3]},{LstMatYShifts[3]}) {
      pic[draw=red] (18) {nonfillable subject={Subject S}}; \
      pic (19) {nonfillable subject={Subject T}}; \
      pic (20) {nonfillable subject={Subject U}}; \
      pic (21) {nonfillable subject={Subject V}}; \
      pic (22) {nonfillable subject={Subject W}}; \
      pic (23) {nonfillable subject={Subject X}}; \
      pic (24) {nonfillable subject={Subject Y}}; \
      pic (25) {nonfillable subject={Subject Z}}; \
      };
      matrix[manooohE] (matE3) at ({LstMatXShifts[3]},mymatbottom) {
      pic (L3E1) {nonfillable elective subject={Subject}}; & &
      pic (L3E2) {nonfillable elective subject={Subject}}; \
      & pic (L3E3) {nonfillable elective subject={Subject}}; & \
      };
      matrix[manoooh] (mat4) at ({LstMatXShifts[4]},{LstMatYShifts[4]}) {
      & pic[draw=red] (26) {nonfillable subject={Subject AA}}; & \
      pic (27) {nonfillable subject={Subject AB}}; & & pic (28) {nonfillable subject={Subject AC}}; \
      & pic (29) {nonfillable subject={Subject AD}}; & \
      & pic (30) {nonfillable subject={Subject AE}}; & \
      & pic (31) {nonfillable subject={Subject AF}}; & \
      & pic (32) {nonfillable subject={Subject AG}}; & \
      };
      matrix[manooohE] (matE4) at ({LstMatXShifts[4]},mymatbottom) {
      pic (L4E1) {nonfillable elective subject={Subject}}; \
      };
      matrix[manoooh] (mat5) at ({LstMatXShifts[5]},{LstMatYShifts[5]}) {
      pic (33) {nonfillable subject={Subject AH}}; \
      pic (34) {nonfillable subject={Subject AI}}; \
      pic[draw=red] (35) {nonfillable subject={Subject AJ}}; \
      pic (36) {nonfillable subject={Subject AK}}; \
      };
      matrix[manooohE] (matE5) at ({LstMatXShifts[5]},mymatbottom) {
      pic (L5E1) {nonfillable elective subject={Subject}}; \
      pic (L5E2) {nonfillable elective subject={Subject}}; \
      pic (L5E3) {nonfillable elective subject={Subject}}; \
      pic (L5E4) {nonfillable elective subject={Subject}}; \
      pic (L5E5) {nonfillable elective subject={Subject}}; \
      };
      end{scope}
      pgfmathsetmacro{groupwidth}{0}
      pgfmathsetmacro{lastwidth}{0}
      foreach X in {0,...,5} %<- if you have more or less matrices, adjust 3
      {
      node[anchor=south,yshift=1cm,align=center,font=LARGEbfseriesboldmath]
      at (matX |-matrices.north) (LX) {Level $X$};
      ifnodedefined{matEX}{% has inlay
      node[xshift=1em,anchor=south west,font=LARGEbfseries,opacity=0] (matElX) at (matEX.north west) {Electives};
      begin{pgfonlayer}{background}
      path let p1=($(matX.north east)-(matX.south west)$) in
      node[fit=(matEX) (matElX),inner ysep=5mm,fill=blue!30,rounded
      corners=40pt,minimum width=x1-2*pgfkeysvalueof{/tikz/fit sep},
      inner xsep=pgfkeysvalueof{/tikz/fit sep}](FX){};
      node[xshift=1em,anchor=south west,font=LARGEbfseries]
      (matElX) at ([xshift=1.3em]FX.west|-matElX.center) {Electives};
      end{pgfonlayer}
      path let p1=($(matX.north east)-(matX.south west)$),
      p2=($(FX.north east)-(FX.south west)$),
      n1={max(abs(y1)/2+abs(y2)/2+0*pgfkeysvalueof{/tikz/inlay top sep},mymatbottom)}
      in
      pgfextra{xdefmymatbottom{n1}
      ifnumX=0
      pgfmathsetmacro{groupwidth}{0}
      else
      pgfmathsetmacro{groupwidth}{groupwidth+max(x1,x2)/2+lastwidth/2+2*pgfkeysvalueof{/tikz/fit sep}+pgfkeysvalueof{/tikz/fit dist}}
      fi
      pgfmathsetmacro{lastwidth}{max(x1,x2)+8*pgfkeysvalueof{/tikz/fit sep}}
      xdeflastwidth{lastwidth}
      xdefgroupwidth{groupwidth}
      pgfmathsetmacro{myheight}{max(y1+y2+%
      pgfkeysvalueof{/tikz/inlay top sep}+pgfkeysvalueof{/tikz/matrix top sep},%
      myheight)}
      xdefmyheight{myheight}
      pgfmathsetmacro{myshift}{(pgfkeysvalueof{/tikz/inlay top sep}+y2)/2}
      ifnumX=0
      xdefLstMatYShifts{myshift pt}
      xdefLstMatXShifts{0pt}
      else
      xdefLstMatYShifts{LstMatYShifts,myshift pt}
      xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
      fi};
      % the fit parameters determine the shape of the background rectangles
      begin{pgfonlayer}{behind}
      node[fit=(LX) (matX) (matrices.south-|matX.south)
      (matEX) (matElX),inner ysep=8mm,inner xsep=4*pgfkeysvalueof{/tikz/fit sep},
      fill=orange!30,rounded corners=50pt](FX){};
      end{pgfonlayer}}{% no inlay
      path
      let p1=($(matX.north east)-(matX.south west)$),
      n1={max(abs(y1)/2,mymatbottom)}
      in
      pgfextra{xdefmymatbottom{n1}
      ifnumX=0
      pgfmathsetmacro{groupwidth}{0}
      else
      pgfmathsetmacro{groupwidth}{groupwidth+x1/2+lastwidth/2+pgfkeysvalueof{/tikz/fit dist}}
      fi
      xdefgroupwidth{groupwidth}
      xdeflastwidth{x1}
      pgfmathsetmacro{myheight}{max(y1+pgfkeysvalueof{/tikz/matrix top sep},myheight)}
      xdefmyheight{myheight}
      ifnumX=0
      xdefLstMatYShifts{0pt}
      xdefLstMatXShifts{0pt}
      else
      xdefLstMatYShifts{LstMatYShifts,0pt}
      xdefLstMatXShifts{LstMatXShifts,groupwidth pt}
      fi};
      % the fit parameters determine the shape of the background rectangles
      begin{pgfonlayer}{behind}
      node[fit=(LX) (matX) (matrices.south-|matX.south),inner ysep=8mm,
      fill=orange!30,rounded corners=50pt](FX){};
      end{pgfonlayer}
      }
      }
      makeatletter
      immediatewrite@mainaux{xdefstringmymatbottom{-mymatbottom}relax}
      immediatewrite@mainaux{xdefstringmyheight{myheight}relax}
      immediatewrite@mainaux{xdefstringLstMatYShifts{{LstMatYShifts}}relax}
      immediatewrite@mainaux{xdefstringLstMatXShifts{{LstMatXShifts}}relax}
      makeatother

      newcommandtotalnodes{5} % Define the total of subjects that need arrows-1

      % From https://tex.stackexchange.com/a/480685/152550

      % now add the arrows.

      defLstCon{%
      {
      "{2,...,9}",%subjects that 0 links
      "{2,10/5,13/5,14/5}",%subjects that 1 links
      "{11,14}",%subjects that 2 links
      "{10,13,14,25/13}",%subjects that 3 links
      "{36/{12,21,29}}",%subjects that 4 links
      }
      }
      foreach X in {0,...,totalnodes} {
      pgfmathsetmacro{huenum}{X*0.75*(1/totalnodes)}
      definecolor{mycolor}{hsb}{huenum,1,1}
      pgfmathsetmacro{mylst}{LstCon[X]}
      typeout{X:mylst}
      foreach Y/myalong in mylst {
      ifxmyalongY
      %typeout{X:Y,empty}
      draw[-latex,mycolor,very thick] (X-Title.east)
      to[manoooh curve] (Y-Title.west);
      else
      %typeout{X:Yspace andspace myalong}
      draw[-latex,mycolor,very thick] (X-Title.east)
      [along node/.list/.expanded=myalong]
      to[manoooh curve] (Y-Title.west);
      fi
      }
      }
      end{tikzpicture}
      end{Form}

      vfill

      end{document}


      MWE



      I would like to add a set of checkbox'es from ocgx2 package, where we can set the arrows to "Visible" or "Invisible" that connect two or more subjects:



      What I want



      If we deselect e.g. "Correlatives of subject C" then all the arrows that start from "Subject C" must be changed to "Invisible", so we cannot see them. Also the "Select All" checkbox has to change, meaning that "We have not selected all the checkbox'es" i.e.:



      Example



      If we deselect all of them:



      Example 2



      Note that the "Select All" checkbox is automatically changed due to the user's deselection of all the other checkbox'es.



      As expected, the user can select "Select All" to make all the arrows visible. If he deselects it, all the arrows must be invisible.



      You can rely on this great example of AlexG's comment:



      documentclass[12pt,margin=3pt]{standalone}

      usepackage[tikz]{ocgx2} % PDF Layers
      usepackage{amssymb} % checkmark
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % check box command for layer switching
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      newcommandlayerCheckBox[3]{%
      % #1: layer name (as shown in Layers tab), #2: layer id,
      % #3: initial visibility
      resizebox{2ex}{!}{ooalign{%
      switchocg{#2}{$square$}cr%
      begin{ocg}{#1}{#2}{#3}$checkmark$end{ocg}%
      }}%
      }
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      begin{document}

      begin{tikzpicture}
      node (a) at (0,0) {A};
      node (b) at (1,1) {B};
      begin{scope}[ocg={name=Arrow,ref=myArrow,status=visible}]
      draw[->] (a.east) -| (b.south);
      end{scope}
      end{tikzpicture}

      layerCheckBox{Arrow}{myArrow}{on}A$rightarrow$B

      end{document}


      If possible, the addition of the checkbox'es should be automatic, in the sense that if there is a set of arrows then they will be inserted in a new line of the big black frame.



      After the compilation all the checkbox'es have to start "on".







      tikz-pgf ocgx2





      share












      share










      share



      share










      asked 4 mins ago









      manoooohmanooooh

      1,1691517




      1,1691517






















          0






          active

          oldest

          votes











          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
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481812%2fcreating-a-lot-of-checkboxes-to-make-visible-invisible-arrows-using-tikzpictur%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481812%2fcreating-a-lot-of-checkboxes-to-make-visible-invisible-arrows-using-tikzpictur%23new-answer', 'question_page');
          }
          );

          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







          Popular posts from this blog

          Paper upload error, “Upload failed: The top margin is 0.715 in on page 3, which is below the required...

          Emraan Hashmi Filmografia | Linki zewnętrzne | Menu nawigacyjneGulshan GroverGulshan...

          How can I write this formula?newline and italics added with leqWhy does widehat behave differently if I...