Wie kann ich Tikzfigure ganz rechts ausrichten, wenn es sich innerhalb einer Gleichung befindet?

Wie kann ich Tikzfigure ganz rechts ausrichten, wenn es sich innerhalb einer Gleichung befindet?

Mein Hauptziel ist, Tags ganz links von Tikzfigures zu haben. Wenn ich das tikzfigureInnere der Gleichung definiere, wird es dort zentriert, wo es mit dem Tag kollidiert. Da auf der rechten Seite Platz ist, wie kann ich Tikzfigure nach rechts verschieben, um eine Kollision mit dem Tag zu verhindern? Beachten Sie, dass ich an einer Doppelspalte arbeite.

tex-Code (Originalcode stammt aushttps://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}

Ausgabe:

Bildbeschreibung hier eingeben

Wenn hier die Tikz-Figur nach rechts verschoben wird, wird ihre Kollision mit dem Tag verhindert.

Verwandt:Wie kann ich (a) (b)-Zeichen ganz links von mehreren Tikz-Figuren haben?

Antwort1

Ihre Bilder sind zu breit, um in eine Spalte zu passen. Für den Fall, dass Bilder in einer Spalte platziert werden müssen, steht neben

  • Reduzierung der Schriftgröße auf \smalloder sogar auf \footnotesie,
  • Reduzierung der Breite von Knoten durch die Zulassung von mehrzeiligem Text darin,
  • Reduzierung der horizontalen Entfernungen zwischen den Verkehrsträgern,

nicht viele Möglichkeiten, was man machen kann. Ein Beispiel, wie das oben genannte umgesetzt werden kann, ist:

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

Bildbeschreibung hier eingeben

Nachtrag: Aus dem Kommentar folgt:

  • in Ihrem Ansatz ist nicht möglich, das zu erreichen, was Sie nach
  • Eine Möglichkeit besteht darin, eine neue Umgebung zu definieren, die links das Tag „nicht referenzierbar“ und rechts, zentriert oder linksbündig, Bilder oder anderen Text hat.
  • Beispiel für einen Sucn-Befehl kann sein:
\usepackage{tabularray}

\newcommand\LST[3]{
    \begin{center}
    \begin{tblr}{colspec={@{} Q[c, font=\bfseries] X[#1] @{}} }
    #2  &   #3  
    \end{tblr}
    \end{center}}
  • Bei Verwendung der obigen Definition müssen Sie computeden Knotenstil ein wenig neu definieren:
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)}},
                        ]
  • Ein Beispiel für die Verwendung des Vorgenannten ist:
\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}

Entschuldigung, aufgrund eines (GitHub-)Serverfehlers kann ich kein mit dem obigen MWE erstelltes Bild hochladen.

Antwort2

Ich schätze, Sie möchten mehr Platz zwischen „Tag (b)“ und dem Flussdiagramm. Aber ich habe kein Problem mit Ihrem MWE. Vielleicht liegt es nur an der Seitenrandeinstellung? Siehe den Anhang unten: Bildbeschreibung hier eingeben

Wenn ich falsch geraten habe, hinterlassen Sie bitte einen Kommentar mit genaueren Angaben zu Ihrem Wunsch.

verwandte Informationen