PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : if-Abfrage: String untersuchen



Boffi23
12-05-2008, 08:58
Hallo

Ich habe mit einen Befehl in LaTeX selbst erstellt, sodass

\befehl{k-q}

mit das ganze Argument tiefgesetzt und (da ausschließlich im Mathe-Modus verwendet) noch fett und normal (\textnormal) setzt. Problem ist nun, dass + und - auch fett gedruckt werden. Kann mir jemand sagen, wie ich in den Befehl einbaue, dass das Argument untersucht wird, ob da + oder - drin steht und falls ja, dass das dann nicht fett gedruckt wird?

Danke

Boffi

voss
12-05-2008, 09:58
[QUOTE=Boffi23;264374]
Ich habe mit einen Befehl in LaTeX selbst erstellt, sodass

\befehl{k-q}

mit das ganze Argument tiefgesetzt und (da ausschließlich im Mathe-Modus verwendet) noch fett und normal (\textnormal) setzt. Problem ist nun, dass + und - auch fett gedruckt werden. Kann mir jemand sagen, wie ich in den Befehl einbaue, dass das Argument untersucht wird, ob da + oder - drin steht und falls ja, dass das dann nicht fett gedruckt wird?


\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath,lmodern}
\makeatletter
\newcommand\befehl[1]{\expandafter\befehl@i#1++\@nil}
\def\befehl@i#1+#2+#3\@nil{%
\def\@temp{#2}
\ifx\@temp\@empty\expandafter\befehl@ii#1--\@nil
\else\text{\bfseries#1}+\text{\bfseries#2}\fi}
\def\befehl@ii#1-#2-#3\@nil{%
\def\@temp{#2}
\ifx\@temp\@empty\text{\bfseries#1}
\else\text{\bfseries#1}-\text{\bfseries#2}\fi}
\makeatother
\begin{document}
\Huge
$A_{\befehl{foobar}}$
$A_{\befehl{foo+bar}}$
$A_{\befehl{foo-bar}}$
$A_{\befehl{foo.bar}}$

\end{document}

Herbert

Boffi23
12-05-2008, 10:06
Danke für die Hilfe. Kannst du mir auch erklären, was da passiert? Interessiert mich einfach.
Außerdem müsste ich es noch erweitern auf auch evtl. 3 oder 4 Argumente, also z.B. \befehl{k+p-q-b}

Achso mir ist noch aufgefallen: ich brauch's eigentlich so, dass \befehl mir auch das A aus deinem beispiel schon schreibt und die Argumente dann tief setzt.

Danke

Boffi23
12-05-2008, 11:08
Hallo nochmal

Habe gesehen, dass es doch so allgemeiner und besser ist.
Habe mir einen neuen Befehl gemacht

\newcommand{\cd}[1]{c_{\befehl{#1}}}

Der ein c schreibt und dann den Befehl ausführt. Brauche ich sowieso mit meheren verschiedenen Variablen (nicht nur "c").

Wäre aber dennoch dankbar, wenn du mir kurz erläutern könntest, was da passier (habe nicht alles durchblickt, auch wenns kurz ist) und wie man das auf 3 oder 4 Variablen erweitern kann.

Danke!

Sabrina.Dankers
12-05-2008, 12:17
Hallo, wenn du statt c auch andere Buchstaben verwenden willst, wäre es doch sinniger das auch als variablen Parameter zu nehmen.



\newcommand{\cd}[2]{{#1}_{\befehl{#2}}}


LG Sabrina

voss
12-05-2008, 15:56
Danke für die Hilfe. Kannst du mir auch erklären, was da passiert? Interessiert mich einfach.
Außerdem müsste ich es noch erweitern auf auch evtl. 3 oder 4 Argumente, also z.B. \befehl{k+p-q-b}

Achso mir ist noch aufgefallen: ich brauch's eigentlich so, dass \befehl mir auch das A aus deinem beispiel schon schreibt und die Argumente dann tief setzt.


das geht, aber da muss man schon etwas Hirnschmalz investieren, wozu
mir die Zeit fehlt. Mach es ersatzweise so: A_{\befehl{k+p}-\befehl{q-b}}.

Herbert

Boffi23
12-05-2008, 16:11
Vielen herzlichen Dank, Herbert! Dann mach ich's so.

@Sabrina: Danke für den Tipp, aber in meinem Dokument ist es praktischer, wenn ich die einzelnen Buchstaben einzeln definiere. Ist zwar mehr in den Kopfzeilen, lässt sich aber im Dokument dann besser lesen und zuordnen!