涉及 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,这是一种内部字体,根本没有字符,也不会产生单词间空格。因此\tikztikzpicture环境只需删除文本,因为它不在节点中。

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

相关内容