Seite 1 von 1

mathtools: Umdefinieren von DeclarePairedDelimiter-Befehlen

Verfasst: Fr 10. Mai 2013, 01:45
von guy.brush™
Hallo,

mein Problem ist folgendes: Ich habe mittlerweile in Header Dateien meine Standarddefinitionen fuer fast alle moeglichen Dinge (aus der mathematischen Welt) abgelegt, unter anderem eine fuer Mengen. Jetzt moechte ich von dieser Standarddefinition abweichen. Fuer die Definition von Mengen habe ich \DeclarePairedDelimiterX aus dem mathtools Paket verwendet und scheinbar gibt es hier kein "RedeclarePairedDelimiter".

Hier ein kleines Beispiel:
\documentclass[a4paper,11pt]{scrartcl}
\usepackage[utf8]{inputenc}

\usepackage{mathtools}
\usepackage{amsmath}

% Das steht irgendwo in einer Headerdatei
\DeclarePairedDelimiterX{\set}[2]{\lbrace}{\rbrace}%		% Menge
  {#1 \;\delimsize\vert\; #2}


% Änderung der Definition in der jeweiligen Datei bzw. in dem jeweiligen Projekt
\DeclarePairedDelimiterX{\set}[2]{\lbrace}{\rbrace}%		% Menge
  {#1 : #2}

\begin{document}

\[
  Y
    := \set*{x \in X}{\sum_{i = 0}^{n} x \cdot f(i) = 42}
\]

\end{document}
Wenn ihr das durchlaufen lasst, wird es eine Fehlermeldung geben, da "\set" schon zuvor definiert worden ist. Gibt es jetzt eine angenehme Methode, fuer ein einzelnes Projekt auch derartige Befehle umzudefinieren? Ansonsten finde ich \DeclarePairedDelimiter und \DeclarePairedDelimiterX eine echt tolle Sache.


Nebenbei: Ist "\set" ein guter Name fuer den Befehl? Er war scheinbar nicht belegt, aber es klingt nach einem Standardwort im Englischen und ich war verwundert, dass keines meiner vielen Pakete es bisher definiert hat.


Viele Gruesse

guy.brush

Verfasst: Fr 10. Mai 2013, 07:12
von Johannes_B
So ganz spontan würd ich es so machen:
\documentclass[a4paper,11pt]{scrartcl}
\usepackage[utf8]{inputenc}

\usepackage{mathtools}
\usepackage{amsmath}


\DeclarePairedDelimiterX{\set}[2]{\lbrace}{\rbrace}%      % Menge
  {#1 \;\delimsize\vert\; #2}


%Makroname ersetzt
\DeclarePairedDelimiterX{\setx}[2]{\lbrace}{\rbrace}%      % Menge
  {#1 : #2}

\let\set\setx

\begin{document}

\[
  Y
    := \set*{x \in X}{\sum_{i = 0}^{n} x \cdot f(i) = 42}
\]

\end{document} 

Hier findest du noch andere Möglichkeiten bzw. Unterschiede und Gemeinsamkeiten. Ich persönlich kenne mich damit nicht aus, werde mir das jetzt aber mal entspannt zu Gemüte führen.

Verfasst: So 12. Mai 2013, 15:33
von guy.brush™
Hallo,

super, vielen Dank dir! Da haette ich auch fast von alleine drauf kommen koennen :).

Wer noch einen Alternativvorschlag hat oder wer (beliebte) Pakete oder Funktionen kennt, die mit einem Befehlsnamen "\set" kollidieren wuerden, kann dies gerne noch posten, Interesse meinerseits ist immer da ;). Ich stelle das Thema aber schon einmal auf "beantwortet", da die Loesung von Johannes_B funktioniert.

Den Link zu \edef vs. \let schaue ich mir auch noch einmal an, wobei ich in der genauen Mechanik von \def, \edef, \let etc. noch gar nicht viel darueber weiss.