Newcommand mit If Abfrage

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 mit If Abfrage

von u_fischer » Fr 28. Jul 2017, 11:48

\ifcsstrequal ist der falsche Test, du willst \ifstrequal.

von Airfox » Fr 28. Jul 2017, 11:27

Hallo u_fischer,

vielen Dank noch mal für deine Antwort. Jetzt bin ich denke ich schon auf dem richtigen Wege, aber mir machte eine Sache etwas Kopfzerbrechen. Ich glaube hier ist was kaputt,...oder ich übersehe etwas,...

Bitte einmal das Auskommentierte wechseln,...also die die Spalten dadrunter auskommentieren und die dadrüber ein.
\documentclass{article}
\usepackage{xparse}
\usepackage{etoolbox}

\NewDocumentCommand\TwoOptOfThree{O{}O{}}%
{
	\ifstrempty{#1#2}
	{
	\ensuremath{A^{#1 #2}}
	}
	{
%	\ifcsstrequal{#1}{g}{true}{false}
	\ifcsstrequal{#1}{l}{true}{false}
	}
}
\begin{document}

%\TwoOptOfThree[g][b]
\TwoOptOfThree[l][b]
\end{document}
Ich hoffe das ergibt bei dir auch beim zweiten mal ein false und kein true, weil dann stimmt hier irgendwas nicht :?: :?: :?:

Danke noch mal für deine Hilfe :D

von u_fischer » Fr 28. Jul 2017, 00:07

Airfox hat geschrieben:Hallo u_fischer,

danke für die schnelle Antwort. Das hat mich schon etwas weiter gebracht. Ich habe da vielleicht noch eine kleine Rückfrage, vielleicht ist es auch schon zu spät und ich sehe es einfach nicht mehr. Aber warum werden die 2 und 3 nicht richtig hochgestellt?
\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand\TwoOptOfThree{O{}O{}}%
  {\ensuremath{Q^{#1 #2}}}
\begin{document}
\TwoOptOfThree{2}{3}
$Q^{34}$
\end{document}
PS: Danke noch mal für den Tipp mit xparse. Der Autor hierhttps://www.texdev.net/2010/05/23/from- ... ntcommand/ bietet einen perfekten Einstieg, für alle die auch erleuchtet werden wollen :D

Danke schon mal :D
Wenn du einen Befehl mit optionalen Argumenten definierst, musst du eckige Klammern benützen-

von Airfox » Fr 28. Jul 2017, 00:04

Hallo u_fischer,

danke für die schnelle Antwort. Das hat mich schon etwas weiter gebracht. Ich habe da vielleicht noch eine kleine Rückfrage, vielleicht ist es auch schon zu spät und ich sehe es einfach nicht mehr. Aber warum werden die 2 und 3 nicht richtig hochgestellt?
\documentclass{article}
\usepackage{xparse}

\NewDocumentCommand\TwoOptOfThree{O{}O{}}%
  {\ensuremath{Q^{#1 #2}}}
\begin{document}
\TwoOptOfThree{2}{3}
$Q^{34}$
\end{document}
PS: Danke noch mal für den Tipp mit xparse. Der Autor hierhttps://www.texdev.net/2010/05/23/from- ... ntcommand/ bietet einen perfekten Einstieg, für alle die auch erleuchtet werden wollen :D

Danke schon mal :D

von u_fischer » Do 27. Jul 2017, 23:26

Es kommt lli o olli raus.

\if vergleicht die nächsten zwei token, in deinem Fall o aus dem ersten Argument mit o aus dem zweiten. Das ist wahr, und daher wird der Rest von #2 gedruckt (lli) nochmal #1 (o) und dann nochmal #2 (olli).


Abgesehen davon: Schau dir besser xparse an. Und mache Vergleiche mit den Tools von etoolbox oder expl3.

Newcommand mit If Abfrage

von Airfox » Do 27. Jul 2017, 22:57

Hallo Zusammen,

was ich machen will ist eigentlich einfach:
Ich möchte gerne ein Kommando schreiben das man benutzen kann mit
\msc
\msc{}{2}
\msc{g}{2}
Dabei soll je nach dem was dort steht etwas anderes passiert. Was ich probiert habe ist folgendes:
\documentclass{article}
\usepackage{graphicx}

\newcommand{\msc}[2]{
\if#1#2{
#1 #2}
\else{
oh verdammt}
\fi
}

\begin{document}
\msc{o}{olli}
\end{document}
Mein Problem ist erstmal das ich das Ergebnis nicht mal verstehe:

lli i olli

das dürfte da in gar keinem Fall dort stehen :O :?:

Nach oben