Attached a git patch for your consideration ;-)

Martin
________________________________________
From: Pavel Sanda [sa...@lyx.org]
Sent: Thursday, September 01, 2016 10:41 PM
To: Jean-Marc Lasgouttes
Cc: lyx-devel@lists.lyx.org; Vermeer Martin
Subject: Re: Inkscape /LyX integration (working!)

Jean-Marc Lasgouttes wrote:
> Of course, I can give you git access :)

+1

Pavel
From ed2997e78e5015cb4eff2a988c729fd1f1cde216 Mon Sep 17 00:00:00 2001
From: Martin Vermeer <mverm...@aalto.fi>
Date: Sat, 3 Sep 2016 17:17:45 +0300
Subject: [PATCH] Initial commit of Inkscape SVG LaTeX + PDF support

Based on Daniel Groger's work of five years ago, with minor changes

http://www.mail-archive.com/lyx-devel%40lists.lyx.org/msg169820.html

This extends the support for Xfig LaTeX + PDF to a more modern and
actively developed vector graphics editor. Embedded Objects manual
updated, also to include a workaround for an Inkscape 0.91 bug.
---
 lib/Makefile.am             |   2 +
 lib/configure.py            |   6 ++-
 lib/doc/EmbeddedObjects.lyx | 117 +++++++++++++++++++++++++++++++++++++++++++-
 lib/doc/workaround.png      | Bin 0 -> 17450 bytes
 lib/external_templates      |  42 ++++++++++++++++
 lib/scripts/svg2pdftex.py   |  57 +++++++++++++++++++++
 lib/scripts/svg2pstex.py    |  49 +++++++++++++++++++
 7 files changed, 269 insertions(+), 4 deletions(-)
 create mode 100644 lib/doc/workaround.png
 create mode 100644 lib/scripts/svg2pdftex.py
 create mode 100644 lib/scripts/svg2pstex.py

diff --git a/lib/Makefile.am b/lib/Makefile.am
index 1da5b97..99d9fe4 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -2316,6 +2316,8 @@ dist_scripts_DATA += \
 	scripts/fen2ascii.py \
 	scripts/fig2pdftex.py \
 	scripts/fig2pstex.py \
+	scripts/svg2pdftex.py \
+	scripts/svg2pstex.py \
 	scripts/fig_copy.py \
 	scripts/html2latexwrapper.py \
 	scripts/include_bib.py \
diff --git a/lib/configure.py b/lib/configure.py
index d3d1c31..e2f43d3 100644
--- a/lib/configure.py
+++ b/lib/configure.py
@@ -711,9 +711,9 @@ def checkFormatEntries(dtl_tools):
 \Format jlyx       cjklyx "CJK LyX 1.4.x (euc-jp)" "" ""	""	"document"	""
 \Format klyx       cjklyx "CJK LyX 1.4.x (euc-kr)" "" ""	""	"document"	""
 \Format lyxpreview lyxpreview "LyX Preview"       "" ""	""	""	""
-\Format pdftex     pdftex_t PDFTEX                "" ""	""	""	""
+\Format pdftex     "pdftex_t, pdf_tex" PDFTEX                "" ""	""	""	""
 \Format program    ""      Program                "" ""	""	""	""
-\Format pstex      pstex_t PSTEX                  "" ""	""	""	""
+\Format pstex      "pstex_t, ps_tex" PSTEX                  "" ""	""	""	""
 \Format wmf        wmf    "Windows Metafile"      "" ""	""	"vector"	"image/x-wmf"
 \Format emf        emf    "Enhanced Metafile"     "" ""	""	"vector"	"image/x-emf"
 \Format wordhtml  "html, htm" "HTML (MS Word)"    "" "" ""	"document"	""
@@ -933,6 +933,8 @@ def checkConverterEntries():
 \converter fig        ppm        "fig2dev -L ppm $$i $$o"	""
 \converter fig        svg        "fig2dev -L svg $$i $$o"	""
 \converter fig        png        "fig2dev -L png $$i $$o"	""
+\converter svg        pdftex     "python -tt $$s/scripts/svg2pdftex.py $$i $$o" ""
+\converter svg        pstex      "python -tt $$s/scripts/svg2pstex.py $$i $$o" ""
 \converter fig        pdftex     "python -tt $$s/scripts/fig2pdftex.py $$i $$o"	""
 \converter fig        pstex      "python -tt $$s/scripts/fig2pstex.py $$i $$o"	""''')
     #
diff --git a/lib/doc/EmbeddedObjects.lyx b/lib/doc/EmbeddedObjects.lyx
index 713eab1..eb10ca3 100644
--- a/lib/doc/EmbeddedObjects.lyx
+++ b/lib/doc/EmbeddedObjects.lyx
@@ -1,5 +1,5 @@
-#LyX 2.2 created this file. For more info see http://www.lyx.org/
-\lyxformat 508
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 512
 \begin_document
 \begin_header
 \save_transient_properties true
@@ -171,6 +171,7 @@ graphicboxes
 \font_osf false
 \font_sf_scale 100 100
 \font_tt_scale 100 100
+\use_microtype false
 \graphics default
 \default_output_format pdf2
 \output_sync 0
@@ -38609,6 +38610,118 @@ target "http://en.wikipedia.org/wiki/Xfig";
 .
 \end_layout
 
+\begin_layout Description
+Inkscape
+\begin_inset space ~
+\end_inset
+
+figure This experimental template supports images created with the program
+ 
+\begin_inset CommandInset href
+LatexCommand href
+name "Inkscape"
+target "https://fi.wikipedia.org/wiki/Inkscape";
+
+\end_inset
+
+.
+ It works very similarly to Xfig support, except that Inkscape is a more
+ modern image editor than Xfig, which uses Scalable Vector Graphics (SVG)
+ as its native format.
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+LyX will process the image file in much the same way as it does an Xfig
+ image, extracting the text into a separate TeX file for the text strings,
+ and a PDF file for the rest.
+\end_layout
+
+\begin_layout Description
+Warning: Unfortunately the latest version of Inkscape, 0.91, contains a bug:
+ with multi-page PDFs, the TeX file will sometimes reference more pages
+ than the PDF file contains.
+ This is the version that ships with Ubuntu 16.04.
+ Its use with LyX can therefore not be recommended, until the bug is fixed
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+A workaround for those who have already SVG figures in their document is,
+ to manually do the LaTeX+PDF output from Inkscape, edit the 
+\family typewriter
+.pdf_tex
+\family default
+ file to remove the erroneous references, and 
+\family typewriter
+
+\backslash
+input
+\family default
+ it directly into LyX, i.e., not use the external-template mechanism:
+\end_layout
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+	filename workaround.png
+	scale 50
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Plain Layout
+Here, the child document input inset (
+\family sans
+Insert\SpecialChar menuseparator
+File\SpecialChar menuseparator
+Child Document
+\family default
+) was used, which allows you do directly edit the 
+\family typewriter
+.pdf_tex
+\family default
+ file in a text editor.
+ The LaTeX output  is based on this edited snippet as re-generation from
+ the SVG file has been commented out.
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+The reason why we would use this complicated process at all, like in the
+ case of Xfig, is that it makes the text strings inside the figure of the
+ same font type and attributes as the surrounding text, which looks so much
+ more professional.
+ With Inkscape, even the 
+\emph on
+size
+\emph default
+ of the font is taken from the surrounding LaTeX document – in Xfig, you
+ have to set it by hand to be the same.
+ Of course you can always embed LaTeX modifiers like 
+\family typewriter
+
+\backslash
+Large
+\family default
+, 
+\family typewriter
+
+\backslash
+small
+\family default
+, etc.
+ into your figure text strings.
+\end_layout
+
+\end_deeper
+\end_deeper
 \begin_layout Standard
 \begin_inset Float table
 placement !h
diff --git a/lib/doc/workaround.png b/lib/doc/workaround.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e568b01dea3c17b07837bda11dedba0b2b9f59f
GIT binary patch
literal 17450
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
L5iJtY`SJe%pnjd6

literal 0
HcmV?d00001

diff --git a/lib/external_templates b/lib/external_templates
index f54a298..865ec3e 100644
--- a/lib/external_templates
+++ b/lib/external_templates
@@ -290,6 +290,48 @@ Template XFig
 TemplateEnd
 
 
+Template Inkscape
+	GuiName "Inkscape figure"
+	HelpText
+		An Inkscape figure.
+		This template should work flawlessly with Inkscape 0.48. 
+		For Inkscape 0.91, there is a bug in the LaTeX + PDF output
+		which makes a workaround necessary, see Embedded Objects manual.
+	HelpTextEnd
+	InputFormat svg
+	FileFilter "*.svg"
+	AutomaticProduction true
+	Transform Rotate
+	Preview InstantPreview
+	Format PDFLaTeX
+		TransformCommand Rotate RotationLatexCommand
+		# Resize is not desirable here, as fonts are sized to surrounding LaTeX font
+		Product "$$RotateFront\\input{$$AbsOrRelPathMaster$$Basename.pdf_tex}$$RotateBack"
+		UpdateFormat pdftex
+		UpdateResult "$$AbsPath$$Basename.pdf_tex"
+		Requirement "color"
+		Requirement "graphicx"
+		# Preamble WarnNotFound
+		# Preamble InputOrWarn
+		ReferencedFile pdflatex "$$AbsOrRelPathMaster$$Basename.pdf_tex"
+		ReferencedFile pdflatex "$$AbsPath$$Basename.pdf"
+	FormatEnd
+	Format LaTeX
+		TransformCommand Rotate RotationLatexCommand
+		Product "$$RotateFront\\input{$$AbsOrRelPathMaster$$Basename.eps_tex}$$RotateBack"
+		UpdateFormat pstex
+		UpdateResult "$$AbsPath$$Basename.eps_tex"
+		Requirement "color"
+		Requirement "graphicx"
+		# Preamble WarnNotFound
+		# Preamble InputOrWarn
+		ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.eps_tex"
+		ReferencedFile latex "$$AbsPath$$Basename.eps"
+		ReferencedFile dvi   "$$AbsPath$$Basename.eps"
+	FormatEnd
+TemplateEnd
+
+
 Template ChessDiagram
 	GuiName "Chess diagram"
 	HelpText
diff --git a/lib/scripts/svg2pdftex.py b/lib/scripts/svg2pdftex.py
new file mode 100644
index 0000000..cd9a484
--- /dev/null
+++ b/lib/scripts/svg2pdftex.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# file svg2pdftex.py
+#
+# This script converts an SVG image to something that pdflatex can process
+# into high quality PDF.
+
+# Usage:
+#   python svg2pdftex.py ${base}.svg ${base}.pdft
+# This command generates
+#   ${base}.pdf  the converted pdf file
+#   ${base}.pdft a tex file that can be included in your latex document
+#       using '\input{${base}.pdft}'
+#
+# Note:
+#   Do not use this command as
+#     python svg2pdftex.py file.svg file.pdf
+#   the real pdf file will be overwritten by a tex file named file.pdf.
+#
+
+
+
+import os, sys, re
+
+
+def runCommand(cmd):
+    ''' Utility function:
+        run a command, quit if fails
+    '''
+    if os.system(cmd) != 0:
+        print "Command '%s' fails." % cmd
+        sys.exit(1)
+
+
+# We expect two args, the names of the input and output files.
+if len(sys.argv) != 3:
+    sys.exit(1)
+
+input, output = sys.argv[1:]
+
+# Fail silently if the file doesn't exist
+if not os.path.isfile(input):
+    sys.exit(0)
+
+# Strip the extension from ${output}
+outbase = os.path.splitext(output)[0]
+
+
+
+# Inkscape 0.48 can output the image as a PDF file ${base}.pdf and place the text 
+# in a LaTeX file ${base}.pdf_tex, which is renamed to ${output}, for typesetting 
+# by pdflatex itself. 
+runCommand('inkscape --file=%s --export-pdf=%s.pdf --export-latex' % (input, outbase))
+
+os.rename('%s.pdf_tex' % outbase, output)
+
diff --git a/lib/scripts/svg2pstex.py b/lib/scripts/svg2pstex.py
new file mode 100644
index 0000000..72d3074
--- /dev/null
+++ b/lib/scripts/svg2pstex.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# file svg2pstex.py
+#
+# This script converts an SVG image to something that latex can process
+# into high quality PostScript.
+
+# Usage:
+#   python svg2pstex.py ${base}.fig ${base}.pstex
+# This command generates
+#   ${base}.eps    the converted eps file
+#   ${base}.pstex  a tex file that can be included in your latex document
+#       using '\input{${output}}'.
+#
+# Note:
+#   Do not use this command as
+#     python svg2pstex.py file.fig file.eps
+#   the real eps file will be overwritten by a tex file named file.eps.
+#
+
+import os, sys
+
+def runCommand(cmd):
+    ''' Utility function:
+        run a command, quit if fails
+    '''
+    if os.system(cmd) != 0:
+        print "Command '%s' fails." % cmd
+        sys.exit(1)
+
+# We expect two args, the names of the input and output files.
+if len(sys.argv) != 3:
+    sys.exit(1)
+
+input, output = sys.argv[1:]
+
+# Fail silently if the file doesn't exist
+if not os.path.isfile(input):
+    sys.exit(0)
+
+# Strip the extension from ${output}
+outbase = os.path.splitext(output)[0]
+
+# Inkscape 0.48 can output the image as a EPS file ${base}.pdf and place the text 
+# in a LaTeX file ${base}.eps_tex, which is renamed to ${output}, for typesetting 
+# by latex itself. 
+runCommand('inkscape --file=%s --export-eps=%s.eps --export-latex' % (input, outbase))
+os.rename('%s.eps_tex' % outbase, output)
-- 
2.7.4

Reply via email to