Установка fig2pdf на macOS - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь установить библиотеку fig2pdf на мой macbook, который использует macOS Catalina. Идея состоит в том, чтобы преобразовать созданный xfig fig-файл в pdf с помощью операций Latex. Я скачал соответствующие linux исполняемые файлы по этой ссылке. http://www.few.vu.nl/~wkager/tools.htm. Я установил ghostscript и другие необходимые зависимости, используя brew. Однако, когда я пытаюсь сгенерировать свой pdf-файл, используя файл fig, я получаю эту ошибку.

[error]
fig2pdf: Ghostscript says:

Error: /typecheck in /--.beginpage--
Operand stack:
   false   --dict:1/1(L)--   --nostringval--   --dict:210/210(ro)(L)--   --dict:1/1(L)--   --dict:0/0(L)--   --dict:210/219(ro)(L)--   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   .beginpage   --nostringval--   2   %stopped_push   --nostringval--   .beginpage   .beginpage   false   1   %stopped_push   .runexec2   --nostringval--   .beginpage   --nostringval--   2   %stopped_push   --nostringval--   1938   1   3   %oparray_pop   .beginpage   .beginpage   1819   7   3   %oparray_pop   .beginpage   9
Dictionary stack:
   --dict:733/1123(ro)(G)--   --dict:0/20(G)--   --dict:75/200(L)--
Current allocation mode is local

Однако этот же фиговый файл можно без проблем преобразовать в pdf с помощью linux, поэтому рис файл хороший. Может кто-нибудь помочь мне с решением этой проблемы?

Полная трассировка стека, как показано ниже.

Najaths-MacBook-Pro:Documents najathakram$ ./fig2pdf figSDR.fig
fig2pdf 2015/08/01 by Wouter Kager

fig2pdf: processing file figSDR.fig
fig2pdf: warning, the file figSDR.pdf exists!
fig2pdf: should I overwrite it (y/n)? y
fig2pdf: figSDR.fig -> figSDR.pdf GPL Ghostscript 9.50: Unrecoverable error, exit code 1
expr: not a decimal number: 'in'
expr: not a decimal number: '--file--'
expr: not a decimal number: 'Error:'
expr: not a decimal number: '/invalidfileaccess'
awk: cmd. line:6:           x2=int(*1.00375+0.999);
awk: cmd. line:6:                  ^ syntax error
awk: cmd. line:7:           y2=int(*1.00375+0.999);
awk: cmd. line:7:                  ^ syntax error
awk: cmd. line:2:               if ($2>0) $2=0; if ($4<) $4=;
awk: cmd. line:2:                                      ^ syntax error
awk: cmd. line:2:               if ($2>0) $2=0; if ($4<) $4=;
awk: cmd. line:2:                                           ^ syntax error
awk: cmd. line:3:               if ($3>0) $3=0; if ($5<) $5=;
awk: cmd. line:3:                                      ^ syntax error
awk: cmd. line:3:               if ($3>0) $3=0; if ($5<) $5=;
awk: cmd. line:3:                                           ^ syntax error
BASH=/bin/sh
BASH_ARGC=([0]="1")
BASH_ARGV=([0]="figSDR.fig")
BASH_LINENO=([0]="370" [1]="0")
BASH_SOURCE=([0]="./fig2pdf" [1]="./fig2pdf")
BASH_VERSINFO=([0]="3" [1]="2" [2]="57" [3]="1" [4]="release" [5]="x86_64-apple-darwin19")
BASH_VERSION='3.2.57(1)-release'
DIRSTACK=()
DISPLAY=/private/tmp/com.apple.launchd.6ULZu7qFoQ/org.macosforge.xquartz:0
EUID=501
FUNCNAME=([0]="find_bbox" [1]="main")
GROUPS=()
HOME=/Users/najathakram
HOSTNAME=Najaths-MacBook-Pro.local
HOSTTYPE=x86_64
IFS='   
'
INFOPATH=/opt/sw/share/info:/opt/sw/info:/usr/share/info
LANG=en_US.UTF-8
LOGNAME=najathakram
MACHTYPE=x86_64-apple-darwin19
MANPATH=/opt/sw/share/man:/opt/local/share/man::/opt/sw/lib/perl5/5.18.4/man
OK=y
OPTERR=1
OPTIND=1
OSTYPE=darwin19
PATH=/opt/sw/lib/perl5/ExtUtils:/opt/sw/bin:/opt/sw/sbin:/opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin
PERL5LIB=/opt/sw/lib/perl5:/opt/sw/lib/perl5/darwin
PIPESTATUS=([0]="0")
POSIXLY_CORRECT=y
PPID=845
PS4='+ '
PWD=/Users/najathakram/Documents
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=2
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VAaK6drxYp/Listeners
TERM=xterm-256color
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=433
TERM_SESSION_ID=ADCFB5E9-5036-477F-995C-6D3ED0F20754
TMPDIR=/var/folders/7l/blk67nn13t97ym5ptgqm70lc0000gn/T/
UID=501
USER=najathakram
XAPPLRESDIR=/opt/sw/etc/app-defaults/
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
_=Ghostscript
base=figSDR
class='\documentclass{article}'
csub=
debug=n
dx=
dy=
field=color,
file=fig2pdf-OyfkIT.pdf
force=n
fsub=
gsopts='-q -dSAFER -dNOPAUSE -dBATCH'
ht=
j=fig2pdf-OyfkIT.pdf
level=1.3
log='%%BoundingBox: 0 0 0 0
%%HiResBoundingBox: 0.000000 0.000000 0.000000 0.000000'
mode=pdf
mpsub='[1 0 0 -1 0 0]'
optionkey='?'
options=
packages='\usepackage{color}\usepackage{graphicx}'
preamble=
program=fig2pdf
scale=1.00375
setspecial=0
specialtext=1
subfield=color
tmp=fig2pdf-OyfkIT
tmpfiles='fig2pdf-OyfkIT.tex fig2pdf-OyfkIT.aux fig2pdf-OyfkIT.log fig2pdf-OyfkIT.eps fig2pdf-OyfkIT.pdf'
version=2015/08/01
wd=
x1=0
x2=
y1=0
y2=
expr: syntax error
expr: syntax error
expr: syntax error
expr: syntax error
[error]
fig2pdf: Ghostscript says:

Error: /typecheck in /--.beginpage--
Operand stack:
   false   --dict:1/1(L)--   --nostringval--   --dict:210/210(ro)(L)--   --dict:1/1(L)--   --dict:0/0(L)--   --dict:210/219(ro)(L)--   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   .beginpage   --nostringval--   2   %stopped_push   --nostringval--   .beginpage   .beginpage   false   1   %stopped_push   .runexec2   --nostringval--   .beginpage   --nostringval--   2   %stopped_push   --nostringval--   1938   1   3   %oparray_pop   .beginpage   .beginpage   1819   7   3   %oparray_pop   .beginpage   9
Dictionary stack:
   --dict:733/1123(ro)(G)--   --dict:0/20(G)--   --dict:75/200(L)--
Current allocation mode is local

1 Ответ

0 голосов
/ 30 марта 2020

Ghostscript не принимает файл 'fig' в качестве входных данных, он принимает только PostScript или PDF, поэтому, что бы ни делал fig2pdf, он должен создавать (я предполагаю) файл PostScript, прежде чем превратить его в файл PDF. Или, наоборот, запустить программу PostScript, которая использует файл 'fig' и использует его для генерации операций маркировки в PostScript.

В вашем вопросе есть две трассировки обратного канала; тот, для которого вы предоставили только частичный обратный канал, и говорит «typecheck in /--.beginpage», но более интересным является второй, в котором есть ошибка invalidfileaccess.

С момента выпуска 9.50 запускается Ghostscript в режиме SAFER это означает, что файловые операторы PostScript могут получать доступ только к тем файлам и устройствам, которые специально разрешены. Все права доступа поступают из командной строки, либо неявно (например, указав входной файл, либо файл отупут), либо явно, используя соответствующий ключ (например, --permit-file-reading = ....).

Я бы предположил, что скрипт запускает программу PostScript, которая считывает рис-файл с диска, и это не удается, потому что вы специально не дали разрешение на чтение файла. Вам необходимо обновить скрипт, чтобы добавить это разрешение.

Документацию относительно прав доступа к файлам можно найти в Интернете здесь (прокрутите немного вниз, чтобы найти SAFER), и он должен быть в ghostpdl / do c каталог в вашей установке Ghostscript.

...