
Mientras intentaba responderuna pregunta, encontré un comportamiento extraño de TikZ-cd con remember picture
.
Si compilo el siguiente código más veces, la distancia entre el primer y el segundo TikZ-cd aumenta:
\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}
Primer intento:
Segunda carrera:
Tercera carrera:
Cuarta carrera:
Quinta carrera:
Sexta carrera:
Séptima carrera:
y así sucesivamente :D
¿Cuál es el problema?
Respuesta1
Encontré la (simple) razón: overlay
faltaba.
Del manual de TikZ:
/tikz/overlay=<boolean>
(verdadero por defecto) Esta opción está destinada principalmente a usarse cuando se hace referencia a nodos en otras imágenes, pero también puede usarla en otras situaciones. El efecto de esta opción es que todo lo que esté dentro del alcance actual no se tiene en cuenta cuando se calcula el cuadro delimitador de la imagen actual. Debe especificar esta opción en todas las rutas (o al menos en todas las partes de las rutas) que contengan una referencia a un nodo en otra imagen. La razón es que,de lo contrario, TikZ intentará agrandar la imagen actual. suficiente para abarcar el nodo en la otra imagen. Sin embargo, en un segunda ejecución de TeX esto creará una imagen aún más grande, lo que conducirá a imágenes cada vez más grandes.A menos que sepa lo que está haciendo, le sugiero especificar la opción de superposición con todas las imágenes que contengan referencias a otras imágenes.
Esto funciona:
\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}
Tenga en cuenta también que:
- como dijo muzimuzhi Z en su comentario, en este caso,
\tikzcdset{diagrams={remember picture}}
es mejor que\tikzset{every picture/.append style={remember picture}}
, porque agrega opciones solo altikzcd
diagrama, por lo tanto, los notikzcd
tikzpicture
-s no se ven afectados - como dijo Qrrbrbirlbel en su comentario, solo el segundo
tikzcd
(donde está la flecha vertical) necesita laoverlay
opción.