Comportamento estranho do tikz-cd com imagem lembrada

Comportamento estranho do tikz-cd com imagem lembrada

Ao tentar responderuma pergunta, encontrei um comportamento estranho do TikZ-cd com remember picture.

Se eu compilar o código a seguir mais vezes, a distância entre o primeiro e o 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}

Primeira corrida:

insira a descrição da imagem aqui

Segunda corrida:

insira a descrição da imagem aqui

Terceira corrida:

insira a descrição da imagem aqui

Quarta corrida:

insira a descrição da imagem aqui

Quinta corrida:

insira a descrição da imagem aqui

Sexta corrida:

insira a descrição da imagem aqui

Sétima corrida:

insira a descrição da imagem aqui

e assim por diante :D

Qual é o problema?

Responder1

Encontrei o motivo (simples): overlayestava faltando.

Do manual TikZ:

/tikz/overlay=<boolean>(padrão verdadeiro) Esta opção destina-se principalmente ao uso quando nós em outras imagens são referenciados, mas você também pode usá-la em outras situações. O efeito desta opção é que tudo dentro do escopo atual não é levado em consideração quando a caixa delimitadora da imagem atual é calculada. Você precisa especificar esta opção em todos os caminhos (ou pelo menos em todas as partes dos caminhos) que contenham uma referência a um nó em outra imagem. A razão é que,caso contrário, o TikZ tentará aumentar a imagem atual o suficiente para abranger o nó na outra imagem. Contudo, em um segunda execução do TeX, isso criará uma imagem ainda maior, levando a fotos cada vez maiores.A menos que você saiba o que está fazendo, sugiro especificar a opção de sobreposição com todas as imagens que contenham referências a outras imagens.

Isso 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}

insira a descrição da imagem aqui

Observe também que:

  • como muzimuzhi Z disse em seu comentário, neste caso, \tikzcdset{diagrams={remember picture}}é melhor que \tikzset{every picture/.append style={remember picture}}, porque anexa opções apenas ao tikzcddiagrama, portanto, os não tikzcd tikzpicture-s não são afetados
  • como Qrrbrbirlbel disse em seu comentário, apenas o segundo tikzcd(onde está a seta vertical) precisa da overlayopção.

informação relacionada