我编写了一个宏来使用 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}