#343906 rubber: Does not optimize dvi for post processor

#343906#5
Date:
2005-12-18 18:05:56 UTC
From:
To:
*** Please type your report below this line ***

When rubber intends to post process a dvi file (e.g. with dvips of
dvipdfm) then it should create a dvi file optimized for the post
processor.  This means that packages (hyperref, graphicx,
grapphics, color etc.) should use the appropriate driver.

As far as I know, latex does not provide a way to specify the post
processor on the command line, which makes a general solution
impossible. However, most of the packages accept the post processor
as option.  So simply making the post processor a global option of
the
document class does the trick in most cases (for packages graphics,
graphicx, color, xcolor, pgf). This can be achieved by

latex '\let\originaldocumentclass\documentclass\renewcommand{\documentclass}[1][]{\originaldocumentclass[POST,#1]}\input{FILE}'

where we want to latex FILE to obtain a dvi file for post processor
POST.
(The idea is to redefine \documentlcass such that it behaves as if
POST was an option of it.  I don't know a simpler way of doing
this, e.g.

latex '\PassOptionsToClass{POST}{CLASS}\input{FILE}'

where CLASS is the document class does not work.  This may be
related to bug latex/2542 of the LaTeX bugs database.)


Test file test.tex:

\documentclass{article}
\usepackage{graphicx}
\usepackage{color}
\usepackage{hyperref}

\begin{document}
\section{Some graphics}
\label{sec:some-graphics}

\textcolor{red}{This is a red text.}
\textcolor{green}{This is greeen.}

\end{document}


File ~/texmf/tex/latex/config/hyperref.cfg:

\ProvidesFile{hyperref.cfg}%
  [2005/06/27 personal hyperref configuration]
\providecommand*{\Hy@defaultdriver}{hypertex}%
\endinput

Let us compare the following commands.  We check the used drivers in
the log file.  First we check rubber:

gabor@gabor ~/tmp/rubber$ rubber -o dvips test.tex

compiling test.tex...
compiling test.tex...
running dvips on test.dvi...

gabor@gabor ~/tmp/rubber$ grep '[Dd]river' test.log

Package graphics Info: Driver file: dvips.def on input line 80.
File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 125.
File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
*hyperref using default driver hypertex*
File: hypertex.def 2003/11/30 v6.74m Hyperref driver for HyperTeX
specials

The driver for hyperref is bad, hdvips should have been used.

gabor@gabor ~/tmp/rubber$ rubber --clean -o dvips test.tex
gabor@gabor ~/tmp/rubber$ rubber -o dvipdfm test.tex

compiling test.tex...
compiling test.tex...
running dvipdfm on test.dvi...

gabor@gabor ~/tmp/rubber$ grep '[Dd]river' test.log

Package graphics Info: Driver file: dvips.def on input line 80.
File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 125.
File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
*hyperref using default driver hypertex*
File: hypertex.def 2003/11/30 v6.74m Hyperref driver for HyperTeX
specials

All three packages use the wrong driver.

Let us check what happens if we use my suggestion for the command
line for latex:

gabor@gabor ~/tmp/rubber$ latex '\let\originaldocumentclass\documentclass\renewcommand{\documentclass}[1][]{\originaldocumentclass[dvips,#1]}\input{test.tex}'

This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german,
ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch,
esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar,
norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish,
swedish,tur
kish, ukrainian, nohyphenation, loaded.
(./test.tex (/usr/share/texmf-tetex/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document
class
(/usr/share/texmf-tetex/tex/latex/base/size10.clo))
(/usr/share/texmf-tetex/tex/latex/graphics/graphicx.sty
(/usr/share/texmf-tetex/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-tetex/tex/latex/graphics/graphics.sty
(/usr/share/texmf-tetex/tex/latex/graphics/trig.sty)
(/usr/share/texmf-tetex/tex/latex/graphics/graphics.cfg)
(/usr/share/texmf-tetex/tex/latex/graphics/dvips.def)))
(/usr/share/texmf-tetex/tex/latex/graphics/color.sty
(/usr/share/texmf-tetex/tex/latex/graphics/color.cfg)
(/usr/share/texmf-tetex/tex/latex/graphics/dvipsnam.def))
(/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.sty
(/usr/share/texmf-tetex/tex/latex/hyperref/pd1enc.def)
(/home/gabor/texmf/tex/latex/config/hyperref.cfg)
Implicit mode ON; LaTeX internals redefined
(/usr/share/texmf-tetex/tex/latex/url/url.sty))
*hyperref using driver hdvips*
(/usr/share/texmf-tetex/tex/latex/hyperref/hdvips.def
(/usr/share/texmf-tetex/tex/latex/hyperref/pdfmark.def))
(./test.aux)
(/usr/share/texmf-tetex/tex/latex/hyperref/nameref.sty) [1]
(./test.aux) )
Output written on test.dvi (1 page, 2332 bytes).
Transcript written on test.log.

gabor@gabor ~/tmp/rubber$ grep '[Dd]river' test.log

Package graphics Info: Driver file: dvips.def on input line 80.
File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 125.
File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
*hyperref using driver hdvips*
File: hdvips.def 2003/11/30 v6.74m Hyperref driver for dvips

The correct drivers are used.

gabor@gabor ~/tmp/rubber$ latex '\let\originaldocumentclass\documentclass\renewcommand{\documentclass}[1][]{\originaldocumentclass[dvipdfm,#1]}\input{test.tex}'

This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german,
ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch,
esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar,
norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish,
swedish,tur
kish, ukrainian, nohyphenation, loaded.
(./test.tex (/usr/share/texmf-tetex/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document
class
(/usr/share/texmf-tetex/tex/latex/base/size10.clo))
(/usr/share/texmf-tetex/tex/latex/graphics/graphicx.sty
(/usr/share/texmf-tetex/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-tetex/tex/latex/graphics/graphics.sty
(/usr/share/texmf-tetex/tex/latex/graphics/trig.sty)
(/usr/share/texmf-tetex/tex/latex/graphics/graphics.cfg)
(/usr/share/texmf-tetex/tex/latex/dvipdfm/dvipdfm.def)))
(/usr/share/texmf-tetex/tex/latex/graphics/color.sty
(/usr/share/texmf-tetex/tex/latex/graphics/color.cfg)
(/usr/share/texmf-tetex/tex/latex/graphics/dvipsnam.def))
(/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.sty
(/usr/share/texmf-tetex/tex/latex/hyperref/pd1enc.def)
(/home/gabor/texmf/tex/latex/config/hyperref.cfg)
Implicit mode ON; LaTeX internals redefined
(/usr/share/texmf-tetex/tex/latex/url/url.sty))
*hyperref using driver hdvipdfm*
(/usr/share/texmf-tetex/tex/latex/hyperref/hdvipdfm.def)
(./test.aux)
(/usr/share/texmf-tetex/tex/latex/hyperref/nameref.sty) (./test.out)
(./test.out) [1] (./test.aux) )
Output written on test.dvi (1 page, 2436 bytes).
Transcript written on test.log.

gabor@gabor ~/tmp/rubber$ grep '[Dd]river' test.log

Package graphics Info: Driver file: dvipdfm.def on input line 80.
File: dvipdfm.def 1999/9/6 vx.x Driver-dependant file
Package color Info: Driver file: dvipdfm.def on input line 125.
File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
*hyperref using driver hdvipdfm*
File: hdvipdfm.def 2003/11/30 v6.74m Hyperref driver for dvipdfm

Again, the correct drivers are used.

Best wishes,

	Gabor Braun

#343906#10
Date:
2015-11-16 09:33:05 UTC
From:
To:
severity 343906 minor
stop

On 18.12.05 Braun Gabor (braung@renyi.hu) wrote:

Hi,
Let's test this again. You performed the test for dvips and dvipdfm.

dvips:

hille@sid:~/devel/rubber/bugs $ rubber -o dvips 343906.tex
compiling 343906.tex...
compiling 343906.tex...
hille@sid:~/devel/rubber/bugs $ grep '[Dd]river' 343906.log
Package graphics Info: Driver file: dvips.def on input line 94.
File: dvips.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 142.
File: dvipsnam.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package hyperref Message: Driver (default): hdvips.
File: hdvips.def 2012/11/06 v6.83m Hyperref driver for dvips

Looks OK, AFAICT.

dvipdfm:

hille@sid:~/devel/rubber/bugs $ rubber -o dvipdfm 343906.tex
compiling 343906.tex...
hille@sid:~/devel/rubber/bugs $ grep '[Dd]river' 343906.log
Package graphics Info: Driver file: dvips.def on input line 94.
File: dvips.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 142.
File: dvipsnam.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package hyperref Message: Driver (default): hdvips.
File: hdvips.def 2012/11/06 v6.83m Hyperref driver for dvips

NOK. Another try using dvipdfmx:

hille@sid:~/devel/rubber/bugs $ rubber -o dvipdfmx 343906.tex
compiling 343906.tex...
hille@sid:~/devel/rubber/bugs $ grep '[Dd]river' 343906.log
Package graphics Info: Driver file: dvips.def on input line 94.
File: dvips.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package color Info: Driver file: dvips.def on input line 142.
File: dvipsnam.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package hyperref Message: Driver (default): hdvips.
File: hdvips.def 2012/11/06 v6.83m Hyperref driver for dvips

Same.

Now hard code the driver in the source file:

hille@sid:~/devel/rubber/bugs $ rubber -o dvipdfm 343906.tex
compiling 343906.tex...
/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty: File
/`dvipdfm.def' not found.
/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty:95:
/Emergency stop.
/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty:95:
/leading text: ...ed{ver@\Gin@driver}{\input{\Gin@driver}}{}

AFAICT there is no driver in Debian any more for dvipdfm and
graphics. I hard coded dvipdfmx instead and it worked:

hille@sid:~/devel/rubber/bugs $ grep '[Dd]river' 343906.log
Package graphics Info: Driver file: dvipdfmx.def on input line 94.
File: dvipdfmx.def 2015/09/11 v4.06 LaTeX color/graphics driver for dvipdfmx (T
Package color Info: Driver file: dvipdfmx.def on input line 142.
File: dvipsnam.def 2014/10/14 v3.0j Driver-dependent file (DPC,SPQR)
Package hyperref Message: Driver: hdvipdfm.
File: hdvipdfm.def 2012/11/06 v6.83m Hyperref driver for dvipdfm

So, we have a work around. I'll show that issue to upstream, for now
I lower it to minor.

Hilmar