mrpiggi / svg

Handling SVG pictures in LaTeX documents using Inkscape, ImageMagick and/or Ghostscript
Other
65 stars 12 forks source link

Autodetection of inkscape version fails (XeLaTeX, MikTeX, Inkscape 1.01) #31

Closed deining closed 3 years ago

deining commented 3 years ago

Minimal working example

\documentclass{article}
\usepackage[inkscapeversion=auto]{svg}

\begin{document}
\includesvg{first.svg}
\end{document}

Compilation of MWE fails:

! Use of \svg@tempb doesn't match its definition.
\svg@tempa ->P
              ango version: 1.46.1
l.4 \begin{document}
                    ^^M
?

Reason for failure:

Autodectection of inkscape version fails since version output of inkscape (v1.01) now has two lines, indicating pango version as well:

REM Windows
C:\>inkscape --version
Inkscape 1.0.1 (3bc2e813f5, 2020-09-07)
    Pango version: 1.46.1
# Linux
$ inkscape --version
Inkscape 1.0.1 (3bc2e813f5, 2020-09-07)
    Pango version: 1.40.14

This can be easily fixed by specifiying inkscapeversion=1 as option which causes auto-detection to be skipped.

I'm reporting this error anyway since it might confuse newcomers.

Environment

mrpiggi commented 3 years ago

Do you have problems with Linux as well as Windows? Which LaTeX distribution do you use?

deining commented 3 years ago

Do you have problems with Linux as well as Windows?

I encountered the issue with on Windows 10 system.

Afterwards I checked inkscape's version output on Linux, too. I would strongly assume that you encounter the same issue on a Linux system. I haven't verfied that, though.

Which LaTeX distribution do you use?

I'm using MikTeX, latest version.

mrpiggi commented 3 years ago

As I couldn't replicate your problem with TeX Live both on Linux and Windows, I am pretty sure that this is a specific issue with MiKTeX (maybe related to https://github.com/MiKTeX/miktex/issues/532). I will have a closer look tonight.

deining commented 3 years ago

As I couldn't replicate your problem with TeX Live both on Linux and Windows

I just checked. And yes, I can confirm that my MWE runs flawlessfly on Linux (TexLive).

I am pretty sure that this is a specific issue with MiKTeX

You are right. This also means that this issue is most likely not related to the multiline version output of inkscape v1.x.

(maybe related to MiKTeX/miktex#532)

Not sure. Originally, my installlation was indeed on a path containing spaces. I now reinstalled inkscape, choosing a location without spaces. This didn't cure the problem, though.

I will have a closer look tonight.

Thanks and good luck!

mrpiggi commented 3 years ago

(maybe related to MiKTeX/miktex#532)

Not sure. Originally, my installlation was indeed on a path containing spaces. I now reinstalled inkscape, choosing a location without spaces. This didn't cure the problem, though.

I did not mean potential spaces in the path but how MiKTeX treats an additional line when calling \@@input|"inkscape -V" as TeX Live only reads the first line and expands to Inkscape 1.0.1 (3bc2e813f5, 2020-09-07) without Pango version at all as you can see here:

\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\begingroup
  \makeatletter
    \@makeother\|%
    \endlinechar=\m@ne%
    \everyeof{\noexpand}%
\edef\foo{%
  \xdef\noexpand\foo{\noexpand\@@input|"inkscape\space-V" }%
}%
\meaning\foo
\foo
\endgroup

\meaning\foo
\end{document}
mrpiggi commented 3 years ago

The example also works in MiKTeX (20.10 portable) and gives Inkscape 1.0.1 (3bc2e813f5, 2020-09-07)Pango version: 1.46.1

I could not replicate the problem with the following MWE:

\listfiles
\documentclass{minimal}
\usepackage{svg}
\begin{document}
\noindent\includesvg[width=\textwidth]{test}%
\end{document}

So maybe updating your MiKTeX installation would solve your issue? If this is not the case, please provide me the output log file for the given MWE either right here or via e-mail.

deining commented 3 years ago

I could not replicate the problem with the following MWE:

I realized just now that the error only occurs when using xelatex. I can run your MWE successfully using latex, pdflatex and lualatex, but not using xelatex.
Hopefully you can reproduce the issues using xelatexfrom MikTeX.

So maybe updating your MiKTeX installation would solve your issue?

No, I don't think that my xelatexinstallation is outdated. This is XeTeX, Version 3.14159265-2.6-0.999992 (MiKTeX 20.10) (preloaded format=xelatex 2020.10.21)

If this is not the case, please provide me the output log file for the given MWE either right here or via e-mail.

Here comes the log file, as requested.

mrpiggi commented 3 years ago

Puh, that's a tough one. There are in fact two issues. The first concerns Inkscape. Currently, the info for Pango is passed via stderr and not stdout. Running this MWE with TeX Live shows this clearly

\listfiles
\documentclass{minimal}
\usepackage[T1]{fontenc}
\begin{document}
\begingroup
  \makeatletter
  \@makeother\|%
  \@makeother\&%
  \catcode\endlinechar=10%
  \everyeof{\noexpand}%
  \edef\parseversion{%
    \xdef\noexpand\pipestdout{\noexpand\@@input|"inkscape\space-V\space2>&1" }%
    \xdef\noexpand\pipenormal{\noexpand\@@input|"inkscape\space-V" }%
  }%
\texttt{\meaning\parseversion}
\parseversion
\endgroup

\texttt{pipestdout}: \pipestdout

\texttt{pipenormal}: \pipenormal
\end{document}

Regardless of the format used (pdflatex, lualatex, xelatex) the result is the same: Using a standard pipe only returns Inkscape 1.0.1 (3bc2e813f5, 2020-09-07) whereas redirecting stderr to stdout shows Inkscape 1.0.1 (3bc2e813f5, 2020-09-07) Pango version: 1.46.1 I created an issue for this: https://gitlab.com/inkscape/inbox/-/issues/3882

But there is another issue with MiKTeX. Depending on the format used, the result is different:

~So I re-opened the mentioned issue (https://github.com/MiKTeX/miktex/issues/532)~ I created a new issue: https://github.com/MiKTeX/miktex/issues/648

mrpiggi commented 3 years ago

I'm going to provide a bug fix today. Hopefully, MiKTeX gets adopted soon.

mrpiggi commented 3 years ago

svg v2.02j is now available via CTAN and so for common LaTeX distributions as well