Definition einer Variable und Nutzung dieser in newcommand

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Wiedehopf
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Fr 31. Jan 2014, 14:59
Wohnort: Ruhrgebiet

Definition einer Variable und Nutzung dieser in newcommand

Beitrag von Wiedehopf »

Hallo!

Ich nutze Latex noch nicht so lange. Deswegen bitte ich meine evtl. unpräzise Ausdrucksweise zu entschuldigen.

Ich möchte gerne eine Variable definieren. Diese möchte ich anschließend in einem neuen Befehl weiter nutzen, um z.B. einen Kasten mit einem festen Verhältnis der Länge und Breite zu erzeugen. 0.5#1 funktioniert nicht, da mein Latex das nicht ausrechnet. Deswegen wollte ich den Umweg über die Variable machen...

Z.B.
\newcommand{\weite}[1]{#1}
\newcommand{\Kasten}{
\setlength\weite{#1}
\fbox{
\parbox[0.5\weite]{weite}{Text}
}}

Grüße,
Wiedehopf

Noch so einer

Beitrag von Noch so einer »

Präfixe funktionieren nur mit Längen, also
\newlength{\weite}
\newcommand*{\Kasten}[1]{%
  \setlength{\weite}{#1}%
  \fbox{%
    \parbox[c][.5\weite][c]{\weite}{Text}%
  }%
}
Ich habe auch gleich die signifikanten Leerzeichen in Folge von Zeilenenden aus Deinem Beispiel beseitigt und die Syntax des \parbox-Befehls korrigiert (siehe usrguide oder eine gute LaTeX-Einführung). Außerdem hast Du den Argumentplatzhalter komplett falsch verwendet. Wenn Du \Kasten ohne Argument definierst, kannst Du in dessen Definition kein #1 verwenden. Kein Argument → kein Platzhalter.

Man könnte aber auch mit \dimexpr (siehe e-TeX-Manual) oder dem Paket calc arbeiten und so die Länge \weite einsparen.

Noch zwei Tipps: Du solltest Dich mit einer ausführlichen LaTeX-Einführung beschäftigen. In einer solchen wird normalerweise auch das Konzept von Längen und wie man damit arbeitet erklärt. Makros (aka Befehle, Anweisungen) sind etwas ganz anders und funktionieren anders. Auch die Funktionsweise von \newcommand mit Argument sollte erklärt werden.

Außerdem solltest Du immer ein vollständiges Minimalbeispiel angeben und Dein eigentliches Problem beschreiben, nicht nur Dein Problem mit Deinem Lösungsversuch. Gerade als Anfänger ist sonst die Gefahr groß, dass Du etwas grauenvoll umständliches machst und damit von Problem zu Problem stolperst, obwohl das eigentliche Problem vielleicht ganz einfach zu lösen wäre. Den Frust willst Du Dir und uns nicht antun. Es gibt auch eine Anleitung zur Erstellung nicht nur aber auch für Anfänger. Dort ist auch kurz angegeben, wozu das Minimalbeispiel gut ist.

Antworten