>From f04ab9441df5256aa9df73bb4fa005b43517f2f2 Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@xxxxxxxxx> Date: Sun, 3 Jan 2021 19:15:25 +0900 Subject: [PATCH -perfbook] Makefile: Cope with GhostScript 9.53.0 or later MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Combination of GhostScript 9.53.x and pstricks-base 3.01 requires an additional option of "gs" to enable transparency. Current version of a2ping can not cope with this change. Instead, use the pair of commands "ps2pdf" and "pdfcrop" for .eps files originated from .tex sources. Reported-by: Дмитрий Дьяченко <dimhen@xxxxxxxxx> Reported-by: Felipe Balbi <balbi@xxxxxxxxxx> Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> --- Hi all, My previous comment on the build error reported by Dmitry and Felipe was not accurate. pstricks-base 3.01 did what the update announcement said and is compatible with GhostScript 9.53.x or later by adding prologue code to enable transparency support when gs version is larger than 9.52. Due to the behavior change, for "gs" to accept eps files generated from pstricks-base 3.01, it (9.53.0 or later) needs an additional option -dALLOWPSTRANSPARENCY. Current version of a2ping doesn't know of this change and it invokes "gs" without the option. This is the root cause of the build error. I tried a2ping's "--gsextra=" option to add it, but couldn't resovle the error. Instead of a2ping, the pair of ps2pdf and pdfcrop can do the same auto cropping of PDF figures. ps2pdf is distributed among GhostScript releases and if you have gs 9.53.x, you should also have a compatible ps2pdf. This patch fixes the build error by detecting GhostScript 9.53.0 or later (up to 9.59.x for the moment) and switching the command to use. Minor nit: I tried to test this patch on Ubuntu 18.04 with up-to-date TeX Live and manually installed GhostScript 9.53.3. However, I couldn't setup font info properly for it to work with the font replacement (Adobe -> Nimbus) scripts enabled. On Fedora 33 and CentOS 8, this patch works just fine. For those who stick with distro versions of TeX Live and GhostScript, this patch should have no effect until those packages are upgraded. Thanks, Akira PS. (especially to Paul) This mail is sent in UTF-8 encoding due to Dmitry's name in Reported-by. I don't think it would break this message in git-am incompatible way, but if it does, please let me know. -- Makefile | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 56ce62bf..bf2e89ba 100644 --- a/Makefile +++ b/Makefile @@ -38,6 +38,8 @@ EPSSOURCES_FROM_TEX := \ SMPdesign/DiningPhilosopher4part-b.eps \ SMPdesign/DiningPhilosopher5PEM.eps +PDFTARGETS_OF_TEX := $(EPSSOURCES_FROM_TEX:%.eps=%.pdf) + DOTSOURCES := $(wildcard */*.dot) EPSSOURCES_FROM_DOT := $(DOTSOURCES:%.dot=%.eps) @@ -70,7 +72,7 @@ EPSORIGIN := $(filter-out $(EPSSOURCES_FROM_TEX) $(EPSSOURCES_FROM_DOT) $(EPSSOU PDFTARGETS_OF_EPSORIG := $(EPSORIGIN:%.eps=%.pdf) -PDFTARGETS_OF_EPSOTHER := $(filter-out $(PDFTARGETS_OF_EPSORIG),$(PDFTARGETS_OF_EPS)) +PDFTARGETS_OF_EPSOTHER := $(filter-out $(PDFTARGETS_OF_EPSORIG) $(PDFTARGETS_OF_TEX),$(PDFTARGETS_OF_EPS)) BIBSOURCES := bib/*.bib alphapf.bst @@ -124,19 +126,23 @@ ifdef A2PING GS_950_OR_LATER := $(shell gs --version | grep -c -E "9\.[5-9].?") A2PING_277P := $(shell a2ping --help 2>&1 | grep -c "2.77p,") A2PING_283P := $(shell a2ping --help 2>&1 | grep -c "2.83p,") + GS_953_OR_LATER := $(shell gs --version | grep -c -E "9\.5[3-9].?") ifeq ($(A2PING_277P),1) - A2PING_GSCNFL := 1 + A2PING_GSCNFL = 1 else ifeq ($(A2PING_283P),1) ifeq ($(GS_950_OR_LATER),1) - A2PING_GSCNFL := 1 + A2PING_GSCNFL = 1 else - A2PING_GSCNFL := 0 + A2PING_GSCNFL = 0 endif else - A2PING_GSCNFL := 0 + A2PING_GSCNFL = 0 endif endif + ifeq ($(GS_953_OR_LATER),1) + A2PING_GSCNFL = 2 + endif endif LINELABEL_ENV_BEGIN := $(shell grep -l -F '\begin{linelabel}' $(LATEXSOURCES)) @@ -395,6 +401,20 @@ endif @a2ping --below --hires --bboxfrom=compute-gs $<i $@ > /dev/null 2>&1 @rm -f $<i +$(PDFTARGETS_OF_TEX): %.pdf: %.eps + @echo "$< --> $@" +ifndef A2PING + $(error $< --> $@: a2ping not found. Please install it) +endif +ifeq ($(A2PING_GSCNFL),1) + $(error a2ping version conflict. See #7 in FAQ-BUILD.txt) +endif +ifeq ($(A2PING_GSCNFL),2) + @ps2pdf -dALLOWPSTRANSPARENCY -dNOSAFER $< - | pdfcrop -hires - $@ > /dev/null 2>&1 +else + @a2ping --below --hires --bboxfrom=compute-gs $< $@ > /dev/null 2>&1 +endif + $(PDFTARGETS_OF_EPSOTHER): %.pdf: %.eps @echo "$< --> $@" ifndef A2PING -- 2.17.1