%META:TOPICINFO{author=“HerbertVoss” date=“1364029199” format=“1.1” version=“1.7”}% %META:TOPICPARENT{name=“WebHome”}%

DVI-Dateien

Das Format dvi ist heutzutage im Allgemeinen nur noch ein Zwischenformat auf dem Weg zu PDF. Es hat gewisse Vorteile, da es Dateien sehr schnell in entsprechenden Viewern darstellen kann. Mit den Programmen dvips und xdvipdfmx kann man dvi-Dateien (bzw. xdvi – xetex) nach PS bzw. PDF konvertieren. Im allgemeinen erledigt dies der Editor für einen. Die folgenden Anmerkungen haben daher eher einen historischen Wert, da insbesondere Ausdrucke meist nur noch über PDF erfolgen.

Grundlegendes

Tools zur Manipulation von dvi-Dateien

<li> Ich möchte durch doppelseitigen Druck und entsprechende Faltung eine Broschüre in DIN A5 mit Hilfe von DIN A4-Bögen erstellen. </li><li> Ich möchte aus einer fertigen, jedoch für DIN A4 formatierte Broschüre durch Verkleinerung, doppelseitigen Druck und entsprechende Faltung eine Broschüre in DIN A5 erstellen. </li><li> Wenn ich A5-Seiten auf A4-Bögen anordne, warum erscheint das Ergebnis immer stark verschoben? </li><li> Wie kann ich bei doppelseitigem Druck jede zweite Seite umgedreht drucken lassen? </li><li> Ist es möglich, zwei dvi-Dateien zu einer zusammenzumontieren? Kann ich einzelne Seiten aus einer dvi-Datei in eine dvi-Datei schreiben? </li><li> Eine vorhandene PostScript-Datei enthält Grafiken, die ich für einen anderen Zweck wiederverwenden will. Was kann ich tun?</li>

dvi-Treiber - Druckertreiber und Previewer

<li> Wieso zeigt Xdvi das polnische L nicht an, obwohl es beim Ausdruck auf einem Drucker korrekt vorhanden ist? Oder auch das n für \sqrt[n]{2} nicht? </li><li> Benutze ich Ghostscript 4.0 zur Anzeige von PostScript-Grafiken in Xdvi erhalte ich den Fehler ,/undefinedfilename in --file--`. Abhilfe? </li><li> Wieso weisen Satzbelichter meine mit ,dvips` oder den ,psutils` erzeugten PostScript-Dateien mit der Meldung zurück, daß diese kein korrektes PostScript konform zu DSC 3.0 wären? </li><li> Wie kann ich mein Dokument so nach PostScript wandeln, daß alle Seiten gespiegelt erzeugt werden? </li><li> Was kann ich tun, wenn mein Drucker Teile meines Dokuments, die sich weit am unteren Blattrand befinden, nicht druckt? </li>

<a name="1" title="1"></a>Was ist eine dvi-Datei, was ist ein dvi-Treiber, was ist der DVI-Treiberstandard?

TeX erzeugt als wichtigste Ausgabe eine dvi-Datei. Das Akronym ,dvi` steht für ,DeVice-Independent`, d.h. der interpretierte Inhalt dieser Datei kann auf fast jedem möglichen Ausgabegerät ausgegeben werden. Ein dvi-Treiber, ein spezielles Programm, liest eine dvi-Datei und wandelt die in ihr enthaltenen Informationen in Steuerinformationen für einen speziellen Drucker (z.B. in PostScript oder in PCL) oder zur Anzeige am Bildschirm für ein spezielles Fenstersystem (wie X11) oder Bildschirmtreiber.

Besonders hervorzuheben ist an TeX, daß jede TeX-Implementierung für dieselbe Eingabe (also Dokument, verwendete Makros, Schriften, Trennmuster etc.) unabhängig vom Ausgabegerät und dessen Auflösung immer dieselbe dvi-Datei erzeugt. TeX wählt also immer denselben Absatz- und Seitenumbruch und dieselbe Plazierung von Zeichen, Linien usw. auf der Seite.

dvi-Dateien enthalten alle Informationen, die zum Ausdruck oder zur Anzeige der erzeugten Seiten notwendig sind. Jedoch sind in einer dvi-Datei nicht die tatsächlichen Lettern der verwendeten Schriften und das mit \special-Anweisungen eingebunde Material, wie Grafiken, enthalten. Diese müssen vom dvi-Treiber aus anderen Quellen, wie z.B. pk-Dateien bei Schriften, gelesen und an das Ausgabegerät geschickt werden. dvi-Dateien verwenden die TeX-interne Zeichenkodierung. So liegt beispielsweise der Argumenttext einer \special-Anweisung in der dvi-Datei als eine in ASCII kodierte Zeichenkette vor.

Die dokumentierte Source des Programms ,dvitype` dient gleichzeitig als Referenzbeschreibung des dvi-Formats. Eine bessere, weil mit den Mindestanforderungen an einen dvi-Treiber versehene Referenz ist der DVI-Treiberstandard, Level 0, den man in dviware/driv-standard/level-0/ finden kann. In diesem Standard findet man im Anhang neben einer Kopie der dvi-Beschreibung aus ,dvitype` noch die entsprechenden Beschreibungen des tfm-, gf- und pk-Formates. Weitere Papiere, Berichte, Vorschläge etc. findet man in dviware/driv-standard/papers/.

Als ein Projekt der NTG-Future-Group laufen unter dem Titel ,,DVI3 a new DVI standard`` Arbeiten zur Vervollkommnung und Weiterentwicklung des DVI-Standards. Nähere Informationen findet man unter http://dvi3.tiepmiep.dk/.

<a name="2" title="2"></a>Ich möchte durch doppelseitigen Druck und entsprechende Faltung eine Broschüre in DIN A5 mit Hilfe von DIN A4-Bögen erstellen.

Mit ,dvidvi` oder ,dvibook` lassen sich die Seiten in einer dvi-Datei so umordnen, daß auf einem Papierbogen die entsprechenden Seiten doppelseitig gedruckt werden können. Neben diesen dvi-Manipulationsprogrammen können auch einige dvi-Gerätetreiber die Seiten so gedreht und sortiert ausgeben, daß man diese zu einer Broschüre bzw. die einzelnen Bogenpäckchen zu einem dickeren Buch binden kann. Beispiele für solche Treiber sind ,dvidrv` (emTeX-Paket, OS/2 und MS-DOS) ,dvi_dot` (MultiTeX-Paket, Atari ST), DVI 3.xx (Atari ST). Hilfreich ist hierbei neben der Fähigkeit, die Seiten entsprechend anzuordnen, daß man die Signaturgröße, d.h. die Größe eines Heftchens, über einen Parameter angeben kann (Bsp: ,section-count` bei den emTeX-Treibern). Verwendet man PostScript, so kann man mit ,psbook` (aus den PostScript-Utilities) statt der Seiten in der dvi-Datei auch die Seiten in der aus der dvi-Datei erzeugten PostScript-Datei umordnen. Dabei sollte man darauf achten, daß die PostScript-Dateien sogenannte ,strukturierte Kommentare` enthalten, da ,psbook`, andere PostScript-Utilities und beispielsweise auch ,ghostview` diese Kommentare benötigen, um den Vorspann und die einzelnen Seiten voneinander trennen zu können. In ,dvips`<a name=“3” id=“3”></a> darf man die Option -N (,No structured comments`) daher nicht verwenden!

Lösungsbeispiel mit ,dvidvi` und ,dvips`:

# Vorderseiten:
dvidvi -m '4:-1,2(148.5mm,0mm)' datei.dvi tmp1.dvi
dvips -t landscape tmp1.dvi
#
# Rueckseiten:
dvidvi -m '4:-3,0(148.5mm,0mm)' datei.dvi tmp2.dvi
dvips -t landscape tmp2.dvi
#
# danach zuerst die Vorderseiten in `tmp1.ps' ausdrucken, diese in
# den Drucker so einlegen, dass die letzte Vorderseite zuerst
# eingezogen wird, und dann die Rueckseiten in `tmp2.ps' ausdrucken.

Lösungsbeispiel mit ,psbook`, ,pstops` und ,dvips`:

Damit ,dvips` auch weiterverarbeitbare PostScript-Seiten im DIN A5-Format erzeugen kann, muß in die ,dvips`-Konfigurationsdatei ,,config.ps`` noch folgender Eintrag hinzugefügt werden:

@ A5 148.5mm 210mm
@+ %%PaperSize: A5
@+ ! %%DocumentPaperSizes: A5

Anschließend können die folgenden Anweisungen abgesetzt werden:

# Ausgabe im Hochformat in DIN A5
dvips -t a5 -o tmp.ps datei.dvi

und nach dem Erzeugen der A5-großen Seiten anschließend <verbatim># Sortieren der Seiten der PS-Datei, Signaturgroesse: je 16 Seiten # ergibt 4 Boegen (doppelseitig und gefaltet) psbook -s16 tmp.ps tmp-sorted.ps # Zusammenfassen von 4 Seiten auf ein DIN A4-Blatt pstops '4:0L(21cm,0)+1L(21cm,14.85cm),2R(0,29.7cm)+3R(0,14.85cm)' tmp-sorted.ps datei.ps </verbatim>

Die Veränderung von ,,config.ps`` und die Option -t a5 beim Aufruf von ,dvips` kann entfallen, wenn das Programm ,psresize` verwendet wird:

# Ausgabe im Hochformat (in DIN A5)
dvips -o tmp-in.ps datei.dvi
# Korrigiere Papiergroessenangabe von A4 auf A5
psresize -Pa4 -pa5 tmp-in.ps tmp.ps

Man beachte, daß unter manchen Betriebssystemen die Hochkommata entfallen oder durch doppelte Hochkommata ersetzt werden müssen. Der Backslash am Ende der letzten Anweisung zeigt an, daß diese und die nachfolgende Zeile zusammengehören! | dvidvi: | dviware/dvidvi/ | | dvibook: | dviware/dvibook/ | | psbook: | support/psutils/ | | psresize: | support/psutils/ |

(unterhalb von systems findet man Binaries dieser Programme für verschiedene Systeme)
Print Output as Booklet:	http://www.lyx.org/help/PS/ps.php#booklet

<a name="4" title="4"></a>Ich möchte aus einer bereits fertigen, jedoch für DIN A4 formatierte Broschüre durch Verkleinerung, doppelseitigen Druck und entsprechende Faltung eine Broschüre in DIN A5 erstellen.

Oben wurden bereits entsprechende Programme vorgestellt, mit denen die Manipulationen durchgeführt werden können. Im Unterschied zu der dort vorgestellten Lösung sind nun die Seiten zusätzlich von DIN A4 auf DIN A5 zu verkleinern. Diese Skalierung ist typographisch nicht empfehlenswert; eine Layout-Änderung und Neuformatierung der Vorlage auf DIN A5, um eine Skalierung zu vermeiden, wäre besser.

Lösungsbeispiel mit ,dvidvi` und ,dvips`:

# Vorderseiten:
dvidvi -m '4:-1,2(148.5mm,0mm)' datei.dvi tmp1.dvi
dvips -t landscape -x 707 tmp1.dvi
#
# Rueckseiten:
dvidvi -m '4:-3,0(148.5mm,0mm)' datei.dvi tmp2.dvi
dvips -t landscape -x 707 tmp2.dvi
#
# danach zuerst die Vorderseiten in `tmp1.ps' ausdrucken, diese in
# den Drucker so einlegen, dass die letzte Vorderseite zuerst
# eingezogen wird, und dann die Rueckseiten in `tmp2.ps' ausdrucken.

Lösungsbeispiel mit ,psbook`<a name=“5” id=“5”></a>, ,pstops` und ,dvips`:

# Ausgabe im Querformat und auf DIN A5 (= 1/sqrt{2}) verkleinert
dvips -t landscape -x 707 -o tmp.ps datei.dvi
# Sortieren der Seiten der PS-Datei, Signaturgroesse: je 16 Seiten
# ergibt 4 Boegen (doppelseitig und gefaltet)
psbook -s16 tmp.ps tmp-sorted.ps
# Zusammenfassen auf eine DIN A4-Seite
pstops '2:0(.744cm,.744cm)+1(.744cm,-14.106cm)' tmp-sorted.ps datei.ps

Man beachte, daß unter manchen Betriebssystemen die Hochkommata entfallen oder durch doppelte Hochkommata ersetzt werden müssen.

<a name="6" title="6"></a>Wenn ich A5-Seiten auf A4-Bögen anordne, warum erscheint das Ergebnis immer stark verschoben?

In huer und hier wurde bereits vorgestellt, wie normalerweise eine Broschüre in DIN A5 erstellt werden kann. Dabei kann jedoch das Problem auftreten, dass das Ergebnis stark verschoben ist und deshalb nicht auf einen Papierbogen passt. Dieser Effekt tritt auf, wenn durch ein Paket das Papersize-Special in die DVI-Datei geschrieben wird. Dies geschieht beispielsweise beim Paket ,geometry`<a name=“7” id=“7”></a> bei Verwendung der Option ,dvips` oder beim Paket ,typearea` aus dem KOMA-Script-Paket bei Verwendung der Option ,dvips` oder der Option ,pagesize`.

Die Lösung für das Problem ist in diesem Fall ganz einfach. Verzichten Sie auf die entsprechende Option und gehen Sie dann wie in den Antworten beschrieben vor.

Wenn Sie eine DVI-Datei erhalten und feststellen wollen, ob ein entsprechendes Special enthalten ist, können Sie das mit Hilfe des Programms ,dvitype` erreichen. Gibt ,dvitype` unmittelbar nach der Zeile

: begin of page1

eine Zeile <pre> : xxx 'papersize=597.50793pt,845.04694pt' </pre> aus, dann ist ein solches Special enthalten und das Problem wird auftreten. <nn> ist dabei ein Zahlwert, der von Datei zu Datei unterschiedlich sein kann. Obige Werte hinter ,,papersize=`` sind natürlich vom eingestellten Papierformat abhängig.

KOMA-Script:	macros/latex/contrib/koma-script/	geometry:	macros/latex/contrib/geometry/

<a name="8" title="8"></a>Wie kann ich bei doppelseitigem Druck jede zweite Seite umgedreht drucken lassen?

Doppelseitige Drucker geben die zweite Seite meist über die längere Kante gewendet aus, so daß hintere Seite eines Papierblattes ,,falsch herum`` gedruckt wird. Mit einem PostScript-fähigen Drucker und dem Programm ,pstops`<a name=“9” id=“9”></a> (aus den PostScript-Utilities) kann dies problemlos korrigiert werden, indem jede zweite Seite mit der Option ,U` (upside-down) auf den Kopf gestellt wird:

pstops '2:0,1U(21cm,29.7cm)' datei.ps datei-2r.ps

Will man Broschüren erstellen, sind die oben gezeigten Verfahren durchzuführen. Anschließend ist dann obige Zeile auf das Ergebnis anzuwenden. | pstops: | support/psutils/ |

<a name="10" title="10"></a>Ist es möglich, zwei dvi-Dateien zu einer zusammenzumontieren? Kann ich einzelne Seiten aus einer dvi-Datei in eine dvi-Datei schreiben?

,dviconcat`, das im ,dvibook`-Paket enthalten ist, hängt dvi-Dateien aneinander. Mit ,dviselect` aus demselben Paket kann man einzelne Seiten bzw. Folgen von Seiten aus einer dvi-Datei extrahieren. | dvibook: | dviware/dvibook/ |

<a name="12" title="12"></a>Eine vorhandene PostScript-Datei enthält Grafiken, die ich für einen anderen Zweck wiederverwenden will. Was kann ich tun?

Das Programm ,psrip` kann in vielen Fällen enthaltene EPS-Grafiken aus einer PostScript-Datei extrahieren. | psrip: | support/psrip/ |

<a name="32"></a>Wieso zeigt Xdvi das polnische L oder für \sqrt[n]{2} das ,n` nicht an, obwohl es beim Ausdruck auf einem Drucker korrekt vorhanden ist?

Xdvi sollte in diesem Fall die Warnung ,,Note: overstrike characters may be incorrect.`` ausgeben. Bei Zeichen, die aus mehreren, übereinander gesetzten Einzelzeichen erzeugt werden, löscht Xdvi zur schnelleren Ausgabe Teile des bzw. der darunterliegenden Einzelzeichen. In den Manual-Seiten zu Xdvi findet man dazu mehr im Abschnitt zu den Optionen ,-thorough/-copy`. (Nicht vergessen: Xdvi ist nur ein Previewer für niedrigstauflösende Ausgabegeräte mit ca. 90-100dpi)

Mit ,xdvi +copy file.dvi` (oder mit ,-thorough -nogrey`) sollte man das ,n` in obiger Wurzel erhalten, ohne diese Optionen erscheint nur die Wurzel. Die gleiche Wirkung erreicht man mit dem Eintrag ,XDvi*thorough: true` in der Datei ,XDvi` (X-Resource-Datei). Diese Datei befindet sich bei der teTeX-Distribution im Verzeichnis ,,…/texmf/xdvi/`` bzw. sonst in ,,…/lib/X11/app-defaults/``.

<a name="33"></a>Benutze ich Ghostscript 4.0 zur Anzeige von PostScript-Grafiken in Xdvi erhalte ich den Fehler ,/undefinedfilename in --file--`. Abhilfe?

Dies ist ein inzwischen gut bekannter Fehler. Die momentan einfachste Abhilfe besteht darin, mindestens Version 4.03 oder neuer zu benutzen. Ist dies nicht möglich, kann man in der Zwischenzeit an die Ghostscript-Datei ,gs_init.ps` die Zeile

$error /newerror false put

anhängen. In kurzer Zeit dürfte auch eine neue xdvi-Version erscheinen (bzw. ist schon erschienen), die diesen Fehler beseitigt.

<a name="34"></a>Wieso weisen Satzbelichter meine mit ,dvips` oder den ,psutils` erzeugten PostScript-Dateien mit der Meldung zurück, daß diese kein korrektes PostScript konform zu DSC 3.0 wären?

Kommentare in einer PostScript-Datei sollen den Konventionen für ,Structured Comments`, den sogenannten ,Document Structuring Conventions` (DSC), genügen. Ältere Versionen von ,dvips` und den Programmen ,pstops`, ,psbook`, ,psselect` etc. der PostScript-Utilities erzeugen jedoch beispielsweise einen nicht ganz korrekten Kommentar für ,%%Pages:`. Hier darf nur eine einzige Zahl folgen, die die Seitenzahl angibt. Ältere Versionen von ,dvips` und der PostScript-Utilities geben jedoch noch eine zweite Zahl aus, so daß Software, die den ,Document Structuring Conventions` Version 3.0 strikt folgt, solche PostScript-Dateien, die mit

%!PS-Adobe-3.0

beginnen, als fehlerhaft zurückweist.

<a name="35"></a>Wie kann ich mein Dokument so nach PostScript wandeln, daß alle Seiten gespiegelt erzeugt werden?

Durch die Option -h kann man mit ,dvips` noch zusätzlichen PostScript-Code in einer sogenannten Header-Datei hinzuladen. Zum Spiegeln sämtlicher Seiten existiert die Header-Datei ,,mirr.hd``, die man durch

dvips -h mirr.hd document.dvi

hinzuladen kann. Eine weitere in größerem Maße treiberunabhängige Möglichkeit, da auf den Paketen ,graphics` und ,color` basierend, bietet das LaTeX-Paket ,crop`<a name=“36” id=“36”></a>. Neben der Spiegelung von Seiten mit der Paketoption ,mirror` können diese mit der Option ,invert` auch invertiert, also weiß auf schwarz, ausgegeben werden.

mirr.hd:	macros/generic/TeX-PS/mirr.hd	crop:	macros/latex/contrib/crop/

<a name="37"></a>Was kann ich tun, wenn mein Drucker Teile meines Dokuments, die sich weit am unteren Blattrand befinden, nicht druckt?

Zuerst ist zu prüfen, ob möglicherweise ein falsches Papierformat eingestellt ist. Der Druck vom Ergebnis des folgenden LaTeX-Aufrufs

latex testpage

ist ein guter Test, um falsche Druckereinstellungen herauszufinden. Fällt dieser Test zufriedenstellend aus, kann versucht werden, das Problem dadurch zu lösen, daß die betreffenden Seiten kopfstehend an den Drucker geschickt werden. Mit den beiden folgenden Verfahren kann man kopfstehende Seiten unter Verwendung von PostScript erzeugen. <pre>pstops “U(210mm,297mm)” original.ps kopfstehend.ps </pre> oder im LaTeX-Dokument <pre>\usepackage[rotate]{crop}[2000/02/02] </pre>

pstops:	support/psutils	crop:	macros/latex/contrib/crop/

– Main.HerbertVoss - 07 Mar 2009