>
> Meine Frage
> -----------
>
> Kennt Mathematica ein Konstrukt,
>
> - mit dem man _Textgroessen skalierbar_ machen kann,
Das Handbuch sagt dazu:
You can also explicitly specify how text should be formatted by using
options such as FontSize and FontFamily. Note that FontSize gives the
*absolute size* of the font to use, measured in units of printer's
points,
with one point being 1/72 inches. If you resize a plot, the text in it
will *not by default change size*: to get text of a different size you
----------------------------
must explicitly specify a new value for the FontSize-option.
Hervorhebungen von mir. Die Antwort: nein.
>
> so dass die Platzaufteilung zwischen
>
> zwischen
>
> Plotrahmen,
> Achsenmarken und
> den Achsen-Beschriftungen ( Texten )
>
> _immer gleich bleibt_ ,
>
> _un_abhaengig von der gerade gewaehlten Darstellungsgroesse des Plots ?
>
> Wie koennte man sich diese Funktionalitaet selbst programmieren ?
>
Die ImageSize Option auswerten und dann aus FullGraphics die Fonts
hochskalieren ??
z. B.
ScaleText[Text[a_, b_], scale_?NumericQ] :=
Text[a, b, TextStyle -> {FontSize -> 10*scale}]
ScaleText[Text[a_, b_, c_List], scale_?NumericQ] :=
Text[a, b, c, TextStyle -> {FontSize -> 10*scale}]
ScaleText[Text[a_, b_, c___List, opt__?OptionQ], scale_?NumericQ] /;
FreeQ[{opt}, TextStyle] :=
Text[a, b, c, opt, TextStyle -> {FontSize -> 10*scale}]
ScaleText[Text[a_, b_, c___List, opt__?OptionQ], scale_?NumericQ] :=
Module[{txtsty},
txtsty = TextStyle /. {opt};
If[FreeQ[txtsty, FontSize],
AppendTo[txtsty, TextStyle -> {FontSize -> 10*scale}],
txtsty = txtsty /. (FontSize -> s_) :> (FontSize ->
scale*s)];
Text[a, b, c, opt /. (TextStyle -> s_) -> (TextStyle -> txtsty)]
]
SkaleFonts[gr_, newsize_] :=
Module[{imgsize, aratio},
{imgsize, aratio} = {ImageSize, AspectRatio} /. AbsoluteOptions[gr];
If[imgsize === Automatic, imgsize = 288];
imgsize *= aratio;
FullGraphics[gr] /. a_Text :> ScaleText[a, newsize]
]
ScaleFonts[] sollte dann allen Text[] um den relativen Faktor
newsize vergr"ossern. Also
gr = Plot[Sin[x], {x, 0, Pi},
Epilog -> {Text["hallo", {1.5, 0.5},
TextStyle -> {FontSize -> 16, FontSlant -> 0.6}]}]
und schwups:
Show[SkaleFonts[gr, 1.4]]
wird alles gr"osser ...
Gruss
Jens