\newcommand -> subset und superset an bestimmter Position

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: \newcommand -> subset und superset an bestimmter Position

von guy.brush™ » Mi 14. Nov 2012, 23:57

Ich vermute, du meinst, dass \cos(x)_i zu \oldcos_i\left( x \right) werden soll, oder?^^

Schau dir aber mal noch das Paket "xparse" an, damit sollte das sehr leicht moeglich sein. Du kannst dir da sehr maechtige Befehle mit zusammenbasteln. Mit dem Befehl \NewDocumentCommand und Konsorten kannst du dir das dann definieren und hast auch mehr optionale Parameter zur Verfuegung. Du kannst auch sagen, dass der optionale Parameter mit einem "_" beginnen muss/soll.

Die Version wuerde ich jetzt schoener finden als die Definition von rais :).

von p91 » Mi 14. Nov 2012, 23:18

Hi,

der Code von Reiner funktioniert gut solange man nur ein Subset hat, dass nur ein Zeichen lang ist.
hat man mehr Zeichen muss eine kleine Korrektur eingefügt werden und zwar:
\newcommand*\cos@ii[5]{%
  \oldcos{%
    \ifx\relax#2\relax\else#2{#3}\fi
    \ifx\relax#4\relax\else#4{#5}\fi
    \left(#1\right)}%
} 

Re: \newcommand -> subset und superset an bestimmter Posi

von rais » So 29. Apr 2012, 11:42

p90 hat geschrieben: da ich an meinen Operatoren gerne Klammern habe, habe ich bisher soetwas verwendet.
\let\oldcos\cos
\renewcommand*{\cos}[1]{\oldcos{\left( #1\right)}}
Poste bitte (zukünftig) vollständige Minimalbeispiele, keine Schnippsel!
p90 hat geschrieben: Nun möchte ich dafür sorgen, dass
\cos{w}_i
zu
\cos_i \left( w \right)

wird statt
\cos \left( w \right)_i

Wie bekomme ich das hin?
wenn ich Dich recht verstehe, etwa so:
\documentclass{article}
\let\oldcos\cos
\makeatletter
\newcommand*\cos@ii[5]{%
  \oldcos{%
    \ifx\relax#2\relax\else#2#3\fi
    \ifx\relax#4\relax\else#4#5\fi
    \left(#1\right)}%
}
\newcommand*\cos@i[3]{%
  \@ifnextchar_{\cos@ii{#1}{#2}{#3}}{%
    \@ifnextchar^{\cos@ii{#1}{#2}{#3}}{\cos@ii{#1}{#2}{#3}{}{}}}%
}
\renewcommand*\cos[1]{%
  \@ifnextchar^{\cos@i{#1}}{%
    \@ifnextchar_{\cos@i{#1}}{\cos@i{#1}{}{}}}%
}
\makeatother
\begin{document}
\[
  \cos{w}\quad\cos{w}_i\quad\cos{w}^j\quad\cos{w}^j_i\quad\cos{w}_i^j
\]
\end{document}
MfG
Rainer

\newcommand -> subset und superset an bestimmter Position

von p90 » Sa 28. Apr 2012, 17:48

Hi,

da ich an meinen Operatoren gerne Klammern habe, habe ich bisher soetwas verwendet.
\let\oldcos\cos
\renewcommand*{\cos}[1]{\oldcos{\left( #1\right)}}
Nun möchte ich dafür sorgen, dass
\cos{w}_i
zu
\cos_i \left( w \right)

wird statt
\cos \left( w \right)_i

Wie bekomme ich das hin?

MfG


p90

Nach oben