
대답을 하려고 하다가질문, TikZ-cd의 이상한 동작을 발견했습니다 remember picture
.
다음 코드를 더 많이 컴파일하면 첫 번째 TikZ-cd와 두 번째 TikZ-cd 사이의 거리가 늘어납니다.
\documentclass{article}
\usepackage{amsmath, tikz-cd}
\tikzset{every picture/.append style={remember picture}}
\begin{document}
\[
\begin{tikzcd}
A \ar[r] & |[alias=B]|B \ar[r] & C
\end{tikzcd}
\]
\[
\begin{tikzcd}
D\ar[r] & E \ar[from=B] \ar[r] & F
\end{tikzcd}
\]
\end{document}
첫 번째 실행:
두 번째 실행:
세 번째 실행:
네 번째 실행:
다섯 번째 실행:
여섯 번째 실행:
일곱 번째 실행:
등등 :D
문제는 무엇입니까?
답변1
(간단한) 이유를 찾았습니다. overlay
누락되었습니다.
TikZ 매뉴얼에서:
/tikz/overlay=<boolean>
(기본값은 true) 이 옵션은 주로 다른 그림의 노드를 참조할 때 사용하기 위한 것이지만 다른 상황에서도 사용할 수 있습니다. 이 옵션의 효과는 현재 그림의 경계 상자를 계산할 때 현재 범위 내의 모든 것이 고려되지 않는다는 것입니다. 다른 그림의 노드에 대한 참조를 포함하는 모든 경로(또는 적어도 경로의 모든 부분)에 이 옵션을 지정해야 합니다. 그 이유는,그렇지 않으면 TikZ는 현재 사진을 크게 만들려고 시도합니다. 다른 그림의 노드를 포함하기에 충분합니다. 그러나 TeX의 두 번째 실행은 훨씬 더 큰 그림을 만들 것입니다. 점점 더 큰 사진.무엇을 하고 있는지 모르는 경우에는 다른 사진에 대한 참조가 포함된 모든 사진에 오버레이 옵션을 지정하는 것이 좋습니다.
이것은 작동합니다:
\documentclass{scrartcl}
\usepackage{amsmath, tikz-cd}
\tikzcdset{diagrams={remember picture}}
\begin{document}
\[
\begin{tikzcd}[ampersand replacement=\&]
A \rar \& |[alias=B]|B \ar[r] \& C
\end{tikzcd}
\]\vspace{1ex}
\[
\begin{tikzcd}[overlay, ampersand replacement=\&]
D\ar[r] \& E \ar[from=B] \rar \& F
\end{tikzcd}
\]
\end{document}
또한 다음 사항에 유의하세요.
- muzimuzhi Z가 의견에서 말했듯이 이 경우 다이어그램 에만 옵션을 추가하므로 s가 아닌 것은 영향을 받지 않기 때문에 s
\tikzcdset{diagrams={remember picture}}
보다 낫습니다.\tikzset{every picture/.append style={remember picture}}
tikzcd
tikzcd
tikzpicture
- Qrrbrbirlbel이 의견에서 말했듯이 두 번째
tikzcd
(수직 화살표가 있는) 에만overlay
옵션이 필요합니다.