
Ich habe ein Makro geschrieben, um lineare Kombinationen und ähnliche Dinge mit TikZ auszudrucken ( pgffor
eigentlich, 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 tikzpicture
Umgebung 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, xspace
funktioniert es hier auch nicht. Vielen Dank im Voraus!!
Antwort1
Sie müssen die Befehle nicht in tikz
oder tikzpicture
einfü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 \tikz
oder 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}