Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Längen innerhalb einer Umgebung verändern

2 views
Skip to first unread message

Jürgen Göbel

unread,
Nov 23, 2009, 2:55:26 AM11/23/09
to
Moin,

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

Rolf Niepraschk

unread,
Nov 23, 2009, 4:01:56 AM11/23/09
to
Am 23.11.2009 08:55, schrieb Jürgen Göbel:
> Moin,
>
> 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!)?
>
%---------------------------
\listfiles
\documentclass[fontsize=11pt,paper=a4,pagesize]{scrartcl}

\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

Jürgen Göbel

unread,
Nov 23, 2009, 4:26:52 AM11/23/09
to
Rolf Niepraschk wrote:

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

Rolf Niepraschk

unread,
Nov 23, 2009, 4:29:05 AM11/23/09
to
Am 23.11.2009 10:26, schrieb Jürgen Göbel:
> Rolf Niepraschk wrote:
>
>> \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.

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

Jürgen Göbel

unread,
Nov 23, 2009, 5:00:10 AM11/23/09
to
Rolf Niepraschk wrote:

> 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 Niepraschk

unread,
Nov 23, 2009, 5:04:24 AM11/23/09
to
Am 23.11.2009 11:00, schrieb Jürgen Göbel:
...

>
> \begin{tikzpicture}
> \global\setlength\FOO{11.47pt}
> \end{tikzpicture}
>
\begin{tikzpicture}
\global\FOO=11.47pt\relax
\end{tikzpicture}

...Rolf

Jürgen Göbel

unread,
Nov 23, 2009, 5:34:33 AM11/23/09
to
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?

\setlength{\templength}{\heightof{\usebox{\FS@tempbox}}}
\global\TikZ@FS@entryheight=\templength\relax

J�rgen

Heiko Oberdiek

unread,
Nov 23, 2009, 6:33:24 AM11/23/09
to
J�rgen G�bel <jg8...@yahoo.de> wrote:

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

Heiko Oberdiek

unread,
Nov 23, 2009, 6:34:52 AM11/23/09
to
Rolf Niepraschk <Rolf.Ni...@gmx.de> wrote:

> \begingroup
> \global\setlength\FOO{11.47pt}
> \endgroup

Eher (wegen calc):
\begingroup
\setlength{\global\FOO}{11.47pt}
\endgroup

Jürgen Göbel

unread,
Nov 23, 2009, 6:50:05 AM11/23/09
to
Heiko Oberdiek wrote:

> 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


0 new messages