lyx_mirror/src/output_latex.h
Enrico Forestieri 2a5bb7ab67 Fix bug #10685
Make sure to properly nest \begin{lang} and \end{lang} tags even
when no language package is selected. In this case, LyX assumes
that babel is being used, so the language names might be wrong
if the user arranged for using polyglossia in the preamble.
Nevertheless, we assure that the produced output is syntactically
correct, so that by adding proper preamble code a correct output
is still possible.
2017-05-30 17:57:37 +02:00

92 lines
2.9 KiB
C++

// -*- C++ -*-
/**
* \file output_latex.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef OUTPUT_LATEX_H
#define OUTPUT_LATEX_H
#include <utility>
#include "support/docstream.h"
#include "Layout.h"
#include "ParagraphList.h"
namespace lyx {
class Buffer;
class BufferParams;
class Encoding;
class Layout;
class Paragraph;
class OutputParams;
class Text;
/** Register a language switch when using polyglossia or begin/end commands.
Set \p localswitch to true if a local command switch is used.
*/
void pushLanguageName(std::string const & lang, bool localswitch = false);
/** Unregister the last language switch when using polyglossia
or begin/end commands.
*/
void popLanguageName();
/** Export optional and required arguments of the paragraph \p par.
Non-existing required arguments are output empty: {}.
*/
void latexArgInsets(Paragraph const & par,
otexstream & os, OutputParams const & runparams,
Layout::LaTeXArgMap const & latexargs,
std::string const & prefix = std::string());
/// Same for merged environments
void latexArgInsets(ParagraphList const & pars,
ParagraphList::const_iterator pit,
otexstream & os, OutputParams const & runparams,
Layout::LaTeXArgMap const & latexargs,
std::string const & prefix = std::string());
/// Same for InsetLayouts
void latexArgInsetsForParent(ParagraphList const & pars, otexstream & os,
OutputParams const & runparams,
Layout::LaTeXArgMap const & latexargs,
std::string const & prefix = std::string());
/** Export \p paragraphs of buffer \p buf to LaTeX.
Don't use a temporary stringstream for \p os if the final output is
supposed to go to a file.
\sa Buffer::writeLaTeXSource for the reason.
*/
void latexParagraphs(Buffer const & buf,
Text const & text,
otexstream & ofs,
OutputParams const &,
std::string const & everypar = std::string());
/** Switch the encoding of \p os from runparams.encoding to \p newEnc if needed.
\p force forces this also within non-default or -auto encodings.
\return (did the encoding change?, number of characters written to \p os)
*/
std::pair<bool, int> switchEncoding(odocstream & os,
BufferParams const & bparams,
OutputParams const &, Encoding const & newEnc,
bool force = false);
/// FIXME: this should not be visible.
void TeXOnePar(Buffer const & buf,
Text const & text,
pit_type pit,
otexstream & os,
OutputParams const & runparams,
std::string const & everypar = std::string(),
int start_pos = -1, int end_pos = -1);
} // namespace lyx
#endif