Comportamiento extraño de tikz-cd al recordar una imagen

Comportamiento extraño de tikz-cd al recordar una imagen

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:

ingrese la descripción de la imagen aquí

Segunda carrera:

ingrese la descripción de la imagen aquí

Tercera carrera:

ingrese la descripción de la imagen aquí

Cuarta carrera:

ingrese la descripción de la imagen aquí

Quinta carrera:

ingrese la descripción de la imagen aquí

Sexta carrera:

ingrese la descripción de la imagen aquí

Séptima carrera:

ingrese la descripción de la imagen aquí

y así sucesivamente :D

¿Cuál es el problema?

Respuesta1

Encontré la (simple) razón: overlayfaltaba.

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}

ingrese la descripción de la imagen aquí

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 al tikzcddiagrama, por lo tanto, los no tikzcd tikzpicture-s no se ven afectados
  • como dijo Qrrbrbirlbel en su comentario, solo el segundo tikzcd(donde está la flecha vertical) necesita la overlayopción.

información relacionada