
答えようとしている間質問、TikZ-cd の奇妙な動作を発見しましたremember picture
。
次のコードをさらにコンパイルすると、最初の TikZ-cd と 2 番目の 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}
ファーストラン:
2回目の実行:
3回目の実行:
4回目の実行:
5回目の実行:
6回目の実行:
7回目の実行:
などなど:D
何が問題ですか?
答え1
(単純な)理由が見つかりました:overlay
欠落していました。
TikZ マニュアルより:
/tikz/overlay=<boolean>
(デフォルトは true) このオプションは主に他の画像のノードを参照する場合に使用しますが、他の状況でも使用できます。このオプションの効果は、現在の画像の境界ボックスを計算するときに、現在のスコープ内のすべてのものが考慮されないことです。別の画像のノードへの参照を含むすべてのパス (または少なくともパスのすべての部分) にこのオプションを指定する必要があります。その理由は、そうでなければ、TikZは現在の画像を大きくしようとします 他の図のノードを囲むのに十分な大きさです。しかし、 2回目の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 がコメントで述べたように、この場合、
\tikzcdset{diagrams={remember picture}}
は よりも優れています\tikzset{every picture/.append style={remember picture}}
。なぜなら、 は図にオプションのみを追加するためtikzcd
、 以外のtikzcd
tikzpicture
は影響を受けないからです。 - Qrrbrbirlbel がコメントで述べたように、オプション
tikzcd
が必要なのは 2 番目 (垂直矢印がある場所)だけですoverlay
。