
При попытке ответитьвопрос, я обнаружил странное поведение TikZ-cd с remember picture
.
Если я скомпилирую следующий код еще раз, расстояние между первым и вторым 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 в своем комментарии, в этом случае
\tikzcdset{diagrams={remember picture}}
лучше, чем\tikzset{every picture/.append style={remember picture}}
, потому что он добавляет опции только кtikzcd
диаграмме, следовательно, не-tikzcd
tikzpicture
s не затрагиваются - как сказал Qrrbrbirlbel в своем комментарии, только во втором случае
tikzcd
(где вертикальная стрелка) нужна этаoverlay
опция.