Subject: bug#21069: 2014-11-28; combination of hyperref, preview and \sfrac (from xfrac) + refstepcounter makes an error when previewing

From: Nicolas Richard <[email-masked]>
Date: Wed, 15 Jul 2015 20:41:59 +0200

Hi,

Using the following MWE and trying to preview it (not in pdf mode) makes
an error on the second {exo} environment for me (i.e. the preview is not
shown, a white/red icon is shown indicating failure)

--8<---------------cut here---------------start------------->8---
\documentclass{article}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}

\iftrue % set to false makes it work
  \usepackage{xfrac}
\else
  \def\sfrac#1#2{#1/#2}
\fi
\newcounter{foo}
\newenvironment{exo}{%
  \refstepcounter{foo} % commenting this makes it work
}{}
\usepackage{hyperref} % commenting this makes it work
\usepackage{preview}
\PreviewEnvironment{exo}
\begin{document}
\begin{exo}
  foo $a+b$ % just to check this one is working.
\end{exo}
\begin{exo}
  $\sfrac 12$.
\end{exo}
\end{document}

%%% Local Variables:
%%% TeX-master: t
%%% End:
--8<---------------cut here---------------end--------------->8---

Here's the content of the output buffer (C-c C-l) :

--8<---------------cut here---------------start------------->8---
Running `Preview-LaTeX' on `testfoo' with ``latex  -file-line-error   "\nonstopmode\nofiles\PassOptionsToPackage{active,tightpage,auctex}{preview}\AtBeginDocument{\ifx\ifPreview\undefined\RequirePackage[displaymath,floats,graphics,textmath,sections,footnotes]{preview}[2004/11/05]\fi}" "\input" testfoo.tex''
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=latex)
 restricted \write18 enabled.
entering extended mode
LaTeX2e <2015/01/01> patch level 2
Babel <3.9l> and hyphenation patterns for 79 languages loaded.

No auxiliary output files.

(./testfoo.tex (/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg)
(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/dvips.def)))
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3kernel/l3unicode-data.def)
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3kernel/l3dvips.def)))
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/textcomp.sty
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.def))
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.st
y)) (/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty
(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty))
(/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty)
(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def)
(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
(/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty))

Package hyperref Message: Driver (default): hdvips.

(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hdvips.def
(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pdfmark.def
(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty)))
(/usr/local/texlive/texmf-local/tex/latex/preview/preview.sty
(/usr/local/texlive/texmf-local/tex/latex/preview/prtightpage.def)
(/usr/local/texlive/texmf-local/tex/latex/preview/prauctex.def
No auxiliary output files.

(/usr/local/texlive/texmf-local/tex/latex/preview/prauctex.cfg)))
(./testfoo.aux) (/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd)
(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty
(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
(./testfoo.out) (./testfoo.out)

Package hyperref Warning: Rerun to get /PageLabels entry.

Preview: Fontsize 10pt
./testfoo.tex:18: Preview: Snippet 1 started.
<-><->
      
l.18 \begin{exo}
                
Preview: Tightpage -32891 -32891 32891 32891
./testfoo.tex:20: Preview: Snippet 1 ended.(455111+54613x2520934).
<-><->
      
l.20 \end{exo}
              
[1]
./testfoo.tex:21: Preview: Snippet 2 started.
<-><->
      
l.21 \begin{exo}

LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <3.49998> not available
(Font)              size <5> substituted on input line 22.

LaTeX Font Warning: Font shape `OML/cmm/m/it' in size <3.49998> not available
(Font)              size <5> substituted on input line 22.

LaTeX Font Warning: Font shape `OMS/cmsy/m/n' in size <3.49998> not available
(Font)              size <5> substituted on input line 22.

./testfoo.tex:23: Preview: Snippet 2 ended.(491520+163840x922972).
<-><->
      
l.23 \end{exo}
              
[2]

LaTeX Font Warning: Size substitutions with differences
(Font)              up to 3.25002pt have occurred.

 )
(see the transcript file for additional information)
Output written on testfoo.dvi (2 pages, 2440 bytes).
Transcript written on testfoo.log.

TeX Output exited as expected with code 1 at Wed Jul 15 18:05:03
Running `Preview-DviPNG' with ``dvipng -picky -noghostscript testfoo.dvi -o "testfoo.prv/tmp16892eKK/prev%03d.png" --bg 'rgb 0.960784 0.960784 0.960784'  -D123 ''
This is dvipng (dvipng (TeX Live)) 1.15 Copyright 2002-2015 Jan-Ake Larsson
[1 (preview-latex version 11.88) (preview-latex tightpage option detected, will use its bounding box)] [2 <raw PostScriptdvipng warning: GhostScript calls disallowed by --nogs > <raw PostScriptdvipng warning: GhostScript calls disallowed by --nogs > <raw PostScriptdvipng warning: GhostScript calls disallowed by --nogs > <raw PostScriptdvipng warning: GhostScript calls disallowed by --nogs >(page not rendered)] 

Preview-DviPNG exited abnormally with code 1 at Wed Jul 15 18:05:03
Running `Preview-DviPS' with ``dvips -Pwww testfoo.dvi -o testfoo.prv/tmp16892rUQ/preview.ps''
This is dvips(k) 5.995 Copyright 2015 Radical Eye Software (www.radicaleye.com)
' TeX output 2015.07.15:1805' -> testfoo.prv/tmp16892rUQ/preview.ps
</usr/local/texlive/2015/texmf-dist/dvips/base/tex.pro>
</usr/local/texlive/2015/texmf-dist/dvips/base/texps.pro>
</usr/local/texlive/2015/texmf-dist/dvips/base/special.pro>. 
</usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb>
</usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb>
</usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
[1] [2] 

Preview-DviPS finished at Wed Jul 15 18:05:03
Running `Preview-Ghostscript' with ``/usr/local/bin/rungs -dOutputFile\=\(testfoo.prv/tmp16892rUQ/pr1-\%d.png\) -dNOSAFER -q -dDELAYSAFER -dNOPAUSE -DNOPLATFONTS -dPrinted -dTextAlphaBits\=4 -dGraphicsAlphaBits\=4 -dNOSAFER -sDEVICE\=png16m -r123.023x123.001''

Preview-Ghostscript finished at Wed Jul 15 18:05:04
--8<---------------cut here---------------end--------------->8---

And here's the Ghostscript error :
--8<---------------cut here---------------start------------->8---
/usr/local/bin/rungs -dOutputFile\=\(testfoo.prv/tmp16892rUQ/pr1-1.png\) -dNOSAFER -q -dDELAYSAFER -dNOPAUSE -DNOPLATFONTS -dPrinted -dTextAlphaBits\=4 -dGraphicsAlphaBits\=4 -dNOSAFER -sDEVICE\=png16m -r123.023x123.001
GS>{<</PermitFileReading[(testfoo.prv/tmp16892rUQ/preview.ps)]>> setuserparams .locksafe} stopped pop {DELAYSAFER{.setsafe}if}stopped pop/.preview-BP currentpagedevice/BeginPage get dup null eq{pop{pop}bind}if def<</BeginPage{currentpagedevice/PageSize get dup 0 get 1 ne exch 1 get 1 ne or{.preview-BP gsave 0.960784 0.960784 0.960784 setrgbcolor clippath fill grestore }{pop}ifelse}bind/PageSize[1 1]>>setpagedevice/preview-do{[count 3 roll save]3 1 roll dup length 0 eq{pop}{setpagedevice}{ifelse .runandhide}stopped{handleerror quit}if aload pop restore}bind def [(testfoo.prv/tmp16892rUQ/preview.ps)(r)file]aload exch dup 0 setfileposition 57532()/SubFileDecode filter cvx .runandhide aload pop dup dup 57825 setfileposition 671()/SubFileDecode filter cvx<<>>preview-do
Error: /undefined in H.S
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue   --nostringval--   --nostringval--   false   1   %stopped_push   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   false   1   %stopped_push   1148   --nostringval--   %end_runandhide   --nostringval--
Dictionary stack:
   --dict:1180/1684(ro)(G)--   --dict:0/20(G)--   --dict:83/200(L)--   --dict:104/300(L)--   --dict:19/200(L)--
Current allocation mode is local
Last OS error: No such file or directory

Preview-Ghostscript<2> finished
--8<---------------cut here---------------end--------------->8---

I found
http://tex.stackexchange.com/questions/113027/ghostscript-error-undefined-in-h-s
where I learned that H.S is related to hyperref, and indeed adding the
option [hypertex] to hyperref fixes/works around this problem. Not quite
satisfying though, IMO (e.g. hypertex won't make links in the final
pdf.).

I have a similar problem with tikz/pgf but didn't manage to make it a
minimal example, yet.

Here are a few more informations that auctex wanted to add:

Emacs  : GNU Emacs 25.0.50.1 (i686-pc-linux-gnu, X toolkit, Xaw scroll bars)
 of 2015-07-11 on Aurora
Package: 2014-11-28

current state:
==============
(setq
 AUCTeX-version "2015-06-01"
 LaTeX-command-style '(("" "%(PDF)%(latex) %(file-line-error) %(extraopts) %S%(PDFout)"))
 image-types '(svg imagemagick png gif tiff jpeg xpm xbm pbm postscript)
 preview-image-type 'dvipng
 preview-image-creators '((dvipng (open preview-gs-open preview-dvipng-process-setup) (place preview-gs-place) (close preview-dvipng-close))
                          (png (open preview-gs-open) (place preview-gs-place) (close preview-gs-close))
                          (jpeg (open preview-gs-open) (place preview-gs-place) (close preview-gs-close))
                          (pnm (open preview-gs-open) (place preview-gs-place) (close preview-gs-close))
                          (tiff (open preview-gs-open) (place preview-gs-place) (close preview-gs-close)))
 preview-dvipng-image-type 'png
 preview-dvipng-command "dvipng -picky -noghostscript %d -o \"%m/prev%%03d.png\""
 preview-pdf2dsc-command "pdf2dsc %s.pdf %m/preview.dsc"
 preview-gs-command "/usr/local/bin/rungs"
 preview-gs-options '("-dNOSAFER" "-q" "-dDELAYSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4"
                      "-dNOSAFER")
 preview-gs-image-type-alist '((png png "-sDEVICE=png16m") (dvipng png "-sDEVICE=png16m") (jpeg jpeg "-sDEVICE=jpeg") (pnm pbm "-sDEVICE=pnmraw")
                               (tiff tiff "-sDEVICE=tiff12nc"))
 preview-fast-conversion t
 preview-prefer-TeX-bb nil
 preview-dvips-command "dvips -Pwww -i -E %d -o %m/preview.000"
 preview-fast-dvips-command "dvips -Pwww %d -o %m/preview.ps"
 preview-scale-function 'preview-scale-from-face
 preview-LaTeX-command '("%`%l \"\\nonstopmode\\nofiles\\PassOptionsToPackage{" ("," . preview-required-option-list)
                         "}{preview}\\AtBeginDocument{\\ifx\\ifPreview\\undefined" preview-default-preamble "\\fi}\"%' %t")
 preview-required-option-list '("active" "tightpage" "auctex" (preview-preserve-counters "counters"))
 preview-preserve-counters nil
 preview-default-option-list '("displaymath" "floats" "graphics" "textmath" "sections" "footnotes")
 preview-default-preamble '("\\RequirePackage[" ("," . preview-default-option-list) "]{preview}[2004/11/05]")
 preview-LaTeX-command-replacements nil
 preview-dump-replacements '(preview-LaTeX-command-replacements
                             ("\\`\\([^ ]+\\)\\(\\( +-\\([^ \\\\\"]\\|\\\\\\.\\|\"[^\"]*\"\\)*\\)*\\)\\(.*\\)\\'"
                              "\\1 -ini -interaction=nonstopmode \"&\\1\" " preview-format-name ".ini \\5")
                             )
 preview-undump-replacements '(("\\`\\([^ ]+\\) .*? \"\\\\input\" \\(.*\\)\\'" "\\1 -interaction=nonstopmode \"&" preview-format-name "\" \\2"))
 preview-auto-cache-preamble 'ask
 preview-TeX-style-dir nil
 )

Output from running `/usr/local/bin/rungs -h':
GPL Ghostscript 9.10 (2013-08-30)
Copyright (C) 2013 Artifex Software, Inc.  All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
 -dNOPAUSE           no pause after page   | -q       `quiet', fewer messages
 -g<width>x<height>  page size in pixels   | -r<res>  pixels/inch resolution
 -sDEVICE=<devname>  select device         | -dBATCH  exit after last file
 -sOutputFile=<file> select output file: - for stdout, |command for pipe,
                                         embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
Default output device: x11alpha
Available devices:
   alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 ap3250 appledmp
   atx23 atx24 atx38 bbox bit bitcmyk bitrgb bitrgbtags bj10e bj10v bj10vh
   bj200 bjc600 bjc800 bjc880j bjccmyk bjccolor bjcgray bjcmono bmp16 bmp16m
   bmp256 bmp32b bmpgray bmpmono bmpsep1 bmpsep8 ccr cdeskjet cdj1600 cdj500
   cdj550 cdj670 cdj850 cdj880 cdj890 cdj970 cdjcolor cdjmono cdnj500 cfax
   chp2200 cif cljet5 cljet5c cljet5pr coslw2p coslwxl cp50 cups declj250
   deskjet devicen dfaxhigh dfaxlow display dj505j djet500 djet500c dl2100
   dnj650c epl2050 epl2050p epl2120 epl2500 epl2750 epl5800 epl5900 epl6100
   epl6200 eplcolor eplmono eps9high eps9mid epson epsonc epswrite escp
   escpage faxg3 faxg32d faxg4 fmlbp fmpr fs600 gdi hl1240 hl1250 hl7x0
   hpdj1120c hpdj310 hpdj320 hpdj340 hpdj400 hpdj500 hpdj500c hpdj510
   hpdj520 hpdj540 hpdj550c hpdj560c hpdj600 hpdj660c hpdj670c hpdj680c
   hpdj690c hpdj850c hpdj855c hpdj870c hpdj890c hpdjplus hpdjportable ibmpro
   ijs imagen inferno inkcov iwhi iwlo iwlq jetp3852 jj100 jpeg jpegcmyk
   jpeggray la50 la70 la75 la75plus laserjet lbp310 lbp320 lbp8 lex2050
   lex3200 lex5700 lex7000 lips2p lips3 lips4 lips4v lj250 lj3100sw lj4dith
   lj4dithp lj5gray lj5mono ljet2p ljet3 ljet3d ljet4 ljet4d ljet4pjl
   ljetplus ln03 lp1800 lp1900 lp2000 lp2200 lp2400 lp2500 lp2563 lp3000c
   lp7500 lp7700 lp7900 lp8000 lp8000c lp8100 lp8200c lp8300c lp8300f
   lp8400f lp8500c lp8600 lp8600f lp8700 lp8800c lp8900 lp9000b lp9000c
   lp9100 lp9200b lp9200c lp9300 lp9400 lp9500c lp9600 lp9600s lp9800c
   lps4500 lps6500 lq850 lxm3200 lxm5700m m8510 mag16 mag256 md1xMono md2k
   md50Eco md50Mono md5k mgr4 mgr8 mgrgray2 mgrgray4 mgrgray8 mgrmono miff24
   mj500c mj6000c mj700v2c mj8000c ml600 necp6 npdl nullpage oce9050 oki182
   oki4w okiibm oprp opvp paintjet pam pamcmyk32 pamcmyk4 pbm pbmraw pcl3
   pcx16 pcx24b pcx256 pcx256 pcx2up pcxcmyk pcxgray pcxmono pdfwrite
   pdfwrite pgm pgmraw pgnm pgnmraw photoex picty180 pj pjetxl pjxl pjxl300
   pkm pkmraw pksm pksmraw plan plan9bm planc plang plank planm png16 png16m
   png256 png48 pngalpha pnggray pngmono pnm pnmraw ppm ppmraw pr1000
   pr1000_4 pr150 pr201 ps2write psdcmyk psdrgb pwgraster pxlcolor pxlmono
   r4081 rinkj rpdl samsunggdi sgirgb sj48 spotcmyk st800 stcolor sunhmono
   svg t4693d2 t4693d4 t4693d8 tek4696 tiff12nc tiff24nc tiff32nc tiff48nc
   tiff64nc tiffcrle tiffg3 tiffg32d tiffg4 tiffgray tifflzw tiffpack
   tiffscaled tiffsep tiffsep1 txtwrite uniprint x11 x11alpha x11cmyk
   x11cmyk2 x11cmyk4 x11cmyk8 x11gray2 x11gray4 x11mono xcf xes xpswrite
Search path:
   /usr/share/ghostscript/9.10/Resource/Init :
   /usr/share/ghostscript/9.10/lib :
   /usr/share/ghostscript/9.10/Resource/Font :
   /usr/share/ghostscript/fonts : /var/lib/ghostscript/fonts :
   /usr/share/cups/fonts : /usr/share/ghostscript/fonts :
   /usr/local/lib/ghostscript/fonts : /usr/share/fonts
Ghostscript is also using fontconfig to search for font files
For more information, see /usr/share/doc/ghostscript/Use.htm.
Please report bugs to bugs.ghostscript.com.