[PATCH -perfbook] Makefile: Cope with GhostScript 9.53.0 or later

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>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






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux