goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Newcommand mit If Abfrage

 

Airfox
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 16.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2017, 22:57     Titel: Newcommand mit If Abfrage
  Antworten mit Zitat      
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:

Code • Öffne in Overleaf

\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 Question
Private Nachricht senden Benutzer-Profile anzeigen

u_fischer
Forum-Meister
Forum-Meister

Beiträge: 3555
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2017, 23:26     Titel:
  Antworten mit Zitat      
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.
_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

Airfox
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 16.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2017, 00:04     Titel:
  Antworten mit Zitat      
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?

Code • Öffne in Overleaf

\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/f.....nd-to-newdocumentcommand/ bietet einen perfekten Einstieg, für alle die auch erleuchtet werden wollen Very Happy

Danke schon mal Very Happy
Private Nachricht senden Benutzer-Profile anzeigen

u_fischer
Forum-Meister
Forum-Meister

Beiträge: 3555
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2017, 00:07     Titel:
  Antworten mit Zitat      
Airfox hat Folgendes 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?

Code • Öffne in Overleaf

\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/f.....nd-to-newdocumentcommand/ 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-
_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

Airfox
Forum-Newbie
Forum-Newbie

Beiträge: 3
Anmeldedatum: 16.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2017, 11:27     Titel:
  Antworten mit Zitat      
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.

Code • Öffne in Overleaf

\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 Question Question Question

Danke noch mal für deine Hilfe Very Happy
Private Nachricht senden Benutzer-Profile anzeigen

u_fischer
Forum-Meister
Forum-Meister

Beiträge: 3555
Anmeldedatum: 22.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2017, 11:48     Titel:
  Antworten mit Zitat      
\ifcsstrequal ist der falsche Test, du willst \ifstrequal.
_________________

Ulrike Fischer
www.troubleshooting-tex.de
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de