Como posso alinhar o tikzfigure ao lado direito se estiver dentro de uma equação?

Como posso alinhar o tikzfigure ao lado direito se estiver dentro de uma equação?

Meu principal objetivo é ter tags na extremidade esquerda dos tikzfigures. Quando eu defino o tikzfigureinterior da equação ele é centralizado onde colidiu com a tag. Como há espaço no lado direito, como posso mudar o tikzfigure para o lado direito para evitar sua colisão com a tag. Observe que estou trabalhando em uma coluna dupla.

código tex (o código original é retirado dehttps://tex.stackexchange.com/a/661116/127048)

\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage{lipsum}
\usepackage{amsmath}
\makeatletter
\newcommand{\leqnos}{\tagsleft@true\let\veqno\@@leqno}
\newcommand{\reqnos}{\tagsleft@false\let\veqno\@@eqno}
\reqnos
\makeatother
\usepackage{tikz-cd}
\usetikzlibrary{positioning}
\begin{document}
\setcounter{page}{15}
\begingroup\leqnos
\lipsum[1][1-3]
\begin{equation}
  \begin{tikzcd}
      B\times_A
  \end{tikzcd}~\tag{a}
\end{equation}

\begin{equation}
  \begin{tikzpicture}[baseline=(current bounding box.center),compute/.style={draw,thick,font=\sffamily,
          append after command={
              (\tikzlastnode.south west) edge[double=gray!50,double distance=3pt,
              line cap=rect,
              shorten >=-2pt,shorten <=-2pt]
              (\tikzlastnode.south east)}}]
      \node[compute] (n1) {Node};
      \node[compute,right=2cm of n1, yshift=11mm] (n2) {More text};
      \node[compute,right=2.2cm of n2] (n3) {More};
      \node[compute,below=2cm of n2] (n4) {text};
      \draw[thick,-stealth] (n1) -- (n2) -- (n3) -- (n4);
  \end{tikzpicture}~\tag{b}
\end{equation}
  \endgroup
\end{document}

saída:

insira a descrição da imagem aqui

Aqui, se a figura do tikz for deslocada para a direita, sua colisão com a tag será evitada.

Relacionado:Como posso ter sinais (a) (b) no lado esquerdo de várias figuras tikz?

Responder1

Suas imagens são tão largas que cabem na largura de uma coluna. Lá no caso, que as imagens tinham que ser colocadas em uma coluna, fica ao lado

  • reduzindo o tamanho da fonte para \smallou até mesmo para \footnotesie,
  • reduzindo a largura dos nós permitindo texto de várias linhas neles,
  • reduzindo distâncias horizontais entre modos,

não há muitas possibilidades para o que pode ser feito. Um exemplo de como o mencionado acima pode ser implementado é:

\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage{lipsum}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}
\usepackage{amsmath}
\makeatletter
\newcommand{\leqnos}{\tagsleft@true\let\veqno\@@leqno}
\newcommand{\reqnos}{\tagsleft@false\let\veqno\@@eqno}
\reqnos
\makeatother
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,
                positioning}

\begin{document}
\lipsum[1][1-3]

\begingroup\leqnos
\begin{equation}
   \begin{tikzcd}
       B\times_A
   \end{tikzcd}~\tag{a}
\end{equation}

\begin{equation}
    \begin{tikzpicture}[baseline=(current bounding box.center),
 node distance = 13mm,
compute/.style = {draw, thick, font=\small\sffamily, align=center,
                  append after command={\pgfextra{\let\LN\tikzlastnode}
                    (\LN.south west) edge[double=gray!50,double distance=3pt,
                                          line cap=rect,
                                          shorten >=-2pt,shorten <=-2pt]
                    (\LN.south east)}},
                        ]
    \node[compute] (n1) {Node};
    \node[compute,right=of n1] (n2) {More text};
    \node[compute,right=of n2] (n3) {More text text\\ text text text};
    \node[compute,below=of n2] (n4) {text};
    \draw[thick,draw, -Stealth, shorten > = 3pt, shorten < = 3pt]
        (n1) edge (n2)
        (n2) edge (n3)
        (n3) to (n4);
   \end{tikzpicture}~\tag{b}
\end{equation}
   \endgroup
\lipsum
\end{document}

insira a descrição da imagem aqui

Termo aditivo: Do comentário segue:

  • em sua abordagem não é possível obter o que você procura
  • uma maneira é definir um novo ambiente, que possui a tag )not refereable) à esquerda e imagens ou outro texto à direita, centralizado ou irregular à esquerda.
  • exemplo de comando sucn pode ser:
\usepackage{tabularray}

\newcommand\LST[3]{
    \begin{center}
    \begin{tblr}{colspec={@{} Q[c, font=\bfseries] X[#1] @{}} }
    #2  &   #3  
    \end{tblr}
    \end{center}}
  • No uso da definição acima, você precisa redefinir um pouco computeo estilo do nó:
compute/.style = {draw, thick, font=\small\sffamily, align=center,
                  append after command={\pgfextra{\let\LN\tikzlastnode}
                    ([xshift=-2pt] \LN.south west) 
                        edge[double=gray!50,double distance=3pt,
                                          line cap=rect]
                    ([xshift=+2pt] \LN.south east)}},
                        ]
  • Um exemplo de como usar o acima mencionado é:
\documentclass[journal,compsoc]{IEEEtran}
\usepackage{tabularray}
\newcommand\LST[3]{
    \begin{center}
    \begin{tblr}{colspec={@{} Q[c, font=\bfseries] X[#1] @{}} }
    #2  &   #3  
    \end{tblr}
    \end{center}}
\usepackage{caption}
\usepackage[export]{adjustbox}
\usepackage[label font=bf, labelformat=simple]{subfig}
\usepackage{lipsum}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta,
                positioning}

\begin{document}
\lipsum[1][1-3]
\LST{c}{(a)}{$B\times_A$}
\LST{r}{(b)}{%
\begin{tikzpicture}[baseline=(current bounding box.center),
 node distance = 12mm,
compute/.style = {draw, thick, font=\small\sffamily, align=center,
                  append after command={\pgfextra{\let\LN\tikzlastnode}
                    ([xshift=-2pt] \LN.south west) 
                        edge[double=gray!50,double distance=3pt,
                                          line cap=rect]
                    ([xshift=+2pt] \LN.south east)}},
                        ]
    \node[compute] (n1) {Node};
    \node[compute,right=of n1] (n2) {More text};
    \node[compute,right=of n2] (n3) {More text text\\ text text text};
    \node[compute,below=of n2] (n4) {text};
    \draw[thick,draw, -Stealth, shorten > = 3pt, shorten < = 3pt]
        (n1) edge (n2)
        (n2) edge (n3)
        (n3) to (n4);
   \end{tikzpicture}%
        } 
\lipsum
\end{document}

Desculpe, devido a um erro do servidor (github), não consigo fazer upload de imagens produzidas com o MWE acima.

Responder2

Acho que você deseja mais espaço entre a 'tag (b)' e o fluxograma. Mas não tenho nenhum problema com o seu MWE. Talvez apenas por causa da configuração da margem da página? Veja o anexo abaixo: insira a descrição da imagem aqui

Por favor, comente com mais detalhes sobre o que você deseja se eu adivinhei errado.

informação relacionada