MWE:
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
chains,
positioning}
\begin{document}
\tikzset{
node distance = 0mm and 5mm,
start chain = going right,
N/.style = {fill=#1!20, name=N,
inner ysep=4mm, inner xsep=0mm, minimum width=22mm,
on chain, join=by -Straight Barb}
}
\begin{tblr}{colspec = {Q[l,m] X[l,m]}}
DE & \tikz[baseline=(N.base)]{\node[N=red] {D}; \node[N=blue] {E};}
\end{tblr}
\end{document}
보시다시피 결과가 잘못되었습니다. 첫 번째 화살표는 무엇을 생성합니까? MWE에 오류가 있나요? 아니면 뭔가 빠졌나요? 해결 방법을 아는 사람이 있나요?
편집하다:tabularx
테이블 에서도 동일한 결과가 얻어집니다 .
\documentclass{article}
\usepackage{tabularx}
\UseTblrLibrary{count}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
chains,
positioning}
\begin{document}
\tikzset{
node distance = 0mm and 5mm,
start chain = going right,
N/.style = {fill=#1!20, name=N,
inner ysep=4mm, inner xsep=0mm, minimum width=22mm,
on chain,join=by -Straight Barb}
}
\begin{tabularx}{\linewidth}{l X}
DE & \tikz[baseline=(N.base), on chain,join=by -Straight Barb]{\node[N=red] {D}; \node[N=blue] {E};}
\end{tabularx}
\end{document}
답변1
tblr
실제로 페이지에 올리기 전에 내용을 측정을 위해 적어도 세 번 조판합니다.- 체인은 TikZ 사진 외부에서 시작되므로 모든 4×2 노드는 하나의 동일한 체인의 일부로 간주됩니다.
- PGF/TikZ는 참조된 노드가 동일한 그림의 일부인지 실제로 확인하지 않습니다.
마지막으로 페이지에 표시되는 "D" 노드는 어느 쪽에도 배치되지 않고 이전 그림의 마지막 노드에 (0, 0)
배치됩니다 .right
N
다음 예를 살펴보십시오. tblr
기본적으로 동일한 작업을 수행하며 동일한 다이어그램이 4번 수행됩니다.
\tikzset{
node distance = 0mm and 5mm,
start chain = going right,
N/.style = {fill=#1!20, name=N,
inner ysep=4mm, inner xsep=0mm, minimum width=22mm,
on chain, join=by -Straight Barb}
}
\tikzset{every picture/.append style={
execute at end picture={
\node[circle, draw, label=$O$] at (0,0) {};
\draw[help lines] (-1.25,0|-N.south west) grid (N.north east);}}}
\tikz[baseline=(N.base)]{
\node[N=red]{D \pgfpictureid\ \tikzchaincount};
\node[N=blue]{E \pgfpictureid\ \tikzchaincount};}
\tikz[baseline=(N.base)]{
\node[N=red]{D \pgfpictureid\ \tikzchaincount};
\node[N=blue]{E \pgfpictureid\ \tikzchaincount};}
\tikz[baseline=(N.base)]{
\node[N=red]{D \pgfpictureid\ \tikzchaincount};
\node[N=blue]{E \pgfpictureid\ \tikzchaincount};}
\tikz[baseline=(N.base)]{
\node[N=red]{D \pgfpictureid\ \tikzchaincount};
\node[N=blue]{E \pgfpictureid\ \tikzchaincount};}
\tikz % this picture doesn't have a node N but it still finds it.
\draw foreach \ang in {0, 15, ..., 359} { (N.\ang) -- ++(\ang:5pt)};
실제로 무슨 일이 일어나고 있는지 더 명확하게 볼 수 있도록 모든 다이어그램에 원점과 그리드를 추가했습니다.
설명서에는 다음 내용이 나와 있습니다 start chain
.
이 키는 체인의 모든 노드를 포함하는 범위에 대한 옵션으로 제공되어야 하지만 반드시 그럴 필요는 없습니다. 일반적으로 이는 a
scope
또는 전체가 되지만tikzpicture
체인의 모든 노드가 발견되는 경로일 수도 있습니다. 그렇지 않은 경우체인 이름지정되면 기본값이chain
대신 사용됩니다.
이는 실제로 명확하지는 않지만 사진별로만 사용해야 한다는 힌트를 제공합니다. 하지만 그림이 네 번 조판될 것이라고는 예상할 수 없었습니다.
어쨌든, 나는 사진을 start chain
놓거나 \tikz
적어도 tblr
감방에 두는 것이 좋습니다. 어쨌든 사진 사이의 연결은 실제로 의미가 없습니다.
reset chain
주어진 체인(또는 값이 제공되지 않은 경우 활성 체인)을 재설정하는 키를 추가했습니다 . 여기에 추가할 수는 있지만 every picture
사용하지는 않습니다. (주어진 체인이 존재하는지 확인하는 것도 누락되었습니다.)
암호
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, chains, positioning}
\makeatletter
\tikzset{
reset chain/.code=%
\expandafter\gdef\csname tikz@lib@chain@count@#1\endcsname{0},
reset chain/.default=\tikz@lib@current@chain}
\makeatother
\begin{document}
\tikzset{
node distance = 0mm and 5mm,
% start chain = going right,
N/.style = {fill=#1!20, name=N,
inner ysep=4mm, inner xsep=0mm, minimum width=22mm,
on chain, join=by -Straight Barb}
}
\begin{tblr}{colspec = {Q[l,m] X[l,m]}}
DE & \tikz[start chain=going right, baseline=(N.base)]{
\node[N=red] {D}; \node[N=blue] {E};}
\end{tblr}
\hrule
\begin{tblr}{colspec = {Q[l,m] X[l,m]}}
DE & \tikzset{start chain=going right}
\tikz[baseline=(N.base)]{\node[N=red] {D}; \node[N=blue] {E};}
\end{tblr}
\hrule
\tikzset{start chain=going right, every picture/.append style=reset chain}
\begin{tblr}{colspec = {Q[l,m] X[l,m]}}
DE & \tikz[baseline=(N.base)]{\node[N=red] {D}; \node[N=blue] {E};}
\end{tblr}
\end{document}
산출
graphs
배치 및 연결 전략을 미리 설정할 수도 있다면 라이브러리를 사용할 수도 있습니다 . (그러나 나는 이것을 전역 대신 \tikz
or 의 일부로 지정하겠습니다 .)\graph
노드 D
와 은(는) E
연결되지 않거나 --
유사하므로 형제로 간주되므로 branch right sep
사용되지 않습니다 grow right sep
.
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, graphs}
\begin{document}
\tikzset{
N/.style={
fill=#1!20, inner ysep=4mm, inner xsep=0mm, minimum width=22mm, alias=N}}
\tikzgraphsset{branch right sep=5mm,
every graph/.append style={path, ->, /tikz/>=Straight Barb}}
\begin{tblr}{colspec = {Q[l,m] X[l,m]}}
DE & \tikz[baseline=(N.base)]\graph{D[N=red], E[N=blue]};
\end{tblr}
\end{document}