Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups de.comp.* Forum > Newsgroup de.comp.text.tex
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup de.comp.text.tex TeX, LaTeX & Co.: Fragen und Antworten, Diskussion und Codeschnipsel.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11-06-2009, 08:04 AM
Friedrich Vosberg
 
Beiträge: n/a
Standard Text stetig verkleinern

Moin.

Ich möchte, dass die Schriftgröße eines Textes sich von oben nach unten
von Zeile zu Zeile verkleinert. Die erste Zeile soll in 18 Punkt sein,
die letzte in 6 Punkt. Gibt es eine Umgebung, die das kann?

DiV und Gruß. Friedrich Vosberg

--
Kinderlärm ist Zukunftsmusik.

vatolin (at) me (dot) com
Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 11-06-2009, 10:19 PM
Rolf Niepraschk
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

Friedrich Vosberg schrieb:
> Moin.
>
> Ich möchte, dass die Schriftgröße eines Textes sich von oben nach unten
> von Zeile zu Zeile verkleinert. Die erste Zeile soll in 18 Punkt sein,
> die letzte in 6 Punkt. Gibt es eine Umgebung, die das kann?
>


Vielleicht kann man basierend auf "lineno" etwas bauen. Jede Zeile wird
bei diesem Paket einzeln behandelt (Nummern werden hinzugefügt).
Vermutlich könnte man das Ausgeben der Zeilennummern ersetzen durch das
Ändern der Schriftgröße. Nur so ins Blaue hinein...

....Rolf
Mit Zitat antworten
  #3  
Alt 11-06-2009, 11:04 PM
Heiko Oberdiek
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

fvosberg*me.com (Friedrich Vosberg) wrote:

> Ich möchte, dass die Schriftgröße eines Textes sich von oben nach unten
> von Zeile zu Zeile verkleinert. Die erste Zeile soll in 18 Punkt sein,
> die letzte in 6 Punkt. Gibt es eine Umgebung, die das kann?


AFAIK nein.

Was soll mit der Zeilenlänge passieren?
Wenn sie analog schrumpft, könnte man
über das Skalieren arbeiten:
Man setzt den Text, zerpflückt ihn von
Zeile zu Zeile (\vsplit) und skaliert jede
Zeile etwas kleiner.

Ansonsten könnte man mit \parshape arbeiten,
so dass die Zeilen immer länger werden, dann
zerpflückt man wieder zuvor und schrumpft
die Zeilen wieder auf die Textbreite.
Oder man schreibt sich einen Soul-Treiber, der
den Text silbenweise aufspaltet. Dann fügt
man solange Silben zur ersten Zeile, bis diese
voll ist und gibt diese aus. Dann schaltet man
auf eine kleinere Schriftart und füllt die
zweite Zeile. Das geht dann so weiter, bis
der Text aufgebraucht ist. Die Zeilenzahl
muss man aus der Gesamtlänge schätzen.
Für ein genaueres Ergebnis kann man den
Prozess iterieren, damit in der letzten Zeile
die Schrift nicht zu klein oder zu groß ist.

Viele Grüße
Heiko <oberdiek*uni-freiburg.de>
Mit Zitat antworten
  #4  
Alt 11-07-2009, 10:07 AM
Keks Dose
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

On 6 Nov., 09:04, fvosb...*me.com (Friedrich Vosberg) wrote:
> Moin.
>
> Ich möchte, dass die Schriftgröße eines Textes sich von oben nach unten
> von Zeile zu Zeile verkleinert. Die erste Zeile soll in 18 Punkt sein,
> die letzte in 6 Punkt. Gibt es eine Umgebung, die das kann?
>
> DiV und Gruß. Friedrich Vosberg
>
> --
> Kinderlärm ist Zukunftsmusik.
>
> vatolin (at) me (dot) com


Was willst Du schreiben? AGBs?
Mit Zitat antworten
  #5  
Alt 11-07-2009, 11:32 AM
Friedrich Vosberg
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

Keks Dose <cookie170*web.de> wrote:

> Was willst Du schreiben? AGBs?


;-)

Ich will eine Todo-Liste generieren, deren Einträge aus einer Datenbank
bezogen werden. In dieser Datenbank haben die zuletzt eingetragenen
Aufgaben die geringste Priorität; je älter eine Aufgabe ist, umso höher
ist die Priorität. Aus dieser Datenbank wird täglich einen Todo-Liste
erstellt. Darin sollen die am dringlichesten zu erledigenden Aufgaben
oben in großer Schrift stehen und die weniger dringlichen dann nach
unten in immer kleinerer Schrift dargestellt werden.

Zugegeben, dass ist eine etwas verspielte Herangehensweise.

Aber vielleicht kann man das ja hin bekommen. Die Idee von Heiko halte
ich für einen durchaus Erfolg versprechenden Lösungsansatz.

Gruß. Friedrich

--
Kinderlärm ist Zukunftsmusik.

vatolin (at) me (dot) com
Mit Zitat antworten
  #6  
Alt 11-07-2009, 11:54 AM
Gaius Pupus
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

fvosberg*me.com (Friedrich Vosberg) writes:


> sollen die am dringlichesten zu erledigenden Aufgaben oben in großer
> Schrift stehen und die weniger dringlichen dann nach unten in immer
> kleinerer Schrift dargestellt werden.



Eine nicht zeilenweise, sondern eintragsweise Verkleinerung wäre ja
geradezu trivial, mit relsize ...

g.
Mit Zitat antworten
  #7  
Alt 11-07-2009, 01:06 PM
Ulrich D i e z
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

Heiko Oberdiek schrieb:

> Die Zeilenzahl
> muss man aus der Gesamtlänge schätzen.


Mir kommt es so vor, als ob das der interessanteste
Teil an der Sache sein könnte, denn zum einen
ist die Zeilenanzahl auch durch die Schriftgröße
bedingt, zum anderen hängt in der von Friedrich
gestellten Aufgabe die Schriftgröße der jeweiligen
Zeile auch von der sich ergebenden Zeilenanzahl ab.

Wie könnte man beim Schätzen vorgehen?

Den Text in allen infragekommenden Schriftgrößen
setzen und jeweils die Zeilen zählen und den Mittelwert
daraus bilden?
Bzw den Text in der grössten und der kleinsten Skalierung
setzen und den Mittelwert aus den beiden sich dabei
jeweils ergebenden Zeilenanzahlen bilden?

Damit hätte man vielleicht einen Richtwert für die
Zeilenanzahl und könnte vielleicht ausrechnen, um
wieviel von einer Zeile zur nächsten die Schrift
verkleinert werden muss bzw nach wievielen Zeilen
die nächstkleinere Schrift verwendet werden soll.

Ulrich
Mit Zitat antworten
  #8  
Alt 11-07-2009, 08:57 PM
Heiko Oberdiek
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

Ulrich D i e z <eu_angelion*web.de> wrote:

> Heiko Oberdiek schrieb:
>
> > Die Zeilenzahl
> > muss man aus der Gesamtlänge schätzen.

>
> Mir kommt es so vor, als ob das der interessanteste
> Teil an der Sache sein könnte, denn zum einen
> ist die Zeilenanzahl auch durch die Schriftgröße
> bedingt, zum anderen hängt in der von Friedrich
> gestellten Aufgabe die Schriftgröße der jeweiligen
> Zeile auch von der sich ergebenden Zeilenanzahl ab.
>
> Wie könnte man beim Schätzen vorgehen?


In der ersten Zeile bekommt man $z$ viel Text unter.
In der letzen Zeile mit 1/3 Schritftgröße geht dreimal
soviel: $3z$. Es seien $n$ Zeilen gegeben.
Dann kann man ein Rechteck identifizieren, jede
Zeile hat mindestend $z$ viel Text, Fläche = $nz$.
Übrig bleibt ein rechtwinkliges Dreieck, deren Schenkel
$n$ und $2z$ sind, Fläche = $\frac{n*2z}{2} = nz$.
Zusammen wird die Gesamtlänge $G$ auf die
Fläche $2nz$ verteilt. $z$ und $G$ sind bekannt,
so ist die Zeilenzahl $n = \frac{2G}{z}$.

Für kleine $n$ ist die Flächennäherung nicht so toll,
so dass man die ersten Werte besser explizit abfragt.
if G == 0 then n=0
elsif G <= z then n = 1
elsif G <=4z then n = 2
elsif n = ceil(2G/l)

z ist dabei die Zeilenlänge,
G die Gesamtlänge des Textes in der Anfangsschriftgröße.

Viele Grüße
Heiko <oberdiek*uni-freiburg.de>
Mit Zitat antworten
  #9  
Alt 11-07-2009, 09:04 PM
Friedrich Vosberg
 
Beiträge: n/a
Standard Re: Text stetig verkleinern

Gaius Pupus <pupus*invalid.invalid> wrote:

> Eine nicht zeilenweise, sondern eintragsweise Verkleinerung wäre ja
> geradezu trivial, mit relsize ...


Dem gegenüber ist der Ansatz, eine Umgebung zu haben, in der unabhängig
von manuellen Zeilenumbrüchen, Absätzen o.dgl.m. die Zeichengröße jeder
folgenden Zeile auf dem aktuellen Blatt gleichmäßig gemindert wird,
universaler.

Gruß. Friedrich

--
Kinderlärm ist Zukunftsmusik.

vatolin (at) me (dot) com
Mit Zitat antworten
  #10  
Alt 11-18-2009, 04:09 PM
Robert Hartmann
 
Beiträge: n/a
Standard Re: Text stetig verkleinern [Algorithmus Seitenberechnung]

Heiko Oberdiek schrieb:
> Ulrich D i e z <eu_angelion*web.de> wrote:
>
>> Heiko Oberdiek schrieb:
>>
>>> Die Zeilenzahl
>>> muss man aus der Gesamtlänge schätzen.

>> Mir kommt es so vor, als ob das der interessanteste
>> Teil an der Sache sein könnte, denn zum einen
>> ist die Zeilenanzahl auch durch die Schriftgröße
>> bedingt, zum anderen hängt in der von Friedrich
>> gestellten Aufgabe die Schriftgröße der jeweiligen
>> Zeile auch von der sich ergebenden Zeilenanzahl ab.
>>
>> Wie könnte man beim Schätzen vorgehen?

>
> In der ersten Zeile bekommt man $z$ viel Text unter.


Nehmen wir also an, jede Zeile ist maximal mit Text befüllt.

$z$ ist also die Anzahl von Zeichen (druckbare Zeichen
einschließlich Leerzeichen), die bei einer
Festbreitenschrift den Platz (in der Breite) $p$ einnehmen.

> In der letzen Zeile mit 1/3 Schritftgröße geht dreimal
> soviel: $3z$. Es seien $n$ Zeilen gegeben.


Für die Zeile $k$ gilt, wenn $A(i)$ die Anzahl der
Zeichen in der Zeile $i$ angibt:

$A(k-1) \leq A(k) \leq A(k+1)$ für $2 \leq k \leq n-1$


> Dann kann man ein Rechteck identifizieren, jede
> Zeile hat mindestend $z$ viel Text, Fläche = $nz$.


Genauer wäre also die Fläche des Rechtecks = $n*(z*p)$

> Übrig bleibt ein rechtwinkliges Dreieck, deren Schenkel
> $n$ und $2z$ sind, Fläche = $\frac{n*2z}{2} = nz$.


Den Schritt sehe ich nicht so:
Ein rechtwinkliges (leeres) Dreieck kann nur dann
in das Rechteck eingetragen werden, wenn angenommen wird,
dass
1) jede Zeile genau gleich viel Zeichen enthalten,
2) und die Breite des einzelnen Zeichens sich verringert.
(Das Zweite wollen wir, das erste aber eigentlich nicht)


> Zusammen wird die Gesamtlänge $G$ auf die
> Fläche $2nz$ verteilt. $z$ und $G$ sind bekannt,
> so ist die Zeilenzahl $n = \frac{2G}{z}$.


Mhm...*grübel*:
Du möchtest als Heuristik wirklich die Anzahl
aller Zeichen verdoppeln und durch die Anzahl
der Zeichen in einer Zeile dividieren?

Ich denke diese Heuristik ist zu großzügig.
Garantiert wird man niemals mehr Seiten bekommen,
als der Text in original Größe ausmacht, und das
ist:
$n = \frac{G}{z}$
oder besser
$n = \frac{G}{z*p}$
mit $z$ Anzahl der Zeichen und $p$ ihr Platz in der Breite.

>
> Für kleine $n$ ist die Flächennäherung nicht so toll,
> so dass man die ersten Werte besser explizit abfragt.
> if G == 0 then n=0
> elsif G <= z then n = 1
> elsif G <=4z then n = 2
> elsif n = ceil(2G/l)
>
> z ist dabei die Zeilenlänge,
> G die Gesamtlänge des Textes in der Anfangsschriftgröße.


Was ist das l ?

===========

Überlegen wir noch etwas formaler:

Gegeben/Annahmen:
1) Festbreiten Schrift
2) Abstand zwischen den Zeilen ist erstmal ABST(L)=konstant
3) lineare Verkleinerung der Zeichen pro Zeile


Gesucht:

$F(L)$ Funktion zur Berechnung
der Schriftgröße zu einer Linie L

$B(L)$ Funktion zur Berechnung
der Breite eines Zeichens in Linie L

$Z(L)$ Funktion zur Berechnung
der Anzahl von Zeichen in der Linie L

$P(T)$ Funktion zur Berechnung
der Anzahl von Seiten


Bestimmung von $F(L)$:
> Die erste Zeile soll in 18 Punkt sein, die letzte in 6 Punkt.


Es sei $n$ die Anzahl aller Linien (oder Zeilen):
Für $F(L)$ muss gelten,
1) F(1) = 18
2) F(n) = 6

-> Lineare Interpolation durch eine
Gerade f mit baryzentrischer Koordinate t

f(t) = (1-t)*18 + t*6, mit $t \in \mathbbm{R}, 0 \leq t \leq 1$

Wir müssen nun sicherstellen, dass gilt

F(1) = f(0) = (1-0)*18 + 0*6 = 18

F(n) = f(1) = (1-1)*18 + 1*6 = 6


dies gelingt mit L->t durch t = (L-1)/(n-1)

Am Beispiel von n = 10 Zeilen

L t F(L) = f(t)
1 0/9=0 18
2 1/9 16+(1/3)
3 2/9
4 3/9
5 4/9
6 5/9
7 6/9
8 7/9
9 8/9
10 9/9=1 6


Bestimmung von $B(L)$:

Entweder so:
B(L)=BreiteDesFontsMitGröße(F(L))
... ist ja Festbreitenschrift,
sollte man also irgendwo auslesen können

oder ebenfalls mit linearer Interpolation
über baryzentrische Koordinaten:
Dann muss man nur die 18 durch die Breite ersetzen
und die 6 durch die entsprechende Breite



Bestimmung von $Z(L)$:
Ziel ist es die Textbreite w in cm (einer Zeile)
konstant zuhalten, aber die Anzahl der Zeichen
innerhalb einer Zeile entsprechend ihrer Breite
zu berechnen.

Sei w die Textbreite um L die Zeile, dann ist

Z(L) = w/(B(L)) die Anzahl der Zeichen in L



Bestimmung von $P(T)$:
Die Berechnung der Anzahl der Seiten, will sich mir
nicht als geschlossene Formel eröffnen. Daher möchte
ich hier einen Algorithmus angeben - ob und wie
er sich in TeX / LaTeX implementieren lässt, kann ich
nicht überblicken.

Es sei T ein Text (Zeichenkette)

ZählVariable AnzahlDerSeiten=0

FALLS (T nicht leer)
DANN BEGINN
Kopiere Inhalt von T nach temp
AnzahlDerSeiten=1
ZählVariable Linie=1
GrößenVariable FreierPlatz = \textheight
SOLANGE (temp nicht leer)
BEGINN
ZählVariable Zeichen=0
SOLANGE (Zeichen <= Z(Linie))
BEGINN
entferne erstes Zeichen aus temp
Zeichen = Zeichen +1
ENDE
Linie = Linie + 1
FreierPlatz = FreierPlatz-F(Linie)-ABST(Linie)
FALLS (FreierPlatz <= 0)
DANN BEGINN
%Gehört diese Zeile schon auf
%die Nächste Seite
AnzahlDerSeiten = AnzahlDerSeiten+1
FreierPlatz = \textheight
ENDE

ENDE
ENDE


Besten Gruß,
Robert
Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
ReplayQueueLength stetig steigend Thomas Stensitzki Newsgroup microsoft.public.de.exchange 1 08-26-2009 08:56 AM
Stetig langsamer werdender FireFox Christian Müller Newsgroup de.comm.software.mozilla.browser 0 01-31-2009 03:11 PM
SpOnspacke stottert stetig Stuss: sähen! Bernd Schwegmann Newsgroup de.etc.sprache.deutsch 13 08-22-2008 06:25 PM
wie kann ich die leeren zellen zwischen dem text verkleinern ? fasatech Newsgroup microsoft.public.de.excel 1 04-09-2008 07:06 PM
Text verschiedener größen verkleinern/vergrößern Stefan Franz Newsgroup de.comp.office-pakete.staroffice.writer 18 08-15-2006 10:59 PM


Alle Zeitangaben in WEZ. Es ist jetzt 01:55 AM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints