newcommand in math-umgebung < LaTeX < Mathe-Software < Mathe < Vorhilfe
|
nabend,
Ich hab gerade den Latex-Befehl newcommand für mich entdeckt und versuche mir die Arbeit damit etwas leichter zu machen. Zum Beispiel habe ich mir folgendes definiert:
\newcommand{\vektor}[3]{{$\left [ \begin{matrix} #1 \\ #2 \\ #3 \end{matrix} \right ]$}}
Mein Hauptproblem ist jetzt: Ich benutze diesen Befehl verständlicherweise meist im math-Modus (dieses Teil mit den $ am Anfang und am Ende^^)
Allerdings klappt das nicht so wie es sollte, also ich muss immer folgendes machen:
$a*$\vektor{1}{2}{3} $+\lambda$
oder alternativ:
$a*\text{\vektor{1}{2}{3}} +\lambda$
Das ist auf die Dauer natürlich irgendwie nervig, deshalb würde ich gerne wissen ob man es irgendwie so einstellen kann, dass er den Befehl auch kennt wenn er im math-Modus ist...
Hoffe da weiß jemand wie das möglich ist.
Und wenn ihr schon dabei seid: Gibt es eine Möglichkeit sich ein paar der geschweiften Klammern beim Funktionsaufruf zu sparen?
thx für Antworten
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:07 Di 10.05.2011 | Autor: | rainerS |
Hallo!
> Ich hab gerade den Latex-Befehl newcommand für mich
> entdeckt und versuche mir die Arbeit damit etwas leichter
> zu machen. Zum Beispiel habe ich mir folgendes definiert:
> \newcommand{\vektor}[3]{{$\left [ \begin{matrix} #1 \\ #2 \\ #3 \end{matrix} \right ]$}}
> Mein Hauptproblem ist jetzt: Ich benutze diesen Befehl
> verständlicherweise meist im math-Modus (dieses Teil mit
> den $ am Anfang und am Ende^^)
> Allerdings klappt das nicht so wie es sollte, also ich
> muss immer folgendes machen:
> $a*$ \vektor{1}{2}{3}$+\lambda$
> oder alternativ:
> $a*\text{\vektor{1}{2}{3}} +\lambda$
>
> Das ist auf die Dauer natürlich irgendwie nervig, deshalb
> würde ich gerne wissen ob man es irgendwie so einstellen
> kann, dass er den Befehl auch kennt wenn er im math-Modus
> ist...
Du hast in die Definition des Kommandos \vektor die Dollarzeichen hineingeschrieben. Folglich wird
\vektor{1}{2}{3}
ersetzt durch
{$\left [ \begin{matrix} 1 \\ 2 \\ 3 \end{matrix} \right ]$}
Deswegen funktioniert dieses Kommando auch nur im Textmodus. Wenn du ein Kommando definieren möchtest, das unabhängig vom aktuellen Modus funktioniert, brauchst du \ensuremath{...}, das seinen Parameter immer im Mathemodus abarbeitet. Also:
\newcommand{\vektor}[3]{\ensuremath{\left[\begin{matrix}#1\\#2\\#3\end{matrix}\right]}}
> Hoffe da weiß jemand wie das möglich ist.
> Und wenn ihr schon dabei seid: Gibt es eine Möglichkeit
> sich ein paar der geschweiften Klammern beim
> Funktionsaufruf zu sparen?
Besser nicht; du handelst du jede Menge unangenehmer Überraschungen damit ein.
Viele Grüße
Rainer
|
|
|
|
|
Hallo!
Sollte es nicht möglich sein, wie hier im Forum nur einen einzigen Parameter da drin zu haben, und dann sowas wie \vektor{1 \\ 2 \\ 3} schreiben zu können? Das würde sowohl die Definition als auch die Benutzung einfacher machen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:57 Mi 11.05.2011 | Autor: | rainerS |
Hallo!
> Hallo!
>
> Sollte es nicht möglich sein, wie hier im Forum nur einen
> einzigen Parameter da drin zu haben, und dann sowas wie
> [mm][code]\vektor{1 \\ 2 \\ 3}[/code][/mm] schreiben zu können? Das
> würde sowohl die Definition als auch die Benutzung
> einfacher machen.
Klar, du kannst das so definieren:
\newcommand{\vektor}[1]{\ensuremath\left[\begin{matrix}#1\end{matrix}\right]}
Nur sollte man immer Klammern um die Parameter bei Aufruf machen.
Viele Grüße
Rainer
|
|
|
|
|
Hmm, stimmt, auf die Idee das so zu machen bin ich garnicht gekommen.
Vielen Dank für die Antworten ;)
|
|
|
|