Render LaTeX is not working in Inkscape after installing to 18.04

I have recently installed Ubuntu 18.04 (Not upgrade, a clean install). In Ubuntu 18.04, the rendering LaTeX function in Inkscape is not working. Following is the error output:

*** WARNING - the DELAYBIND command has been deprecated, and will be

           removed in the next version. For now you can restore

           the behaviour by using -dREALLYDEALYBIND but if you

           require continued use of this command you should contact

           the Ghostscript developers. Commercial customers of

           Artifex should email their support contact, free users

           are encouraged to talk to us on the #ghostscript IRC

           channel on irc.freenode.net.



Unrecoverable error: undefined in DELAYBIND

PostScript/PDF Interpreter finished. Return status 65280 executed command : /usr/bin/gs -q -dDELAYBIND -dWRITESYSTEMDICT -dNODISPLAY -dNOEPS "/tmp/psin5eNNQ0"

The interpreter seems to have failed, cannot proceed !

Traceback (most recent call last):
  File "eqtexsvg.py", line 160, in <module>
    e.affect()
  File "/usr/share/inkscape/extensions/inkex.py", line 283, in affect
    self.effect()
  File "eqtexsvg.py", line 154, in effect
    svg_open(self, svg_file)
  File "eqtexsvg.py", line 81, in svg_open
    doc = inkex.etree.parse(filename)
  File "src/lxml/etree.pyx", line 3426, in lxml.etree.parse
  File "src/lxml/parser.pxi", line 1839, in lxml.etree._parseDocument
  File "src/lxml/parser.pxi", line 1865, in lxml.etree._parseDocumentFromURL
  File "src/lxml/parser.pxi", line 1769, in lxml.etree._parseDocFromFile
  File "src/lxml/parser.pxi", line 1162, in lxml.etree._BaseParser._parseDocFromFile
  File "src/lxml/parser.pxi", line 600, in lxml.etree._ParserContext._handleParseResultDoc
  File "src/lxml/parser.pxi", line 710, in lxml.etree._handleParseResult
  File "src/lxml/parser.pxi", line 639, in lxml.etree._raiseParseError
  File "/tmp/inkscape-Y11679/eq.svg", line 1
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

From the google search, what I have found that the problem is arising because of the ghostscript. The Render>LaTeX extension actually calls pstoedit which in terns calls ghostscript using DELAYBIND flag to convert from LaTeX to SVG. But in the newer version of ghostscript the flag DELAYBIND has been deprecated. The solution is to downgrade ghostscript to or below 9.20 version. The following are the methods that I have tried to downgrade ghostscript without any success.

Downgrading ghostscript from apt or aptitute

I have tried to downgrade the ghostrict using the following command.

sudo aptitude install ghostscript=9.18~dfsg~0-0ubuntu2

Or by using

sudo apt install ghostscript=9.18~dfsg~0-0ubuntu2

I am getting the following output

Unable to find a version "9.18~dfsg~0-0ubuntu2" for the package "ghostscript"

or

E: Version '9.18~dfsg~0-0ubuntu2' for 'ghostscript' was not found

I have tried some other version, like 9.20 of ghost script. Nothing worked.

Installing from ghostscript website:

I have downloaded the ghostscript from the ghostscript website, and installed using the following command

sudo ./configure
sudo make
sudo make install

It seems the installation is done, but if I am running the command

ghostscript  --version

It is showing the version as 9.22.

All the online solution that I am able to find is pointing towards the downgrading the ghostscript. But I don't know how to do it in Ubuntu 18.04.

Any solution?


Solution 1:

Assuming you use Latex Inkscape plugin, texText, it support pdf2svg beside ghostscript+pstoedit. So, in case of Ubuntu 18.04, installing pdf2svg solves the problem

sudo apt install pdf2svg

It works for me on Ubuntu 18.04, InkScape 0.92.

Solution 2:

In this specific case building pstoedit from source does not solve the problem because the svg backend is not included by default (as already experienced above). Hence, I propose to update ghostscript to version 9.23.

After downloading and extracting the ghostscript source tarball from https://www.ghostscript.com/download/gsdnld.html enter the source directory and execute the following three commands:

./configure --prefix=/usr
make
sudo make install

This simply overwrites the existing ghostscript version and then one does not need to fiddle around with dependencies.

If you encounter problems elsewhere due to the new gs version you can easily switch back by

sudo apt-get install ghostscript --reinstall

Drawback of this solution is that security updates of ghostscript installed by the system will overwrite your installation and you need to re-install. However, as long as there are no pre-built binaries available this might be a first workaround

Solution 3:

Just ran into the same problem using pstoedit to convert EPS to DXF files. No need to downgrade ghostscript!

Easiest Solution

  1. Upgrade pstoedit
  2. Run pstoedit with the -rdb flag.

Step-by-Step

  1. Remove Ubuntu-current pstoedit:
    • sudo apt-get remove pstoedit
  2. Download latest pstoedit:
    • Download latest from Sourceforge (https://sourceforge.net/projects/pstoedit/files/latest/download?source=files)
    • Extract to a folder of your choice
  3. Install new pstoedit:

    • Open the extracted folder in a terminal (right-click on folder → open in terminal)
    • Run:

      ./configure
      make
      sudo make install
      
  4. Run with -rdb flag:

    • Now, when you run pstoedit, add the -rdb flag.
    • For example: pstoedit -dt -f dxf:-polyaslines "input-file.eps" -rdb "output-file.dxf"
    • This flag tells pstoedit to use the new 'force' option to make ghostscript accept the delaybind command. The release notes warn that this should ONLY be done on trusted files, as it can open security vulnerabilities.