ein triviales Problem, aber ich finde leider die L�sung nicht.
Innerhalb einer Umgebung soll eine L�nge modifiziert werden, die
au�erhalb definiert wurde - und diese Modifikation soll auch nach
Verlassen der Umgebung noch wirksam sein. Bei TeX w�rde ich
etwas mit \global vermuten, bei \newcommand eventuell mit Stern,
aber wie funktioniert das mit \newlength (falls das �berhaupt
der richtige Ansatz ist!)?
Gru�
J�rgen
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\newlength\FOO
\setlength\FOO{47.11pt}
\begin{document}
FOO: \the\FOO
\begingroup
\global\setlength\FOO{11.47pt}
\endgroup
FOO: \the\FOO
\end{document}
%---------------------------
...Rolf
> \begingroup
> \global\setlength\FOO{11.47pt}
> \endgroup
Dann habe ich ja gef�hlsm��ig gar nicht so falsch gelegen.
Vielen Dank f�r die L�sung.
J�rgen
Na, Du hättest es ja unter Verwendung Deiner Gefühle auch einfach
ausprobieren können. Ansonsten empfehle ich eine Änderung zu meine Test,
nämlich:
\begingroup
\global\FOO=11.47pt
\endgroup
Die andere Variante funktioniert nicht, wenn das Paket "calc" geladen ist.
...Rolf
> Na, Du h�ttest es ja unter Verwendung Deiner Gef�hle auch einfach
> ausprobieren k�nnen.
ACK, einige Tests habe ich auch vorgenommen, aber - laut Murphy
muss es so sein - genau diesen nicht.
Leider habe ich mich etwas zu fr�h gefreut. In Zusammenarbeit mit
TikZ gibt es ein Problem, mit dessen Meldung ich nichts anfangen
kann. Das unten angh�ngte Beispiel liefert
"! You can't use a prefix with '\begingroup'"
Google bleibt dazu leider stumm. Ist das ein (bekanntes) TikZ-
Problem oder mache ich da etwas flasch?
J�rgen
\documentclass[fontsize=11pt,paper=a4,pagesize]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\newlength\FOO
\begin{document}
\begin{tikzpicture}
\global\setlength\FOO{11.47pt}
\end{tikzpicture}
\end{document}
...Rolf
> \begin{tikzpicture}
> \global\FOO=11.47pt\relax
> \end{tikzpicture}
Ah, calc. Danke!
Kann ich ein derartiges Konstrukt (so geht's nicht)
\global\TikZ@FS@entryheight=\heightof{\usebox{\FS@tempbox}}\relax
in einer Zeile realisieren oder muss ich mit \temp@length eine
weitere Zeile spendieren?
\setlength{\templength}{\heightof{\usebox{\FS@tempbox}}}
\global\TikZ@FS@entryheight=\templength\relax
J�rgen
> Rolf Niepraschk wrote:
>
> > \begin{tikzpicture}
> > \global\FOO=11.47pt\relax
> > \end{tikzpicture}
>
> Ah, calc. Danke!
>
> Kann ich ein derartiges Konstrukt (so geht's nicht)
>
> \global\TikZ@FS@entryheight=\heightof{\usebox{\FS@tempbox}}\relax
>
> in einer Zeile realisieren oder muss ich mit \temp@length eine
> weitere Zeile spendieren?
\heightof gibt es nur mit calc:
\setlength{\TikZ@FS@entryheight}{...}
\global\TikZ@FS@entryheight\TikZ@FS@entryheight
Bzw. definiere dir ein \globalsetlength:
\newcommand*{\globalsetlength}[2]{%
\setlength{#1}{#2}%
\global#1=#1\relax
}
Oder ohne \heightof:
\settoheight{\TikZ@FS@entryheight}{\usebox{\FS@tempbox}}
\global\TikZ@FS@entryheight\TikZ@FS@entryheight
> \setlength{\templength}{\heightof{\usebox{\FS@tempbox}}}
> \global\TikZ@FS@entryheight=\templength\relax
Oder so.
Es d�rfte auch funktionieren, das \global direkt zur L�nge zu
schreiben:
\setlength{\global\TikZ@FS@entryheight}{\heightof{...}}
bzw.
\settoheight{\global\TikZ@FS@entryheight}{...}
Das \global sollte jedoch nicht vor den \set...-Makros stehen.
Viele Gr��e
Heiko <ober...@uni-freiburg.de>
> \begingroup
> \global\setlength\FOO{11.47pt}
> \endgroup
Eher (wegen calc):
\begingroup
\setlength{\global\FOO}{11.47pt}
\endgroup
> Oder so.
O. k., besten Dank f�r die ausf�hrliche Antwort.
Das muss ich mir in Ruhe zu Gem�te f�hren; sollten
sich noch Fragen ergeben, melde ich mich wieder.
J�rgen