Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 12

08 Mär '15, 11:42

saputello's gravatar image

saputello
11.1k174365

Im [tugboat-Artikel](https://www.tug.org/TUGboat/tb32-3/tb102veytsman-ebooks.pdf) ist die Berechnung der benötigen Höhe ziemlich getrickst. Das funktioniert bei `article` mit `letterpaper` eher zufällig. Schon wenn man `scrartcl` mit `a4paper` verwendet, funktioniert es nicht mehr. Die korrekte Berechnung wäre: > `\pdfpageheight` = *Texthöhe* - (`\pagetotal-\pagegoal`) + *kompletter oberer Rand* + *kompletter unterer Rand*. Dabei ist: > *kompletter obere Rand* = `1in` + `\topmargin` + `\headheight` + `\headsep` und > *kompletter untere Rand* = `\paperheight` - `1in` - `\topmargin` - `\headheight` - `\headsep` - `\textheight`. Eine mögliche, korrekte Berechnung wäre also: \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \newlength\totalfootheight \EveryShipout{% \totalfootheight=\dimexpr \paperheight -1in-\topmargin -\headheight -\headsep -\textheight\relax \pdfpageheight=\dimexpr \pagetotal-\pagegoal +1in+\topmargin +\headheight +\headsep +\textheight +\totalfootheight\relax } \begin{document} \lipsum[1-20] \end{document} Dabei wurde ein wenig umsortiert, um keinen `arithmetic overflow` zu provozieren. Man kann die Berechnung natürlich auch noch weiter vereinfachen und landet dann bei einem wenig überraschenden: \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \EveryShipout{% \pdfpageheight=\dimexpr \pagetotal-\pagegoal +\paperheight\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \end{document} oder schlicht bei \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \EveryShipout{% \advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \clearpage \lipsum[1-20] \end{document} Ja, auf letzteres hätte man eigentlich auch gleich kommen können. Zu Deinem `arara`-Problem, das eigentlich eine eigene Frage darstellt, kann ich nichts sagen, weil ich `arara` nicht verwende. Mit `pdftoppm -png -r 100 test.pdf test` erhalte ich jedenfalls für das letzte Beispiel `test-1.png`, `test-2.png` und `test-3.png` wie gewünscht. Hier einmal die mittlere Seite aus dem Beispiel, die auf diese Weise aber in verringerter Auflösung (`-r 30`) erzeugt wurde: ![die mittlere Seite des letzten Beispiels][1] Übrigens: Zwar ist das Paket `everyshi` nicht wirklich veraltet, allerdings wird es kaum noch verwendet. Heiko Oberdiek hat nämlich das Paket [`atbegshi`](http://www.ctan.org/pkg/atbegshi) mit deutlich erweiterter Funktionalität erstellt und verwendet dieses auch in seinen anderen Paketen, beispielsweise in `hyperref`, `atenddvi`, `luacolor`, `pagegrid`, `pdflscape`, `zref-abspage` und `zref-thepage`. Diese Paket werden wiederum in diversen anderer seiner Pakete verwendet. Außerdem verwenden auch diverse andere Pakete `atbegshi` oder Pakete, die ihrerseits Pakete verwenden, die `atbegshi` verwenden. Ich habe allein in `texmf-dist` 36 Dateien gezählt, die `atbegshi` direkt verwenden. Darunter prominente Pakete wie `hyperref` und `geometry`. Am Ende kommt man nur schwer um `atbegshi` herum, so dass man es auch gleich an Stelle von `everyshi` verwenden kann. Ich würde also letztlich zu \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{atbegshi,lipsum} \AtBeginShipout{% \advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \clearpage \lipsum[1-20] \end{document} raten. --- Es sei noch darauf hingewiesen, dass die Verwendung der `standalone`-Klasse hier nicht funktioniert, da diese selbst ebenfalls den Bereich beschneidet. Die beiden Vorgehen kommen sich dann in die Quere. Allerdings braucht man das bei Verwendung von `standalone` auch nicht wirklich. wirklich, wie @BraBra bereits gezeigt hat. Dort gibt man einfach nur den gewünschten Rand an: \documentclass[varwidth, margin=2cm, png]{standalone} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage{lipsum} \begin{document} \lipsum[1-20] \end{document} Durch Verwendung von Option `png` wird dabei auch gleich ein PNG erzeugt. Vorraussetzung ist, dass der `pdflatex`-Aufruf mit Option `-shell-escape` erfolgt und `ImageMagick` installiert ist. Man kann jedoch auch auf die Verwendung von `ghostscript` umschalten. Siehe dazu die Anleitung von `standalone`. Allerdings funktioniert das dann immer nur für eine Seite, während man wie oben gezeigt mit anderen Klassen auch mehrere, unterschiedlich große Seiten erzeugen kann. [1]: http://texwelt.de/wissen/upfiles/test-2.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 11

08 Mär '15, 11:41

saputello's gravatar image

saputello
11.1k174365

Im [tugboat-Artikel](https://www.tug.org/TUGboat/tb32-3/tb102veytsman-ebooks.pdf) ist die Berechnung der benötigen Höhe ziemlich getrickst. Das funktioniert bei `article` mit `letterpaper` eher zufällig. Schon wenn man `scrartcl` mit `a4paper` verwendet, funktioniert es nicht mehr. Die korrekte Berechnung wäre: > `\pdfpageheight` = *Texthöhe* - (`\pagetotal-\pagegoal`) + *kompletter oberer Rand* + *kompletter unterer Rand*. Dabei ist: > *kompletter obere Rand* = `1in` + `\topmargin` + `\headheight` + `\headsep` und > *kompletter untere Rand* = `\paperheight` - `1in` - `\topmargin` - `\headheight` - `\headsep` - `\textheight`. Eine mögliche, korrekte Berechnung wäre also: \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \newlength\totalfootheight \EveryShipout{% \totalfootheight=\dimexpr \paperheight -1in-\topmargin -\headheight -\headsep -\textheight\relax \pdfpageheight=\dimexpr \pagetotal-\pagegoal +1in+\topmargin +\headheight +\headsep +\textheight +\totalfootheight\relax } \begin{document} \lipsum[1-20] \end{document} Dabei wurde ein wenig umsortiert, um keinen `arithmetic overflow` zu provozieren. Man kann die Berechnung natürlich auch noch weiter vereinfachen und landet dann bei einem wenig überraschenden: \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \EveryShipout{% \pdfpageheight=\dimexpr \pagetotal-\pagegoal +\paperheight\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \end{document} oder schlicht bei \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{everyshi,lipsum} \EveryShipout{% \advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \clearpage \lipsum[1-20] \end{document} Ja, auf letzteres hätte man eigentlich auch gleich kommen können. Zu Deinem `arara`-Problem, das eigentlich eine eigene Frage darstellt, kann ich nichts sagen, weil ich `arara` nicht verwende. Mit `pdftoppm -png -r 100 test.pdf test` erhalte ich jedenfalls für das letzte Beispiel `test-1.png`, `test-2.png` und `test-3.png` wie gewünscht. Hier einmal die mittlere Seite aus dem Beispiel, die auf diese Weise aber in verringerter Auflösung (`-r 30`) erzeugt wurde: ![die mittlere Seite des letzten Beispiels][1] Übrigens: Zwar ist das Paket `everyshi` nicht wirklich veraltet, allerdings wird es kaum noch verwendet. Heiko Oberdiek hat nämlich das Paket [`atbegshi`](http://www.ctan.org/pkg/atbegshi) mit deutlich erweiterter Funktionalität erstellt und verwendet dieses auch in seinen anderen Paketen, beispielsweise in `hyperref`, `atenddvi`, `luacolor`, `pagegrid`, `pdflscape`, `zref-abspage` und `zref-thepage`. Diese Paket werden wiederum in diversen anderer seiner Pakete verwendet. Außerdem verwenden auch diverse andere Pakete `atbegshi` oder Pakete, die ihrerseits Pakete verwenden, die `atbegshi` verwenden. Ich habe allein in `texmf-dist` 36 Dateien gezählt, die `atbegshi` direkt verwenden. Darunter prominente Pakete wie `hyperref` und `geometry`. Am Ende kommt man nur schwer um `atbegshi` herum, so dass man es auch gleich an Stelle von `everyshi` verwenden kann. Ich würde also letztlich zu \documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry} \usepackage{atbegshi,lipsum} \AtBeginShipout{% \advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax } \begin{document} \lipsum[1-20] \clearpage \lipsum[1-10] \clearpage \lipsum[1-20] \end{document} raten. --- Es sei noch darauf hingewiesen, dass die Verwendung der `standalone`-Klasse hier nicht funktioniert, da diese selbst ebenfalls den Bereich beschneidet. Die beiden Vorgehen kommen sich dann in die Quere. Allerdings braucht man das bei Verwendung von `standalone` auch nicht wirklich. Dort gibt man einfach nur den gewünschten Rand an: \documentclass[varwidth, margin=2cm, png]{standalone} \usepackage[utf8]{inputenc} \usepackage[english, ngerman, danish]{babel} \pagestyle{empty} \usepackage{lipsum} \begin{document} \lipsum[1-20] \end{document} Durch Verwendung von Option `png` wird dabei auch gleich ein PNG erzeugt. Vorraussetzung ist, dass der `pdflatex`-Aufruf mit Option `-shell-escape` erfolgt und `ImageMagick` installiert ist. Man kann jedoch auch auf die Verwendung von `ghostscript` umschalten. Siehe dazu die Anleitung von `standalone`. Allerdings funktioniert das dann immer nur für eine Seite, während man wie oben gezeigt mit anderen Klassen auch mehrere, unterschiedlich große Seiten erzeugen kann. [1]: http://texwelt.de/wissen/upfiles/test-2.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 10

08 Mär '15, 11:40

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 9

08 Mär '15, 11:36

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 8

08 Mär '15, 11:24

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 7

08 Mär '15, 09:58

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 6

08 Mär '15, 09:55

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 5

08 Mär '15, 09:54

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

08 Mär '15, 09:52

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

08 Mär '15, 09:47

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

08 Mär '15, 09:44

saputello's gravatar image

saputello
11.1k174365

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

08 Mär '15, 09:32

saputello's gravatar image

saputello
11.1k174365

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×