mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-24 13:48:59 +00:00
Enable the external inset to output different flavours of latex.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7031 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ac3c2b1485
commit
08ad6acd9a
@ -1,3 +1,9 @@
|
|||||||
|
2003-05-23 Angus Leeming <leeming@lyx.org>
|
||||||
|
|
||||||
|
* external_templates: add a PDFLaTeX flavour to the xfig outputs.
|
||||||
|
* scripts/fig2png.py: a new and very simple script.
|
||||||
|
* scripts/fig2png.sh: another new and rather more sophisticated scriot.
|
||||||
|
|
||||||
2003-05-22 Alfredo Braunstein <abraunst@libero.it>
|
2003-05-22 Alfredo Braunstein <abraunst@libero.it>
|
||||||
|
|
||||||
* ui/stdmenus.ui:
|
* ui/stdmenus.ui:
|
||||||
|
@ -67,9 +67,15 @@ Template XFig
|
|||||||
EditCommand "xfig $$FName"
|
EditCommand "xfig $$FName"
|
||||||
AutomaticProduction true
|
AutomaticProduction true
|
||||||
Format LaTeX
|
Format LaTeX
|
||||||
Product "\\begin{picture}(0,0)\\includegraphics{$$Basename.eps}\\end{picture}\\input{$$Basename.pstex_t}"
|
Product "\\input{$$Basename.pstex_t}"
|
||||||
UpdateCommand "python $$Sysdir/scripts/fig2pstex.py $$FName $$Parameters"
|
UpdateCommand "python $$Sysdir/scripts/fig2pstex.py $$FName $$Parameters"
|
||||||
UpdateResult "$$Basename.eps"
|
UpdateResult "$$Basename.pstex_t"
|
||||||
|
Requirement "graphicx"
|
||||||
|
FormatEnd
|
||||||
|
Format PDFLaTeX
|
||||||
|
Product "\\begin{picture}(0,0)\\includegraphics{$$Basename}\\end{picture}"
|
||||||
|
UpdateCommand "python $$Sysdir/scripts/fig2png.py $$FName $$Parameters"
|
||||||
|
UpdateResult "$$Basename.png"
|
||||||
Requirement "graphicx"
|
Requirement "graphicx"
|
||||||
FormatEnd
|
FormatEnd
|
||||||
Format Ascii
|
Format Ascii
|
||||||
|
16
lib/scripts/fig2png.py
Normal file
16
lib/scripts/fig2png.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
# This script converts a xfig file into PNG files
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
filename = sys.argv[1]
|
||||||
|
basename = os.path.splitext(filename)[0]
|
||||||
|
parameters = sys.argv[2:]
|
||||||
|
|
||||||
|
pid = os.fork()
|
||||||
|
if pid == 0:
|
||||||
|
os.execvp("fig2dev", ["fig2dev", "-Lpng"] + parameters + [filename, basename + ".png"])
|
||||||
|
print "fig2dev did not work"
|
||||||
|
os.exit(1)
|
||||||
|
os.wait()
|
48
lib/scripts/fig2png.sh
Executable file
48
lib/scripts/fig2png.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# converts an image from XFIG to PNG format
|
||||||
|
# We go the long route to ensure that the image is of the highest
|
||||||
|
# possible quality.
|
||||||
|
|
||||||
|
# We expect a single arg, the name of the input file.
|
||||||
|
test $# -eq 1 || exit 1
|
||||||
|
|
||||||
|
input=`basename $1`
|
||||||
|
base=`basename ${input} .fig`
|
||||||
|
test ${input} = ${base} && {
|
||||||
|
echo Expecting an XFIG file as input
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
dir=`dirname $1`
|
||||||
|
base=${dir}/${base}
|
||||||
|
|
||||||
|
# Generate the fig2dev output
|
||||||
|
eps=${base}.eps
|
||||||
|
pstex_t=${base}.pstex_t
|
||||||
|
|
||||||
|
echo Entered FIG2PNG.SH
|
||||||
|
|
||||||
|
fig2dev -Lpstex ${input} ${eps}
|
||||||
|
fig2dev -Lpstex_t -p${base} ${input} ${pstex_t}
|
||||||
|
|
||||||
|
# Convert the EPS file (free of "special" text) to PNG format using gs
|
||||||
|
# gs is extremely fussy about the EPS files it converts, so ensure it is
|
||||||
|
# "clean" first.
|
||||||
|
clean_eps=${eps}.$$
|
||||||
|
eps2eps ${eps} ${clean_eps}
|
||||||
|
|
||||||
|
# Extract the width and height of the image using gs' bbox device.
|
||||||
|
# Ie, take output that includes a line "%%BoundingBox: 0 0 <width> <height>"
|
||||||
|
# and rewrite it as "-g<width>x<height>"
|
||||||
|
geometry=`gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox ${clean_eps} 2>&1 | \
|
||||||
|
sed '/^%%BoundingBox/! d' | cut -d' ' -f4,5 | \
|
||||||
|
sed 's/^\([0-9]\{1,\}\) \([0-9]\{1,\}\)$/-g\1x\2/'`
|
||||||
|
|
||||||
|
# Generate the bitmap using the -g option to ensure the size is the same
|
||||||
|
# as the original.
|
||||||
|
# If we're using a version of gs that does not have a bbox device, then
|
||||||
|
# $GEOMETRY = "", so there are no unwanted side effects.
|
||||||
|
png=${base}.png
|
||||||
|
gs -q -dSAFER -dBATCH -dNOPAUSE ${geometry} -sDEVICE=png16m \
|
||||||
|
-sOutputFile=${png} ${clean_eps}
|
||||||
|
rm -f ${clean_eps} ${eps}
|
@ -17,7 +17,7 @@ os.wait()
|
|||||||
|
|
||||||
pid = os.fork()
|
pid = os.fork()
|
||||||
if pid == 0:
|
if pid == 0:
|
||||||
os.execvp("fig2dev", ["fig2dev", "-Lpstex_t"] + parameters + [filename, basename + ".pstex_t"])
|
os.execvp("fig2dev", ["fig2dev", "-Lpstex_t", "-p" + basename] + parameters + [filename, basename + ".pstex_t"])
|
||||||
print "convert did not work second time"
|
print "fig2dev did not work the second time"
|
||||||
os.exit(1)
|
os.exit(1)
|
||||||
os.wait()
|
os.wait()
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2003-05-23 Angus Leeming <leeming@lyx.org>
|
||||||
|
|
||||||
|
* insetexternal.C (write): check how many lines are output.
|
||||||
|
(latex): use the "PDFLaTeX" flavour if outputting to pfdlatex and
|
||||||
|
if the template has defined it.
|
||||||
|
|
||||||
2003-05-23 Angus Leeming <leeming@lyx.org>
|
2003-05-23 Angus Leeming <leeming@lyx.org>
|
||||||
|
|
||||||
* insetquotes (validate): use the new LaTeXFeatures::useBabel() method.
|
* insetquotes (validate): use the new LaTeXFeatures::useBabel() method.
|
||||||
|
@ -11,14 +11,16 @@
|
|||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#include "insetexternal.h"
|
#include "insetexternal.h"
|
||||||
#include "ExternalTemplate.h"
|
|
||||||
#include "BufferView.h"
|
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "funcrequest.h"
|
#include "BufferView.h"
|
||||||
#include "lyx_main.h"
|
|
||||||
#include "LaTeXFeatures.h"
|
|
||||||
#include "gettext.h"
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "ExternalTemplate.h"
|
||||||
|
#include "funcrequest.h"
|
||||||
|
#include "gettext.h"
|
||||||
|
#include "LaTeXFeatures.h"
|
||||||
|
#include "latexrunparams.h"
|
||||||
|
#include "lyx_main.h"
|
||||||
#include "lyxlex.h"
|
#include "lyxlex.h"
|
||||||
#include "Lsstream.h"
|
#include "Lsstream.h"
|
||||||
|
|
||||||
@ -27,6 +29,7 @@
|
|||||||
|
|
||||||
#include "support/filetools.h"
|
#include "support/filetools.h"
|
||||||
#include "support/lstrings.h"
|
#include "support/lstrings.h"
|
||||||
|
#include "support/lyxalgo.h"
|
||||||
#include "support/path.h"
|
#include "support/path.h"
|
||||||
#include "support/systemcall.h"
|
#include "support/systemcall.h"
|
||||||
#include "support/FileInfo.h"
|
#include "support/FileInfo.h"
|
||||||
@ -161,14 +164,25 @@ int InsetExternal::write(string const & format,
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateExternal(format, buf);
|
updateExternal(format, buf);
|
||||||
os << doSubstitution(buf, cit->second.product);
|
string const str = doSubstitution(buf, cit->second.product);
|
||||||
return 0; // CHECK (FIXME check what ? - jbl)
|
os << str;
|
||||||
|
return int(lyx::count(str.begin(), str.end(),'\n') + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int InsetExternal::latex(Buffer const * buf, ostream & os,
|
int InsetExternal::latex(Buffer const * buf, ostream & os,
|
||||||
LatexRunParams const &) const
|
LatexRunParams const & runparams) const
|
||||||
{
|
{
|
||||||
|
// If the template has specified a PDFLaTeX output, then we try and
|
||||||
|
// use that.
|
||||||
|
if (runparams.flavor == LatexRunParams::PDFLATEX) {
|
||||||
|
ExternalTemplate const & et = params_.templ;
|
||||||
|
ExternalTemplate::Formats::const_iterator cit =
|
||||||
|
et.formats.find("PDFLaTeX");
|
||||||
|
if (cit != et.formats.end())
|
||||||
|
return write("PDFLaTeX", buf, os);
|
||||||
|
}
|
||||||
|
|
||||||
return write("LaTeX", buf, os);
|
return write("LaTeX", buf, os);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user