1 Befehl für verschiedene Größe der Klammern (via Parameter)

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: 1 Befehl für verschiedene Größe der Klammern (via Parameter)

von guy.brush™ » Do 11. Nov 2010, 00:03

Ah, vielen Dank! Gerade das mit mathtools sieht doch sehr gut aus. Falls es dazu noch Probleme geben sollte, werde ich mich diesbezüglich noch einmal melden. Ob ich in Zukunft die *-Variante oder meine obige Variante mit dem Großbuchstaben nehmen werde, weiß ich noch nicht. Ansonsten wäre dieser Teil wohl als abgeschlossen zu betrachten. :)

Ich möchte aber noch eine kleine Frage nachreichen. Zum Definieren neuer und größerer Delimiter als \Bigg habe ich folgendes gefunden: Link 1 und Link 2.
% For CM:

% \def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
% \def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
% \def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
% \def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}

% Even bigger sizes than plain provides.
\def\biggg#1{{\hbox{$\left#1\vbox to20.5pt{}\right.$}}}
\def\bigggl{\mathopen\biggg}
\def\bigggr{\mathclose\biggg}
\def\Biggg#1{{\hbox{$\left#1\vbox to23.5pt{}\right.$}}}
\def\Bigggl{\mathopen\Biggg}
\def\Bigggr{\mathclose\Biggg}
Da der Inhalt des 2. Links auf 2007 datiert ist, wollte ich fragen, ob die Werte so noch passen für die ganzen big, Big, bigg,... Definitionen? Falls ja, dann kann man sich sehr schön weitere definieren und immer um 3.0 pt größer machen.

Was ich als kleine Verständnisfrage noch gerne wissen würde: Wieso wird bei der grundlegenden Definition jeweils der rechte und linke Delimiter jeweils nur mit \left definiert und erhält rechts ein right.?


Viele Grüße,

guy.brush™

Nicht das Rad neu erfinden

von localghost » Mi 10. Nov 2010, 10:24

Die Befehle musst Du dir nicht extra selbst zusammenbauen. Schau dir mal Abschnitt 3.6 (Paired delimiters, S. 19ff) der Anleitung zu mathtools an.


Thorsten

Re: 1 Befehl für verschiedene Größe der Klammern (via Parame

von CrazyHorse » Mi 10. Nov 2010, 09:27

guy.brush™ hat geschrieben: meine Frage ist etwas komplizierter, vermute ich einmal. Ich kam darauf, dass es manchmal im Klammernjungel doch etwas besser wäre, wenn man einen einzelnen Befehl verwendet anstelle von immer \bigl(, \Biggr\}, usw.

Für manche Delimiter, die sich in der Größe anpassen können, habe ich schon 2 Arten von Befehlen definiert. Dies möchte ich an einem Beispiel demonstrieren:
\documentclass{article}
\usepackage{amsmath}

\newcommand\ceil[1]{\lceil #1 \rceil}
\newcommand\Ceil[2][]{%
  \ifx\relax#1\relax
    \left\lceil#2\right\rceil
  \else
    #1\lceil#2 #1\rceil
  \fi}
\begin{document}
$
\ceil{x}   
\Ceil{x}    
\Ceil[\big]{x}   
\Ceil[\Bigg]{x}  
$
\end{document}
Herbert

Re: 1 Befehl für verschiedene Größe der Klammern (via Parame

von Nerd 032F » Mi 10. Nov 2010, 08:32

guy.brush™ hat geschrieben:
\newcommand{\foobar}[2]{\#1l(#2\#1r)}
\[
  \foobar{Bigg}{x}
\]
scheint schon einmal nicht zu funktionieren :).
Dir ist hoffentlich auch klar, warum: \# ist schlicht das Makro, um ein # zu setzen.

Was Du suchst, sind Anweisungen wie \@nameuse aus dem LaTeX-Kern (siehe source2e.pdf):
\newcommand{\foobar}[2][\relax]{%
  \ifx \relax#1\relax% Wenn #1 leer ist oder mit \relax beginnt
    \left(#2\right)%
  \else 
    \@nameuse{#1l}(#2\@nameuse{#1r})%
  \fi
}

1 Befehl für verschiedene Größe der Klammern (via Parameter)

von guy.brush™ » Mi 10. Nov 2010, 01:22

Hallo,

meine Frage ist etwas komplizierter, vermute ich einmal. Ich kam darauf, dass es manchmal im Klammernjungel doch etwas besser wäre, wenn man einen einzelnen Befehl verwendet anstelle von immer \bigl(, \Biggr\}, usw.

Für manche Delimiter, die sich in der Größe anpassen können, habe ich schon 2 Arten von Befehlen definiert. Dies möchte ich an einem Beispiel demonstrieren:
\newcommand{\ceil}[1]{\lceil #1 \rceil}	% Definition einer oberen Gauß-Klammer
\newcommand{\Ceil}[1]{\left\lceil #1 \right\rceil}	% Definition einer sich in der Größe anpassenden oberen Gauß-Klammer
Meine Idee war jetzt, ob sich die Befehle \Ceil und Verwandte noch etwas optimieren lassen. Optimal wäre folgendes Ergebnis:
  1. \Ceil ohne optionalen Parameter macht genau dasselbe wie oben in meiner bisherigen Definition.
  2. \Ceil mit optionalen Parameter lässt sich dann an eine fest gewünschte Größe anpassen, z.B. mit \bigl und \bigr.
Ein paar Beispiele:
\ceil{x}    % keine Größenanpassung (siehe oben)
\Ceil{x}    % Größenanpassung via \left\ceil und \right\ceil
\Ceil[big]{x}    % Größenanpassung mit \bigl\ceil und \bigr\ceil
\Ceil[Bigg]{x}    % Größenanpassung mit \Biggl\ceil und \Biggr\ceil
Ich hoffe, dass die Beispiele mein Vorhaben etwas deutlicher machen. Ich würde dies natürlich nicht nur für \Ceil verwenden, insb. \parens, \brackets und \braces wären auch tolle Ergänzungen. Deshalb wäre es noch optimaler, wenn es 1 Funktion gäbe, die ich dann in der \Ceil und Verwandte Definition aufrufen kann (würde den Code etwas lesbarer halten).

Ich hoffe, es ist verständlich geworden, was ich meine. Ist dies möglich? Und falls ja, wie schwer ist die Implementierung und hat jemand eine Idee, wie das gehen könnte? [Ich hoffe, ihr denkt nicht, dass meine Idee zu abstrus ist :)].

Viele Grüße,

guy.brush™

PS: Also
\newcommand{\foobar}[2]{\#1l(#2\#1r)}
\[
  \foobar{Bigg}{x}
\]
scheint schon einmal nicht zu funktionieren :).

Nach oben