PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Positionen in einer Seite in eine separate Datei schreiben



dnb
27-10-2007, 11:16
Hallo,

ich habe sehr viele von mir automatisch generierte Seiten, die je aus einer Überschrift und einer Minipage bestehen. Duch \raggedbottom habe ich jetzt erst mal zwischenzeitlich den automatischen Seitenausgleich abgestellt, um zu sehen, wieviel von einer Seite belegt ist.
Jetzt möchte ich mir gerne eine txt-Datei duch LaTex erstellen lassen in der die Längen des verbrauchten Platzes der Seiten aufgelistet sind (und jeweils noch ein paar vorgegebene Wörter, wie zB. "Datei XZY;").
Im Moment habe ich leider gar keinen Ansatz wie ich dieses bewerkstelligen kann. Hat jemand eine Idee wie ich dieses erreichen kann?

MfG =>dnb<=

PS:
Um vielleicht mein dezeitiges (gewünschtes) Vorgehen zu beschreiben:
- Generierung von tex-Dateien aus bestimmten html-Dateien mittels ein von mir geschriebenes Programm (Qt), je (PDF)Seite eine Überschrift und Minipage und der Befehl für die Verbrauchs-Ermittlung
- \raggedbottom definiert
- Dokument mit LaTex erzeugen lassen und gleichzeitig eine Liste des verbrauchten Platzes der Seiten generieren
- Generierung von tex-Dateien aus bestimmten html-Dateien mittels dem Extra-Programm, ohne Seitenwechsel und Verbrauchsermittlung
- Mit der Verbrauchs-Liste sollten dann die tex-Dateien optimal automatisch sortiert werden (kleines von mir geschriebenes Extra-Programm in Qt), damit möglichst wenig freier Platz übrig bleibt, also möglichst wenig Seiten im Buch.
- \raggedbottom nicht definiert
- Endprodukt pdf erstellen
- Ziel ist es die ca. 880 Seiten im unsortierten Zustand auf ca. 500 Seiten im sortierten Zustand zu schrumpfen.

rais
27-10-2007, 14:24
Moin moin,
ich weiß ja nicht, warum Du die Minipages nicht einfach weglässt und die entstandenen Abschnitte der Reihe nach ausgibst -- am Umblättern wird es bei einem so vielseitigen Projekt wohl nicht liegen -- aber Du könntest Deine Minipage in ein erweitertes Kommando packen, in dem Du per \settoheight{\foo}{Minipage wiederholen} dessen Höhe in \foo lässt (den musst Du vorher entsprechend mit \newlength deklarieren).
Dann bräuchtest Du wohl noch \newwrite, \openout und \closeout ... d. h. ob Du damit aus multiplen Dateien in eine einzige Textdatei schreiben kannst? Evtl geht es einfacher, wenn Du die ermittelte Höhe per \typeout einfach in die Logdatei schreibst (Du kannst Dir ja einen konstanten Text dazudichten, damit Du die Stellen in der Logdatei schnell wiederfinden kannst), da packst Du dann den Namen entsprechend hinzu.
Mit ein wenig grep und sort sollten sich die gewünschten Informationen dann aus der Logdatei extrahieren lassen.;)
MfG,

dnb
27-10-2007, 19:00
Hallo,

schon mal vielen Dank für \newwrite, \openout und \closeout. Mit denen funktioniert es sehr gut. Leider wird bei meinem Beispiel die Höhe nicht richtig berechnet. Es werden 29,6 pt ausgerechnet, was aber viel zu wenig ist. Was mache ich bei meinem Beispiel falsch?
Die Überschrift habe ich mit in die Tabelle reingezogen, damit diese mit berechnet wird.


\documentclass[a4paper]{scrbook}
\begin{document}
\newlength{\meinehoehe}
\newwrite\outfile
\raggedbottom
\immediate\openout\outfile=positions.dat
\immediate\write\outfile{Seitenhoehe;\the\textheig ht;}

\begin{minipage}[t]{\textwidth}
\begin{tabular}{lr}
\multicolumn{2}{l}{\begin{large}\textsf{\textbf{Be ispieltext}}\end{large}}\\[3mm]
\begin{minipage}[b]{.6125\textwidth}
\begin{itemize}
\item x
\item x
\end{itemize}
\end{minipage} & \end{tabular}\\[2mm]
\end{minipage}\\
Beispieltext

\settoheight{\meinehoehe}{
\begin{minipage}[t]{\textwidth}
\begin{tabular}{lr}
\multicolumn{2}{l}{\begin{large}\textsf{\textbf{Be ispieltext}}\end{large}}\\[3mm]
\begin{minipage}[b]{.6125\textwidth}
\begin{itemize}
\item x
\item x
\end{itemize}
\end{minipage} & \end{tabular}\\[2mm]
\end{minipage}\\
Beispieltext
}
\immediate\write\outfile{Dateiname;\the\meinehoehe ;}

\immediate\closeout\outfile
\end{document}

MfG =>dnb<=

PS:
In der rechten Spalte von der Tabelle befindet sich normalerweise noch eine Grafik, mir ist aber gerade der Befehl für diese Rahmengrafik entfallen.

rais
27-10-2007, 21:12
Moin moin,
da hab ich wohl falsch gedacht -- tu ich wohl immer noch :o
Nun ja, wenn Du die Minipage oben ausrichtest, geht fast alles in die Tiefe;-)


\documentclass[a4paper,ngerman]{scrbook}
\usepackage{babel,blindtext}
\newlength{\meinehoehe}
\newlength{\minitmp}
\newwrite\outfile
\raggedbottom
\newcommand\xminip[1]{%
\noindent\begin{minipage}[t]{\textwidth}#1\end{minipage}
\settoheight{\meinehoehe}{\begin{minipage}[t]{\textwidth}#1\end{minipage}}%
\settodepth{\minitmp}{\begin{minipage}[t]{\textwidth}#1\end{minipage}}%
\addtolength{\meinehoehe}{\minitmp}%
\immediate\openout\outfile=positions.dat
\immediate\write\outfile{Seitenhoehe;\the\textheig ht;}
\immediate\write\outfile{Dateiname;\the\meinehoehe ;}
\immediate\closeout\outfile
}

\begin{document}

\xminip{
\begin{tabular}{lr}
\multicolumn{2}{l}{\textsf{\textbf{\large Beispieltext}}}\\[3mm]
\begin{minipage}[b]{.6125\textwidth}
\begin{itemize}
\item x
\item x
\end{itemize}
\end{minipage} & \end{tabular}\\[2mm]
Beispieltext
\blindtext[5]
}

\end{document}
-- das passt auch noch nicht hundertprozentig, aber immerhin sind's nur noch 5,5 Punkt daneben ... OTOH sehen viele Augen mehr als nur ein Paar.;)
MfG,

dnb
28-10-2007, 18:22
Hallo,

vielen Dank für die Hilfe.
Mit dem Beispiel habe ich es jetzt hinbekommen. Es hat mir zwar nur 78 Seiten Einsparung gebracht, aber immerhin. Jetzt komme ich auf ein ein Buch mit genau 400 Blättern ;-). DANKE

MfG =>dnb<=