mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
Add "needcopiesfrom" converter flag
This is needed to provide ePub and other DocBook-based exports with
the right (renamed) images (fixes #12372)
(cherry picked from commit 03c5842006
)
This commit is contained in:
parent
f8b18714c4
commit
b21f104b37
@ -1022,7 +1022,7 @@ def checkConverterEntries():
|
|||||||
checkProg('DocBook converter -> PDF (docbook)',
|
checkProg('DocBook converter -> PDF (docbook)',
|
||||||
['pandoc -f docbook -t latex --pdf-engine=lualatex --toc -o $$o $$i', # Since Pandoc 2.0
|
['pandoc -f docbook -t latex --pdf-engine=lualatex --toc -o $$o $$i', # Since Pandoc 2.0
|
||||||
'pandoc -f docbook -t latex --latex-engine=lualatex --toc -o $$o $$i'], # Up to Pandoc 1.19
|
'pandoc -f docbook -t latex --latex-engine=lualatex --toc -o $$o $$i'], # Up to Pandoc 1.19
|
||||||
rc_entry = [ r'\converter docbook5 pdf9 "%%" ""' ])
|
rc_entry = [ r'\converter docbook5 pdf9 "%%" "needcopiesfrom=docbook5"' ])
|
||||||
#
|
#
|
||||||
xpath, xslt_sheet = checkProg('XSLT stylesheets for ePub', ['chunk.xsl'], '', ['/usr/share/xml/docbook/stylesheet/docbook-xsl-ns/epub3'])
|
xpath, xslt_sheet = checkProg('XSLT stylesheets for ePub', ['chunk.xsl'], '', ['/usr/share/xml/docbook/stylesheet/docbook-xsl-ns/epub3'])
|
||||||
if xslt_sheet == 'chunk.xsl':
|
if xslt_sheet == 'chunk.xsl':
|
||||||
@ -1031,9 +1031,9 @@ def checkConverterEntries():
|
|||||||
xpath = 'none'
|
xpath = 'none'
|
||||||
global java
|
global java
|
||||||
if xsltproc != '':
|
if xsltproc != '':
|
||||||
addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py none none \"' + xsltproc + r'\" ' + xpath + ' $$i $$r $$o" ""')
|
addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py none none \"' + xsltproc + r'\" ' + xpath + ' $$i $$r $$o" "needcopiesfrom=docbook5"')
|
||||||
elif java != '':
|
elif java != '':
|
||||||
addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py \"' + java + r'\" none none ' + xpath + ' $$i $$r $$o" ""')
|
addToRC(r'\converter docbook5 epub "$${python} $$s/scripts/docbook2epub.py \"' + java + r'\" none none ' + xpath + ' $$i $$r $$o" "needcopiesfrom=docbook5"')
|
||||||
#
|
#
|
||||||
checkProg('a MS Word Office Open XML converter -> LaTeX', ['pandoc -s -f docx -o $$o -t latex $$i'],
|
checkProg('a MS Word Office Open XML converter -> LaTeX', ['pandoc -s -f docx -o $$o -t latex $$i'],
|
||||||
rc_entry = [ r'\converter word2 latex "%%" ""' ])
|
rc_entry = [ r'\converter word2 latex "%%" ""' ])
|
||||||
|
@ -2622,6 +2622,51 @@ latex
|
|||||||
\begin_inset Flex Code
|
\begin_inset Flex Code
|
||||||
status collapsed
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
needcopiesfrom=<format>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
Some formats (e.
|
||||||
|
\begin_inset space \thinspace{}
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
g.,
|
||||||
|
DocBook) generate external files with specific names (for instance if math is rendered as graphic),
|
||||||
|
but they are only generated in the working directory if the respective format is the target format.
|
||||||
|
If you have such a format in your conversion chain and need those files in conversion,
|
||||||
|
use this flag with the respective
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
<format>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
(cf.
|
||||||
|
the DocBook to ePub converter,
|
||||||
|
which uses
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
needcopiesfrom=docbook5
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
).
|
||||||
|
The files will then be made available in the temporary directory as soon as the intermediate format has been generated.
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Labeling
|
||||||
|
\labelwidthstring 00.00.0000
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
nice
|
nice
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -2182,6 +2182,51 @@ latex
|
|||||||
\begin_inset Flex Code
|
\begin_inset Flex Code
|
||||||
status collapsed
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
needcopiesfrom=<Format>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
Manche Formate (bspw.
|
||||||
|
DocBook) erzeugen externe Dateien mit speziellen Namen (zum Beispiel,
|
||||||
|
wenn mathematische Formeln als Grafiken dargestellt werden),
|
||||||
|
allerdings geschieht dies nur,
|
||||||
|
wenn das Format den Endpunkt der Konversion darstellt,
|
||||||
|
die Dateien landen dann im Arbeitsverzeichnis.
|
||||||
|
Wenn Sie eines dieser Formate als Zwischenformat haben und diese Dateien im Konvertierungsprozess benötigen,
|
||||||
|
verwenden Sie diesen Flag mit dem entsprechenden
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
<Format>
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
(vgl.
|
||||||
|
den Konverter von DocBook nach ePub,
|
||||||
|
der
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
|
\begin_layout Plain Layout
|
||||||
|
needcopiesfrom=docbook5
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\end_inset
|
||||||
|
|
||||||
|
verwendet).
|
||||||
|
Die Dateien werden dann im temporären Verzeichnis zur Verfügung gestellt,
|
||||||
|
nachdem das Zwischenformat erzeugt wurde.
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Labeling
|
||||||
|
\labelwidthstring 00.00.0000
|
||||||
|
\begin_inset Flex Code
|
||||||
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
nice
|
nice
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -4615,7 +4615,8 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir
|
|||||||
Converters::RetVal const retval =
|
Converters::RetVal const retval =
|
||||||
converters.convert(this, FileName(filename), tmp_result_file,
|
converters.convert(this, FileName(filename), tmp_result_file,
|
||||||
FileName(absFileName()), backend_format, format,
|
FileName(absFileName()), backend_format, format,
|
||||||
error_list, Converters::none, includeall);
|
error_list, Converters::none, includeall,
|
||||||
|
runparams.exportdata);
|
||||||
if (retval == Converters::KILLED)
|
if (retval == Converters::KILLED)
|
||||||
return ExportCancel;
|
return ExportCancel;
|
||||||
bool success = (retval == Converters::SUCCESS);
|
bool success = (retval == Converters::SUCCESS);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "TextClass.h"
|
#include "TextClass.h"
|
||||||
#include "Encoding.h"
|
#include "Encoding.h"
|
||||||
#include "ErrorList.h"
|
#include "ErrorList.h"
|
||||||
|
#include "Exporter.h"
|
||||||
#include "Format.h"
|
#include "Format.h"
|
||||||
#include "InsetList.h"
|
#include "InsetList.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
@ -143,6 +144,8 @@ void Converter::readFlags()
|
|||||||
need_auth_ = true;
|
need_auth_ = true;
|
||||||
else if (flag_name == "hyperref-driver")
|
else if (flag_name == "hyperref-driver")
|
||||||
href_driver_ = flag_value;
|
href_driver_ = flag_value;
|
||||||
|
else if (flag_name == "needcopiesfrom")
|
||||||
|
need_renamed_copies_from_ = flag_value;
|
||||||
}
|
}
|
||||||
if (!result_dir_.empty() && result_file_.empty())
|
if (!result_dir_.empty() && result_file_.empty())
|
||||||
result_file_ = "index." + theFormats().extension(to_);
|
result_file_ = "index." + theFormats().extension(to_);
|
||||||
@ -414,7 +417,8 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
|
|||||||
FileName const & from_file, FileName const & to_file,
|
FileName const & from_file, FileName const & to_file,
|
||||||
FileName const & orig_from,
|
FileName const & orig_from,
|
||||||
string const & from_format, string const & to_format,
|
string const & from_format, string const & to_format,
|
||||||
ErrorList & errorList, int conversionflags, bool includeall)
|
ErrorList & errorList, int conversionflags, bool includeall,
|
||||||
|
shared_ptr<ExportData> exportdata)
|
||||||
{
|
{
|
||||||
if (from_format == to_format)
|
if (from_format == to_format)
|
||||||
return move(from_format, from_file, to_file, false) ?
|
return move(from_format, from_file, to_file, false) ?
|
||||||
@ -526,6 +530,22 @@ Converters::RetVal Converters::convert(Buffer const * buffer,
|
|||||||
FileName outfile = from_file;
|
FileName outfile = from_file;
|
||||||
for (auto const & edge : edgepath) {
|
for (auto const & edge : edgepath) {
|
||||||
Converter const & conv = converterlist_[edge];
|
Converter const & conv = converterlist_[edge];
|
||||||
|
// If the converter requires renamed file copies from an involved
|
||||||
|
// converter, handle this here. These copies stay in the tmp dir
|
||||||
|
if (exportdata && conv.need_renamed_copies_from() == conv.from()) {
|
||||||
|
vector<ExportedFile> const extfiles =
|
||||||
|
exportdata->externalFiles(conv.from());
|
||||||
|
CopyStatus status = FORCE;
|
||||||
|
for (ExportedFile const & exp : extfiles) {
|
||||||
|
string const fmt = theFormats().getFormatFromFile(exp.sourceName);
|
||||||
|
FileName expFileName = makeAbsPath(exp.exportName,
|
||||||
|
exp.sourceName.onlyPath().realPath());
|
||||||
|
status = copyFile(fmt, exp.sourceName,
|
||||||
|
expFileName,
|
||||||
|
exp.exportName, status == FORCE,
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
bool dummy = conv.To()->dummy() && conv.to() != "program";
|
bool dummy = conv.To()->dummy() && conv.to() != "program";
|
||||||
if (!dummy) {
|
if (!dummy) {
|
||||||
LYXERR(Debug::FILES, "Converting from "
|
LYXERR(Debug::FILES, "Converting from "
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "Graph.h"
|
#include "Graph.h"
|
||||||
#include "support/trivstring.h"
|
#include "support/trivstring.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -26,6 +27,7 @@ namespace support { class FileName; }
|
|||||||
|
|
||||||
class Buffer;
|
class Buffer;
|
||||||
class ErrorList;
|
class ErrorList;
|
||||||
|
class ExportData;
|
||||||
class Format;
|
class Format;
|
||||||
class Formats;
|
class Formats;
|
||||||
class OutputParams;
|
class OutputParams;
|
||||||
@ -91,6 +93,8 @@ public:
|
|||||||
std::string const parselog() const { return parselog_; }
|
std::string const parselog() const { return parselog_; }
|
||||||
///
|
///
|
||||||
std::string const hyperref_driver() const { return href_driver_; }
|
std::string const hyperref_driver() const { return href_driver_; }
|
||||||
|
///
|
||||||
|
std::string const need_renamed_copies_from() const { return need_renamed_copies_from_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///
|
///
|
||||||
@ -128,6 +132,8 @@ private:
|
|||||||
trivstring parselog_;
|
trivstring parselog_;
|
||||||
/// The hyperref driver
|
/// The hyperref driver
|
||||||
trivstring href_driver_;
|
trivstring href_driver_;
|
||||||
|
/// Needs renamed file copies from an intermediate format
|
||||||
|
trivstring need_renamed_copies_from_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -195,7 +201,8 @@ public:
|
|||||||
support::FileName const & from_file, support::FileName const & to_file,
|
support::FileName const & from_file, support::FileName const & to_file,
|
||||||
support::FileName const & orig_from,
|
support::FileName const & orig_from,
|
||||||
std::string const & from_format, std::string const & to_format,
|
std::string const & from_format, std::string const & to_format,
|
||||||
ErrorList & errorList, int conversionflags = none, bool includeall = false);
|
ErrorList & errorList, int conversionflags = none, bool includeall = false,
|
||||||
|
std::shared_ptr<ExportData> exportdata = nullptr);
|
||||||
///
|
///
|
||||||
void update(Formats const & formats);
|
void update(Formats const & formats);
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user