PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Calc



spacejamiri
10-08-2006, 16:50
Hallo zusammen,

bei einer Berechnung, die innerhalb einer newenvironment stattfinden soll, hab ich Probleme, wenn die Berechnung im End-Teil stattfindet, aber alles läuft gut, wenn sie stattdessen im Begin-Teil durchgeführt wird... Kann mir jemand helfen, wie ich das auch im End-Teil zum laufen kriege?

Danke im voraus für alle Tipps!
Spacejamiri


\documentclass[12pt]{scrreprt}

%Package für Berechnungen
\usepackage{calc}

\newenvironment{Nichts}[1]
{
\begin{center}
}
{
\vspace{-#1 * \real{.45}}\\
\end{center}
}

% eigentliches Dokument
\begin{document}
\vspace*{5cm}
Text...

\begin{Nichts}{5cm}
Text in der Umgebung
\end{Nichts}

weiterer Text

\end{document}

countbela666
10-08-2006, 18:22
Moin,

Parameter können nur im Anfangsbereich einer selbstdefinierten Umgebung verwendet werden. Üblicherweise arbeitet man hier mit einer savebox um den Parameter zu speichern und im Endbereich wiederzuverwenden, in diesem Fall würde sich jedoch eine einfache Variable anbieten:

...
\newlength{\mylen}
\newenvironment{Nichts}[1]
{
\setlength{\mylen}{-#1*\real{.45}}
\begin{center}
}
{
\vspace{\mylen}\\
\end{center}
}
...Grüße,
Marcel

RedCloud
10-08-2006, 22:58
[QUOTE=spacejamiri]
bei einer Berechnung, die innerhalb einer newenvironment stattfinden soll, hab ich Probleme, wenn die Berechnung im End-Teil stattfindet, aber alles läuft gut, wenn sie stattdessen im Begin-Teil durchgeführt wird... Kann mir jemand helfen, wie ich das auch im End-Teil zum laufen kriege?


\makeatletter
\newenvironment{Nichts}[1]{\begin{center}\@tempdima=#1}
{\vspace{-.45\@tempdima}\\
\end{center}}
\makeatother


rc

spacejamiri
11-08-2006, 09:40
...
\newlength{\mylen}
\newenvironment{Nichts}[1]
{
\setlength{\mylen}{-#1*\real{.45}}
\begin{center}
}
{
\vspace{\mylen}\\
\end{center}
}
...
Grüße,
Marcel

Klappt bei mir irgendwie nicht. \setlength selbst scheint keinen Fehler zu geben. Aber der Aufruf von \mylen ergibt "Undefined control sequence <argument> \mylen" ... Brauch ich irgendein Paket?

Grüsse
Martin

spacejamiri
11-08-2006, 09:46
[QUOTE=spacejamiri]
bei einer Berechnung, die innerhalb einer newenvironment stattfinden soll, hab ich Probleme, wenn die Berechnung im End-Teil stattfindet, aber alles läuft gut, wenn sie stattdessen im Begin-Teil durchgeführt wird... Kann mir jemand helfen, wie ich das auch im End-Teil zum laufen kriege?


\makeatletter
\newenvironment{Nichts}[1]{\begin{center}\@tempdima=#1}
{\vspace{-.45\@tempdima}\\
\end{center}}
\makeatother


rc

Yepp, das funktioniert! Danke schön! Nur so zum Spass und damit ich weiss, was ich hierbei tue... Gehe ich recht in der Annahme, dass ich mit dem \@tempdima eine temporäre Einheit schaffe und diese dann später mit -0.45 Längen verwende? Bei "Nein" tue ich 5€ ins Schweinderl :D

Grüsse
Martin

RedCloud
11-08-2006, 11:18
Yepp, das funktioniert! Danke schön! Nur so zum Spass und damit ich weiss, was ich hierbei tue... Gehe ich recht in der Annahme, dass ich mit dem \@tempdima eine temporäre Einheit schaffe und diese dann später mit -0.45 Längen verwende? Bei "Nein" tue ich 5€ ins Schweinderl :D


\@tempdima ist LaTeX-intern schon als Länge festgelegt, sonst hätte ich selbst eine Länge definieren müssen. Und man muss hier zwischenspeichern, da die Variable #1 nur im öffnenden Teil eines newenvironment bekannt ist.

rc