PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LateX Makros!



trunksen
23-10-2011, 17:11
Hi!

Ich habe Probleme bei LateX und Makros!
Es geht darum, mit \newcommand einen Makro \abs zu schreiben, welcher bei \abs{x} das Zeichen |x| erzeugt und bei \abs{\frac{x}{y}} |x/y| erzeugt!

So, ich bin soweit gekommen:


\newcommand{\abs}[1]{$|x|$}


Jetzt habe ich aber ein Problem mit dem "überladen" !
Ich weiss, dass ich mit [num] angeben kann, wieviele Argumente das neue command haben kann, aber wie kann ich jetzt diese Überlagerung!
Ich habe probiert:

\newcommand{\abs{\frac{x}{y}}}[2]{$|\frac{x}{y}|$}
Allerdings kommt da nur ein 'already defined' Error!

Wie könnte ich das Problem anders lösen?
Danke im Vorhinein für die Antwort(en)

mfg trunksen

e271
23-10-2011, 17:23
Ich würde das so lösen:
\newcommand{\abs}[1]{$\left|#1\right|$
Dann kannst Du eingeben:

\abs{x}
\abs{\frac{1}{2}}
cu
e271

mechanicus
23-10-2011, 17:37
Hi,


\documentclass{article}
\usepackage{amsmath}
\usepackage{xfrac}
\newcommand{\abs}[1]{%
\begingroup
\let\frac\sfrac
\ensuremath{\left\lvert\relax#1\relax\right\rvert} %
\endgroup
}
\begin{document}
\abs{3}

\abs{\frac{4}{5}}
\end{document}

Marco

trunksen
23-10-2011, 17:51
Vielen Dank, aber bei mechanicus Lösung mir kommt da die Fehlermeldung: xfrac.sty not found!
Außerdem verstehe ich nicht, was:


\begingroup
\let\frac\sfrac
\ensuremath{\left\lvert\relax#1\relax\right\rvert} %
\endgroup

macht!

@ e271: gute Lösung, aber was macht macht das #1!
So wie ich das interpretieren würde, ist es soetwas wie ein Platzhalter für den \abs Befehl!
Also wenn man \abs{\sum...} machen würde, würde es auch funktionieren oder?
Also |\sum| ausgeben!

mfg trunksen

mechanicus
23-10-2011, 17:56
Dann solltest du eine LateX updaten.

Eine Einführung zu lesen kann manchmal hilfreich sein. :rolleyes:

localghost
23-10-2011, 18:03
Aus der Anleitung von mathtools (http://ctan.org/pkg/mathtools).

\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{mathtools} % lädt »amsmath«

\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}

\begin{document}
\begin{align}
\abs{x} &\neq \norm{x} \\
\abs*{\frac{x}{y}} &\neq \norm*{\frac{x}{y}}
\end{align}
\end{document}


Thorsten