Пробел после макроса с изображением TikZ

Пробел после макроса с изображением TikZ

Я написал макрос для печати линейных комбинаций и связанных вещей с помощью TikZ ( pgfforна самом деле, но мне нужен TikZ для других вещей в большом документе). Вот 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}

Вывод в конце. Мне нужно, чтобы между двумя из них был правильный интервал. Как видите, я даже пытался использовать код как отдельный фрагмент текста, но получил тот же результат; я также пробовал использовать окружение tikzpicture, но ничего не изменилось. После поиска я увидел много вопросов, в которых просилиудалятьпробел после tikzpicture, но я хочу его добавить. Как вы также можете видеть, xspaceздесь тоже не работает. Спасибо заранее!!

введите описание изображения здесь

решение1

Вам не нужно помещать команды в tikzили tikzpicture, так как код — это просто текст, а не команды рисования. Фактически TeX действительно пытается набрать эти буквы, но поскольку он находится в середине tikzpicture, ему было указано использовать nullfont, который является внутренним шрифтом, не имеющим никаких символов и не создающим межсловных пробелов. Поэтому среда \tikzили tikzpictureпросто отбрасывает текст, так как он не находится в узле.

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

Связанный контент