Leerzeichen nach Makro mit einem TikZ-Bild

Leerzeichen nach Makro mit einem TikZ-Bild

Ich habe ein Makro geschrieben, um lineare Kombinationen und ähnliche Dinge mit TikZ auszudrucken ( pgfforeigentlich, aber ich brauche TikZ für andere Dinge in einem großen Dokument). Hier ist ein MWE:

\documentclass[11pt]{article}

\usepackage{tikz,spalign,xspace,amsmath}

\newcommand\lincomb[3]{% 3args: list of coeffs, vector symb, operation
%   \begin{tikzpicture}
    \tikz{
        \foreach \x [count=\j] in {#1}{
            \ifnum\j=1
                $\x{#2}_{\j}$
            \else
                ${#3}\x{#2}_{\j}$
            \fi
        }\xspace
%   \end{tikzpicture}
    }
}


\begin{document}

\begin{equation}
    \spalignmat{0.7;0.5;0.1}={\lincomb{0.7,0.5,0.1}{\mathbf{e}}{+}}\quad
    \;\text{and}\:
    \spalignmat{0.1;0.5;0.7}=\lincomb{0.1,0.5,0.7}{\mathbf{e}}{+}
\end{equation}

$\lincomb{a,b,c}{f}{-}$ and then some text.

\begin{tikzpicture}
    \foreach \x [count=\j] in {a,b,c,d}{
        \ifnum\j=1
            $\x f_{\j}$
        \else
            $+ \x f_{\j}$
        \fi
    }
\end{tikzpicture}\ and then some text

\end{document}

Die Ausgabe ist am Ende. Was ich möchte, ist ein angemessener Abstand zwischen zwei davon. Wie Sie sehen, habe ich sogar versucht, den Code als eigenständigen Text zu verwenden, aber das gleiche Ergebnis erhalten. Ich habe auch versucht, die tikzpictureUmgebung zu verwenden, aber nichts ändert sich. Nach der Suche habe ich viele Fragen gesehen, in denen gefragt wurde:entfernenLeerzeichen nach einem tikzpicture, aber ich möchte es hinzufügen. Wie Sie auch sehen können, xspacefunktioniert es hier auch nicht. Vielen Dank im Voraus!!

Bildbeschreibung hier eingeben

Antwort1

Sie müssen die Befehle nicht in tikzoder tikzpictureeinfügen, da der Code nur ein Text und keine Zeichenbefehle ist. Tatsächlich versucht TeX, diese Buchstaben zu setzen, aber da sie sich in der Mitte eines befinden tikzpicture, wurde es angewiesen, das zu verwenden nullfont, eine interne Schriftart, die überhaupt keine Zeichen hat und auch keinen Wortzwischenraum erzeugt. Lassen Sie den Text also in der \tikzoder tikzpicture-Umgebung einfach weg, da er sich nicht in einem Knoten befindet.

\documentclass[11pt]{article}

\usepackage{tikz,spalign,amsmath}

\newcommand\lincomb[3]{% 3args: list of coeffs, vector symb, operation
%   \begin{tikzpicture}
%    \tikz{
        \foreach \x [count=\j] in {#1}{
            \ifnum\j=1
               \x{#2}_{\j}
            \else
               {#3}\x{#2}_{\j}
            \fi
%        \xspace
%   \end{tikzpicture}
        }
}

\begin{document}

\begin{equation}
  \spalignmat{0.7;0.5;0.1}={\lincomb{0.7,0.5,0.1}{\mathbf{e}}{+}}\quad
    \;\text{and}\:
  \spalignmat{0.1;0.5;0.7}=\lincomb{0.1,0.5,0.7}{\mathbf{e}}{+}
\end{equation}

$\lincomb{a,b,c}{f}{+}$ and then some text.

\end{document}

verwandte Informationen