mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Use the right latex backend when a converter needs aux files.
If a converter specifies the needaux flag, latex (or xelatex) is
always run to produce the needed auxiliary files. This is wrong
because there are documents that can only be compiled with a specific
backend and thus the conversion may fail. On the other hand, even if
the document specifies the backend to be used, LyX ignores this info.
This commit rectifies this behavior by letting LyX run the same flavor
of the latex backend that shall be used for previewing the document
also for producing the auxiliary files.
(cherry picked from commit 3285ce1d5c
)
Conflicts:
src/Converter.cpp
This commit is contained in:
parent
229fa2cd88
commit
99fe8ef2ba
0
lib/fonts/cmex10.ttf
Normal file → Executable file
0
lib/fonts/cmex10.ttf
Normal file → Executable file
0
lib/fonts/cmmi10.ttf
Normal file → Executable file
0
lib/fonts/cmmi10.ttf
Normal file → Executable file
0
lib/fonts/cmr10.ttf
Normal file → Executable file
0
lib/fonts/cmr10.ttf
Normal file → Executable file
0
lib/fonts/cmsy10.ttf
Normal file → Executable file
0
lib/fonts/cmsy10.ttf
Normal file → Executable file
0
lib/fonts/esint10.ttf
Normal file → Executable file
0
lib/fonts/esint10.ttf
Normal file → Executable file
0
lib/fonts/eufm10.ttf
Normal file → Executable file
0
lib/fonts/eufm10.ttf
Normal file → Executable file
0
lib/fonts/msam10.ttf
Normal file → Executable file
0
lib/fonts/msam10.ttf
Normal file → Executable file
0
lib/fonts/msbm10.ttf
Normal file → Executable file
0
lib/fonts/msbm10.ttf
Normal file → Executable file
0
lib/fonts/rsfs10.ttf
Normal file → Executable file
0
lib/fonts/rsfs10.ttf
Normal file → Executable file
0
lib/fonts/wasy10.ttf
Normal file → Executable file
0
lib/fonts/wasy10.ttf
Normal file → Executable file
@ -3544,7 +3544,7 @@ bool Buffer::doExport(string const & format, bool put_in_tempdir,
|
||||
}
|
||||
return false;
|
||||
}
|
||||
runparams.flavor = converters.getFlavor(path);
|
||||
runparams.flavor = converters.getFlavor(path, this);
|
||||
|
||||
} else {
|
||||
backend_format = format;
|
||||
|
@ -189,16 +189,25 @@ void Converters::add(string const & from, string const & to,
|
||||
}
|
||||
converter.readFlags();
|
||||
|
||||
// If we have both latex & pdflatex, we set latex_command to latex.
|
||||
// The latex_command is used to update the .aux file when running
|
||||
// a converter that uses it.
|
||||
if (converter.latex
|
||||
&& (latex_command_.empty() || converter.latex_flavor == "latex"))
|
||||
latex_command_ = subst(command, token_from, "");
|
||||
// Similarly, set xelatex_command to xelatex.
|
||||
if (converter.latex
|
||||
&& (xelatex_command_.empty() || converter.latex_flavor == "xelatex"))
|
||||
xelatex_command_ = subst(command, token_from, "");
|
||||
if (converter.latex) {
|
||||
if (latex_command_.empty() ||
|
||||
converter.latex_flavor == "latex")
|
||||
latex_command_ = subst(command, token_from, "");
|
||||
if (dvilualatex_command_.empty() ||
|
||||
converter.latex_flavor == "dvilualatex")
|
||||
dvilualatex_command_ = subst(command, token_from, "");
|
||||
if (lualatex_command_.empty() ||
|
||||
converter.latex_flavor == "lualatex")
|
||||
lualatex_command_ = subst(command, token_from, "");
|
||||
if (pdflatex_command_.empty() ||
|
||||
converter.latex_flavor == "pdflatex")
|
||||
pdflatex_command_ = subst(command, token_from, "");
|
||||
if (xelatex_command_.empty() ||
|
||||
converter.latex_flavor == "xelatex")
|
||||
xelatex_command_ = subst(command, token_from, "");
|
||||
}
|
||||
|
||||
if (it == converterlist_.end()) {
|
||||
converterlist_.push_back(converter);
|
||||
@ -258,6 +267,7 @@ void Converters::sort()
|
||||
|
||||
|
||||
OutputParams::FLAVOR Converters::getFlavor(Graph::EdgePath const & path)
|
||||
Buffer const * buffer)
|
||||
{
|
||||
for (Graph::EdgePath::const_iterator cit = path.begin();
|
||||
cit != path.end(); ++cit) {
|
||||
@ -274,7 +284,8 @@ OutputParams::FLAVOR Converters::getFlavor(Graph::EdgePath const & path)
|
||||
if (conv.xml)
|
||||
return OutputParams::XML;
|
||||
}
|
||||
return OutputParams::LATEX;
|
||||
return buffer ? buffer->params().getOutputFlavor()
|
||||
: OutputParams::LATEX;
|
||||
}
|
||||
|
||||
|
||||
@ -338,7 +349,7 @@ bool Converters::convert(Buffer const * buffer,
|
||||
// buffer is only invalid for importing, and then runparams is not
|
||||
// used anyway.
|
||||
OutputParams runparams(buffer ? &buffer->params().encoding() : 0);
|
||||
runparams.flavor = getFlavor(edgepath);
|
||||
runparams.flavor = getFlavor(edgepath, buffer);
|
||||
|
||||
if (buffer) {
|
||||
runparams.use_japanese = buffer->params().bufferFormat() == "platex";
|
||||
@ -403,14 +414,33 @@ bool Converters::convert(Buffer const * buffer,
|
||||
if (!runLaTeX(*buffer, command, runparams, errorList))
|
||||
return false;
|
||||
} else {
|
||||
if (conv.need_aux && !run_latex
|
||||
&& !latex_command_.empty()) {
|
||||
string const command = (buffer && buffer->params().useNonTeXFonts) ?
|
||||
xelatex_command_ : latex_command_;
|
||||
LYXERR(Debug::FILES, "Running " << command
|
||||
<< " to update aux file");
|
||||
if (!runLaTeX(*buffer, command, runparams, errorList))
|
||||
return false;
|
||||
if (conv.need_aux && !run_latex) {
|
||||
string command;
|
||||
switch (runparams.flavor) {
|
||||
case OutputParams::DVILUATEX:
|
||||
command = dvilualatex_command_;
|
||||
break;
|
||||
case OutputParams::LUATEX:
|
||||
command = lualatex_command_;
|
||||
break;
|
||||
case OutputParams::PDFLATEX:
|
||||
command = pdflatex_command_;
|
||||
break;
|
||||
case OutputParams::XETEX:
|
||||
command = xelatex_command_;
|
||||
break;
|
||||
default:
|
||||
command = latex_command_;
|
||||
break;
|
||||
}
|
||||
if (!command.empty()) {
|
||||
LYXERR(Debug::FILES, "Running "
|
||||
<< command
|
||||
<< " to update aux file");
|
||||
if (!runLaTeX(*buffer, command,
|
||||
runparams, errorList))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME UNICODE
|
||||
|
@ -115,7 +115,8 @@ public:
|
||||
///
|
||||
Graph::EdgePath getPath(std::string const & from, std::string const & to);
|
||||
///
|
||||
OutputParams::FLAVOR getFlavor(Graph::EdgePath const & path);
|
||||
OutputParams::FLAVOR getFlavor(Graph::EdgePath const & path,
|
||||
Buffer const * buffer = 0);
|
||||
/// Flags for converting files
|
||||
enum ConversionFlags {
|
||||
/// No special flags
|
||||
@ -158,6 +159,12 @@ private:
|
||||
///
|
||||
std::string latex_command_;
|
||||
///
|
||||
std::string dvilualatex_command_;
|
||||
///
|
||||
std::string lualatex_command_;
|
||||
///
|
||||
std::string pdflatex_command_;
|
||||
///
|
||||
std::string xelatex_command_;
|
||||
/// If \p from = /path/file.ext and \p to = /path2/file2.ext2 then
|
||||
/// this method moves each /path/file*.ext file to /path2/file2*.ext2
|
||||
|
@ -85,6 +85,10 @@ What's new
|
||||
- Fixed reading the bounding box from EPS figures with negative
|
||||
values (bug 8114).
|
||||
|
||||
- Fix generation of auxiliary files for converters specifying the needaux
|
||||
flag by using the same latex backend used for previewing the document
|
||||
instead of always using the plain latex backend.
|
||||
|
||||
|
||||
* USER INTERFACE
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user