mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-26 14:15:32 +00:00
move some functions around
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6328 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
b366633564
commit
60322bc9d7
@ -1,5 +1,13 @@
|
||||
2003-03-03 Lars Gullik Bjønnes <larsbj@gullik.net>
|
||||
|
||||
* buffer.C (latexParagraphs): adjust
|
||||
|
||||
* paragraph.C (TeXOnePar): move function...
|
||||
(optArgInset): move function...
|
||||
(TeXEnvironment): move function...
|
||||
* paragraph_pimpl.C (TeXDeeper): move function...
|
||||
* paragraph_funcs.C: ...here
|
||||
|
||||
* tabular.C (UseParbox): rewrite to use ParagraphList iterators.
|
||||
|
||||
2003-03-02 Lars Gullik Bjønnes <larsbj@gullik.net>
|
||||
|
@ -1865,12 +1865,12 @@ void Buffer::latexParagraphs(ostream & ofs, Paragraph * par,
|
||||
if (layout->isEnvironment() ||
|
||||
!par->params().leftIndent().zero())
|
||||
{
|
||||
par = par->TeXEnvironment(this, params, ofs, texrow);
|
||||
par = TeXEnvironment(this, params, par, ofs, texrow);
|
||||
} else {
|
||||
par = par->TeXOnePar(this, params, ofs, texrow, moving_arg);
|
||||
par = TeXOnePar(this, params, par, ofs, texrow, moving_arg);
|
||||
}
|
||||
} else {
|
||||
par = par->TeXOnePar(this, params, ofs, texrow, moving_arg);
|
||||
par = TeXOnePar(this, params, par, ofs, texrow, moving_arg);
|
||||
}
|
||||
}
|
||||
// It might be that we only have a title in this document
|
||||
|
386
src/paragraph.C
386
src/paragraph.C
@ -50,10 +50,6 @@ using std::upper_bound;
|
||||
|
||||
using lyx::pos_type;
|
||||
|
||||
// this is a bad idea, but how can Paragraph find its buffer to get
|
||||
// parameters? (JMarc)
|
||||
|
||||
extern string bibitemWidest(Buffer const *);
|
||||
|
||||
// this is a minibuffer
|
||||
|
||||
@ -225,7 +221,7 @@ void Paragraph::write(Buffer const * buf, ostream & os,
|
||||
|
||||
Change running_change = Change(Change::UNCHANGED);
|
||||
lyx::time_type const curtime(lyx::current_time());
|
||||
|
||||
|
||||
int column = 0;
|
||||
for (pos_type i = 0; i < size(); ++i) {
|
||||
if (!i) {
|
||||
@ -236,7 +232,7 @@ void Paragraph::write(Buffer const * buf, ostream & os,
|
||||
Change change = pimpl_->lookupChangeFull(i);
|
||||
Changes::lyxMarkChange(os, column, curtime, running_change, change);
|
||||
running_change = change;
|
||||
|
||||
|
||||
// Write font changes
|
||||
LyXFont font2 = getFontSettings(bparams, i);
|
||||
if (font2 != font1) {
|
||||
@ -308,7 +304,7 @@ void Paragraph::write(Buffer const * buf, ostream & os,
|
||||
Change(Change::UNCHANGED), running_change);
|
||||
}
|
||||
Changes::lyxMarkChange(os, column, curtime,
|
||||
running_change, Change(Change::UNCHANGED));
|
||||
running_change, Change(Change::UNCHANGED));
|
||||
}
|
||||
|
||||
|
||||
@ -391,7 +387,7 @@ bool Paragraph::erase(pos_type start, pos_type end)
|
||||
return pimpl_->erase(start, end);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool Paragraph::checkInsertChar(LyXFont & font)
|
||||
{
|
||||
if (pimpl_->inset_owner)
|
||||
@ -936,7 +932,7 @@ int Paragraph::getPositionOfInset(Inset const * inset) const
|
||||
InsetList::iterator it = insetlist.begin();
|
||||
InsetList::iterator end = insetlist.end();
|
||||
for (; it != end; ++it)
|
||||
if (it.getInset() == inset)
|
||||
if (it.getInset() == inset)
|
||||
return it.getPos();
|
||||
return -1;
|
||||
}
|
||||
@ -946,254 +942,10 @@ InsetBibitem * Paragraph::bibitem()
|
||||
{
|
||||
InsetList::iterator it = insetlist.begin();
|
||||
if (it != insetlist.end() && it.getInset()->lyxCode() == Inset::BIBTEX_CODE)
|
||||
return static_cast<InsetBibitem *>(it.getInset());
|
||||
return static_cast<InsetBibitem *>(it.getInset());
|
||||
return 0;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
InsetOptArg * optArgInset(Paragraph const & par)
|
||||
{
|
||||
// Find the entry.
|
||||
InsetList::iterator it = par.insetlist.begin();
|
||||
InsetList::iterator end = par.insetlist.end();
|
||||
for (; it != end; ++it) {
|
||||
Inset * ins = it.getInset();
|
||||
if (ins->lyxCode() == Inset::OPTARG_CODE) {
|
||||
return static_cast<InsetOptArg *>(ins);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
|
||||
Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
ostream & os, TexRow & texrow,
|
||||
bool moving_arg)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXOnePar... " << this << endl;
|
||||
Inset const * in = inInset();
|
||||
bool further_blank_line = false;
|
||||
LyXLayout_ptr style;
|
||||
|
||||
// well we have to check if we are in an inset with unlimited
|
||||
// lenght (all in one row) if that is true then we don't allow
|
||||
// any special options in the paragraph and also we don't allow
|
||||
// any environment other then "Standard" to be valid!
|
||||
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
|
||||
style = layout();
|
||||
|
||||
if (params().startOfAppendix()) {
|
||||
os << "\\appendix\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (!params().spacing().isDefault()
|
||||
&& (!previous() || !previous()->hasSameLayout(this))) {
|
||||
os << params().spacing().writeEnvirBegin() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (style->isCommand()) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (params().pagebreakTop()) {
|
||||
os << "\\newpage";
|
||||
further_blank_line = true;
|
||||
}
|
||||
if (params().spaceTop().kind() != VSpace::NONE) {
|
||||
os << params().spaceTop().asLatexCommand(bparams);
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (params().lineTop()) {
|
||||
os << "\\lyxline{\\" << getFont(bparams, 0).latexSize() << '}'
|
||||
<< "\\vspace{-1\\parskip}";
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (further_blank_line) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
} else {
|
||||
style = bparams.getLyXTextClass().defaultLayout();
|
||||
}
|
||||
|
||||
Language const * language = getParLanguage(bparams);
|
||||
Language const * doc_language = bparams.language;
|
||||
Language const * previous_language = previous()
|
||||
? previous()->getParLanguage(bparams) : doc_language;
|
||||
|
||||
if (language->babel() != previous_language->babel()
|
||||
// check if we already put language command in TeXEnvironment()
|
||||
&& !(style->isEnvironment()
|
||||
&& (!previous() ||
|
||||
(previous()->layout() != layout() &&
|
||||
previous()->getDepth() <= getDepth())
|
||||
|| previous()->getDepth() < getDepth())))
|
||||
{
|
||||
if (!lyxrc.language_command_end.empty() &&
|
||||
previous_language->babel() != doc_language->babel())
|
||||
{
|
||||
os << subst(lyxrc.language_command_end, "$$lang",
|
||||
previous_language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (lyxrc.language_command_end.empty() ||
|
||||
language->babel() != doc_language->babel())
|
||||
{
|
||||
os << subst(lyxrc.language_command_begin, "$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
if (bparams.inputenc == "auto" &&
|
||||
language->encoding() != previous_language->encoding()) {
|
||||
os << "\\inputencoding{"
|
||||
<< language->encoding()->LatexName()
|
||||
<< "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
switch (style->latextype) {
|
||||
case LATEX_COMMAND:
|
||||
os << '\\' << style->latexname();
|
||||
|
||||
// Separate handling of optional argument inset.
|
||||
if (style->optionalargs == 1) {
|
||||
InsetOptArg * it = optArgInset(*this);
|
||||
if (it)
|
||||
it->latexOptional(buf, os, false, false);
|
||||
}
|
||||
else
|
||||
os << style->latexparam();
|
||||
break;
|
||||
case LATEX_ITEM_ENVIRONMENT:
|
||||
case LATEX_LIST_ENVIRONMENT:
|
||||
os << "\\item ";
|
||||
break;
|
||||
case LATEX_BIB_ENVIRONMENT:
|
||||
// ignore this, the inset will write itself
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
bool need_par = simpleTeXOnePar(buf, bparams, os, texrow, moving_arg);
|
||||
|
||||
// Make sure that \\par is done with the font of the last
|
||||
// character if this has another size as the default.
|
||||
// This is necessary because LaTeX (and LyX on the screen)
|
||||
// calculates the space between the baselines according
|
||||
// to this font. (Matthias)
|
||||
//
|
||||
// Is this really needed ? (Dekel)
|
||||
// We do not need to use to change the font for the last paragraph
|
||||
// or for a command.
|
||||
LyXFont const font =
|
||||
(empty()
|
||||
? getLayoutFont(bparams) : getFont(bparams, size() - 1));
|
||||
|
||||
bool is_command = style->isCommand();
|
||||
|
||||
if (style->resfont.size() != font.size() && next_ && !is_command) {
|
||||
if (!need_par)
|
||||
os << '{';
|
||||
os << "\\" << font.latexSize() << " \\par}";
|
||||
} else if (need_par) {
|
||||
os << "\\par}";
|
||||
} else if (is_command)
|
||||
os << '}';
|
||||
|
||||
switch (style->latextype) {
|
||||
case LATEX_ITEM_ENVIRONMENT:
|
||||
case LATEX_LIST_ENVIRONMENT:
|
||||
if (next_ && (params().depth() < next_->params().depth())) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
break;
|
||||
case LATEX_ENVIRONMENT:
|
||||
// if its the last paragraph of the current environment
|
||||
// skip it otherwise fall through
|
||||
if (next_
|
||||
&& (next_->layout() != layout()
|
||||
|| next_->params().depth() != params().depth()))
|
||||
break;
|
||||
// fall through possible
|
||||
default:
|
||||
// we don't need it for the last paragraph!!!
|
||||
if (next_) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
|
||||
further_blank_line = false;
|
||||
if (params().lineBottom()) {
|
||||
os << "\\lyxline{\\" << font.latexSize() << '}';
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (params().spaceBottom().kind() != VSpace::NONE) {
|
||||
os << params().spaceBottom().asLatexCommand(bparams);
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (params().pagebreakBottom()) {
|
||||
os << "\\newpage";
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (further_blank_line) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (!params().spacing().isDefault()
|
||||
&& (!next_ || !next_->hasSameLayout(this))) {
|
||||
os << params().spacing().writeEnvirEnd() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
// we don't need it for the last paragraph!!!
|
||||
if (next_) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
} else {
|
||||
// Since \selectlanguage write the language to the aux file,
|
||||
// we need to reset the language at the end of footnote or
|
||||
// float.
|
||||
|
||||
if (language->babel() != doc_language->babel()) {
|
||||
if (lyxrc.language_command_end.empty())
|
||||
os << subst(lyxrc.language_command_begin,
|
||||
"$$lang",
|
||||
doc_language->babel())
|
||||
<< endl;
|
||||
else
|
||||
os << subst(lyxrc.language_command_end,
|
||||
"$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
lyxerr[Debug::LATEX] << "TeXOnePar...done " << next_ << endl;
|
||||
return next_;
|
||||
}
|
||||
|
||||
|
||||
// This could go to ParagraphParameters if we want to
|
||||
@ -1368,7 +1120,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
|
||||
bool open_font = false;
|
||||
|
||||
Change::Type running_change = Change::UNCHANGED;
|
||||
|
||||
|
||||
texrow.start(this, 0);
|
||||
|
||||
// if the paragraph is empty, the loop will not be entered at all
|
||||
@ -1455,12 +1207,12 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
|
||||
running_font = font;
|
||||
open_font = true;
|
||||
}
|
||||
|
||||
|
||||
Change::Type change = pimpl_->lookupChange(i);
|
||||
|
||||
|
||||
column += Changes::latexMarkChange(os, running_change, change);
|
||||
running_change = change;
|
||||
|
||||
|
||||
if (c == Paragraph::META_NEWLINE) {
|
||||
// newlines are handled differently here than
|
||||
// the default in SimpleTeXSpecialChars().
|
||||
@ -1497,7 +1249,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
|
||||
|
||||
column += Changes::latexMarkChange(os,
|
||||
running_change, Change::UNCHANGED);
|
||||
|
||||
|
||||
// If we have an open font definition, we have to close it
|
||||
if (open_font) {
|
||||
#ifdef FIXED_LANGUAGE_END_DETECTION
|
||||
@ -1535,106 +1287,6 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
|
||||
}
|
||||
|
||||
|
||||
Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
ostream & os, TexRow & texrow)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXEnvironment... " << this << endl;
|
||||
|
||||
LyXLayout_ptr const & style = layout();
|
||||
|
||||
Language const * language = getParLanguage(bparams);
|
||||
Language const * doc_language = bparams.language;
|
||||
Language const * previous_language = previous_
|
||||
? previous_->getParLanguage(bparams) : doc_language;
|
||||
if (language->babel() != previous_language->babel()) {
|
||||
|
||||
if (!lyxrc.language_command_end.empty() &&
|
||||
previous_language->babel() != doc_language->babel()) {
|
||||
os << subst(lyxrc.language_command_end, "$$lang",
|
||||
previous_language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (lyxrc.language_command_end.empty() ||
|
||||
language->babel() != doc_language->babel()) {
|
||||
os << subst(lyxrc.language_command_begin, "$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
bool leftindent_open = false;
|
||||
if (!params().leftIndent().zero()) {
|
||||
os << "\\begin{LyXParagraphLeftIndent}{" <<
|
||||
params().leftIndent().asLatexString() << "}\n";
|
||||
texrow.newline();
|
||||
leftindent_open = true;
|
||||
}
|
||||
|
||||
if (style->isEnvironment()) {
|
||||
if (style->latextype == LATEX_LIST_ENVIRONMENT) {
|
||||
os << "\\begin{" << style->latexname() << "}{"
|
||||
<< params().labelWidthString() << "}\n";
|
||||
} else if (style->labeltype == LABEL_BIBLIO) {
|
||||
// ale970405
|
||||
os << "\\begin{" << style->latexname() << "}{"
|
||||
<< bibitemWidest(buf)
|
||||
<< "}\n";
|
||||
} else if (style->latextype == LATEX_ITEM_ENVIRONMENT) {
|
||||
os << "\\begin{" << style->latexname() << '}'
|
||||
<< style->latexparam() << '\n';
|
||||
} else
|
||||
os << "\\begin{" << style->latexname() << '}'
|
||||
<< style->latexparam() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
Paragraph * par = this;
|
||||
do {
|
||||
par = par->TeXOnePar(buf, bparams, os, texrow, false);
|
||||
|
||||
if (par && par->params().depth() > params().depth()) {
|
||||
if (par->layout()->isParagraph()) {
|
||||
|
||||
// Thinko!
|
||||
// How to handle this? (Lgb)
|
||||
//&& !suffixIs(os, "\n\n")
|
||||
//) {
|
||||
// There should be at least one '\n' already
|
||||
// but we need there to be two for Standard
|
||||
// paragraphs that are depth-increment'ed to be
|
||||
// output correctly. However, tables can
|
||||
// also be paragraphs so don't adjust them.
|
||||
// ARRae
|
||||
// Thinkee:
|
||||
// Will it ever harm to have one '\n' too
|
||||
// many? i.e. that we sometimes will have
|
||||
// three in a row. (Lgb)
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
par = par->pimpl_->TeXDeeper(buf, bparams, os, texrow);
|
||||
}
|
||||
} while (par
|
||||
&& par->layout() == layout()
|
||||
&& par->params().depth() == params().depth()
|
||||
&& par->params().leftIndent() == params().leftIndent());
|
||||
|
||||
if (style->isEnvironment()) {
|
||||
os << "\\end{" << style->latexname() << "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (leftindent_open) {
|
||||
os << "\\end{LyXParagraphLeftIndent}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
lyxerr[Debug::LATEX] << "TeXEnvironment...done " << par << endl;
|
||||
return par; // ale970302
|
||||
}
|
||||
|
||||
|
||||
bool Paragraph::isHfill(pos_type pos) const
|
||||
@ -1831,7 +1483,7 @@ void Paragraph::trackChanges(Change::Type type)
|
||||
pimpl_->trackChanges(type);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::untrackChanges()
|
||||
{
|
||||
pimpl_->untrackChanges();
|
||||
@ -1843,21 +1495,21 @@ void Paragraph::cleanChanges()
|
||||
pimpl_->cleanChanges();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Change::Type Paragraph::lookupChange(lyx::pos_type pos) const
|
||||
{
|
||||
lyx::Assert(!size() || pos < size());
|
||||
return pimpl_->lookupChange(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Change const Paragraph::lookupChangeFull(lyx::pos_type pos) const
|
||||
{
|
||||
lyx::Assert(!size() || pos < size());
|
||||
return pimpl_->lookupChangeFull(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool Paragraph::isChanged(pos_type start, pos_type end) const
|
||||
{
|
||||
return pimpl_->isChanged(start, end);
|
||||
@ -1869,25 +1521,25 @@ bool Paragraph::isChangeEdited(pos_type start, pos_type end) const
|
||||
return pimpl_->isChangeEdited(start, end);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::markErased()
|
||||
{
|
||||
pimpl_->markErased();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::acceptChange(pos_type start, pos_type end)
|
||||
{
|
||||
return pimpl_->acceptChange(start, end);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::rejectChange(pos_type start, pos_type end)
|
||||
{
|
||||
return pimpl_->rejectChange(start, end);
|
||||
}
|
||||
|
||||
|
||||
|
||||
lyx::pos_type Paragraph::size() const
|
||||
{
|
||||
return pimpl_->size();
|
||||
|
@ -90,11 +90,6 @@ public:
|
||||
///
|
||||
void read();
|
||||
|
||||
///
|
||||
Paragraph * TeXOnePar(Buffer const *, BufferParams const &,
|
||||
std::ostream &, TexRow & texrow,
|
||||
bool moving_arg);
|
||||
|
||||
///
|
||||
int startTeXParParams(BufferParams const &, std::ostream &, bool) const;
|
||||
|
||||
@ -107,9 +102,6 @@ public:
|
||||
std::ostream &, TexRow & texrow, bool moving_arg);
|
||||
|
||||
///
|
||||
Paragraph * TeXEnvironment(Buffer const *, BufferParams const &,
|
||||
std::ostream &, TexRow & texrow);
|
||||
///
|
||||
bool hasSameLayout(Paragraph const * par) const;
|
||||
|
||||
///
|
||||
@ -164,34 +156,34 @@ public:
|
||||
|
||||
/// initialise tracking for this par
|
||||
void trackChanges(Change::Type = Change::UNCHANGED);
|
||||
|
||||
|
||||
/// stop tracking
|
||||
void untrackChanges();
|
||||
|
||||
|
||||
/// set entire paragraph to new text for change tracking
|
||||
void cleanChanges();
|
||||
|
||||
|
||||
/// look up change type at given pos
|
||||
Change::Type lookupChange(lyx::pos_type pos) const;
|
||||
|
||||
|
||||
/// look up change at given pos
|
||||
Change const lookupChangeFull(lyx::pos_type pos) const;
|
||||
|
||||
|
||||
/// is there a change within the given range ?
|
||||
bool isChanged(lyx::pos_type start, lyx::pos_type end) const;
|
||||
|
||||
/// is there a non-addition in this range ?
|
||||
bool isChangeEdited(lyx::pos_type start, lyx::pos_type end) const;
|
||||
|
||||
|
||||
/// accept change
|
||||
void acceptChange(lyx::pos_type start, lyx::pos_type end);
|
||||
|
||||
/// reject change
|
||||
void rejectChange(lyx::pos_type start, lyx::pos_type end);
|
||||
|
||||
|
||||
/// mark whole par as erased
|
||||
void markErased();
|
||||
|
||||
|
||||
///
|
||||
void previous(Paragraph *);
|
||||
///
|
||||
@ -224,12 +216,12 @@ public:
|
||||
depth_type getMaxDepthAfter() const;
|
||||
///
|
||||
void applyLayout(LyXLayout_ptr const & new_layout);
|
||||
|
||||
|
||||
/// erase the char at the given position
|
||||
void erase(lyx::pos_type pos);
|
||||
/// erase the given range. Returns true if actually erased.
|
||||
bool erase(lyx::pos_type start, lyx::pos_type end);
|
||||
|
||||
|
||||
/** Get uninstantiated font setting. Returns the difference
|
||||
between the characters font and the layoutfont.
|
||||
This is what is stored in the fonttable
|
||||
@ -323,8 +315,8 @@ public:
|
||||
//Counters & counters();
|
||||
|
||||
friend void breakParagraph(BufferParams const & bparams,
|
||||
Paragraph * par, lyx::pos_type pos, int flag);
|
||||
|
||||
Paragraph * par, lyx::pos_type pos, int flag);
|
||||
|
||||
private:
|
||||
///
|
||||
LyXLayout_ptr layout_;
|
||||
@ -343,16 +335,16 @@ private:
|
||||
Pimpl * pimpl_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline bool isInsertedText(Paragraph const & par, lyx::pos_type pos)
|
||||
{
|
||||
return par.lookupChange(pos) == Change::INSERTED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
inline bool isDeletedText(Paragraph const & par, lyx::pos_type pos)
|
||||
{
|
||||
return par.lookupChange(pos) == Change::DELETED;
|
||||
}
|
||||
|
||||
|
||||
#endif // PARAGRAPH_H
|
||||
|
@ -16,11 +16,18 @@
|
||||
#include "ParagraphParameters.h"
|
||||
#include "lyxtextclasslist.h"
|
||||
#include "debug.h"
|
||||
#include "language.h"
|
||||
#include "encoding.h"
|
||||
#include "lyxrc.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "insets/insetoptarg.h"
|
||||
|
||||
extern string bibitemWidest(Buffer const *);
|
||||
|
||||
using lyx::pos_type;
|
||||
//using lyx::layout_type;
|
||||
using std::endl;
|
||||
|
||||
using std::ostream;
|
||||
|
||||
void breakParagraph(BufferParams const & bparams,
|
||||
Paragraph * par,
|
||||
@ -37,7 +44,7 @@ void breakParagraph(BufferParams const & bparams,
|
||||
|
||||
if (bparams.tracking_changes)
|
||||
tmp->trackChanges();
|
||||
|
||||
|
||||
// this is an idea for a more userfriendly layout handling, I will
|
||||
// see what the users say
|
||||
|
||||
@ -238,3 +245,377 @@ int getEndLabel(Paragraph * para, BufferParams const & bparams)
|
||||
return END_LABEL_NO_LABEL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Paragraph * TeXDeeper(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
ostream & os, TexRow & texrow)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXDeeper... " << pit << endl;
|
||||
Paragraph * par = pit;
|
||||
|
||||
while (par && par->params().depth() == pit->params().depth()) {
|
||||
if (par->layout()->isEnvironment()) {
|
||||
par = TeXEnvironment(buf, bparams, par,
|
||||
os, texrow);
|
||||
} else {
|
||||
par = TeXOnePar(buf, bparams, par,
|
||||
os, texrow, false);
|
||||
}
|
||||
}
|
||||
lyxerr[Debug::LATEX] << "TeXDeeper...done " << par << endl;
|
||||
|
||||
return par;
|
||||
}
|
||||
|
||||
|
||||
Paragraph * TeXEnvironment(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
ostream & os, TexRow & texrow)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXEnvironment... " << pit << endl;
|
||||
|
||||
LyXLayout_ptr const & style = pit->layout();
|
||||
|
||||
Language const * language = pit->getParLanguage(bparams);
|
||||
Language const * doc_language = bparams.language;
|
||||
Language const * previous_language = pit->previous()
|
||||
? pit->previous()->getParLanguage(bparams) : doc_language;
|
||||
if (language->babel() != previous_language->babel()) {
|
||||
|
||||
if (!lyxrc.language_command_end.empty() &&
|
||||
previous_language->babel() != doc_language->babel()) {
|
||||
os << subst(lyxrc.language_command_end, "$$lang",
|
||||
previous_language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (lyxrc.language_command_end.empty() ||
|
||||
language->babel() != doc_language->babel()) {
|
||||
os << subst(lyxrc.language_command_begin, "$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
bool leftindent_open = false;
|
||||
if (!pit->params().leftIndent().zero()) {
|
||||
os << "\\begin{LyXParagraphLeftIndent}{" <<
|
||||
pit->params().leftIndent().asLatexString() << "}\n";
|
||||
texrow.newline();
|
||||
leftindent_open = true;
|
||||
}
|
||||
|
||||
if (style->isEnvironment()) {
|
||||
if (style->latextype == LATEX_LIST_ENVIRONMENT) {
|
||||
os << "\\begin{" << style->latexname() << "}{"
|
||||
<< pit->params().labelWidthString() << "}\n";
|
||||
} else if (style->labeltype == LABEL_BIBLIO) {
|
||||
// ale970405
|
||||
os << "\\begin{" << style->latexname() << "}{"
|
||||
<< bibitemWidest(buf)
|
||||
<< "}\n";
|
||||
} else if (style->latextype == LATEX_ITEM_ENVIRONMENT) {
|
||||
os << "\\begin{" << style->latexname() << '}'
|
||||
<< style->latexparam() << '\n';
|
||||
} else
|
||||
os << "\\begin{" << style->latexname() << '}'
|
||||
<< style->latexparam() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
Paragraph * par = pit;
|
||||
do {
|
||||
par = TeXOnePar(buf, bparams, par, os, texrow, false);
|
||||
|
||||
if (par && par->params().depth() > pit->params().depth()) {
|
||||
if (par->layout()->isParagraph()) {
|
||||
|
||||
// Thinko!
|
||||
// How to handle this? (Lgb)
|
||||
//&& !suffixIs(os, "\n\n")
|
||||
//) {
|
||||
// There should be at least one '\n' already
|
||||
// but we need there to be two for Standard
|
||||
// paragraphs that are depth-increment'ed to be
|
||||
// output correctly. However, tables can
|
||||
// also be paragraphs so don't adjust them.
|
||||
// ARRae
|
||||
// Thinkee:
|
||||
// Will it ever harm to have one '\n' too
|
||||
// many? i.e. that we sometimes will have
|
||||
// three in a row. (Lgb)
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
par = TeXDeeper(buf, bparams, par, os, texrow);
|
||||
}
|
||||
} while (par
|
||||
&& par->layout() == pit->layout()
|
||||
&& par->params().depth() == pit->params().depth()
|
||||
&& par->params().leftIndent() == pit->params().leftIndent());
|
||||
|
||||
if (style->isEnvironment()) {
|
||||
os << "\\end{" << style->latexname() << "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (leftindent_open) {
|
||||
os << "\\end{LyXParagraphLeftIndent}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
lyxerr[Debug::LATEX] << "TeXEnvironment...done " << par << endl;
|
||||
return par; // ale970302
|
||||
}
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
InsetOptArg * optArgInset(Paragraph const & par)
|
||||
{
|
||||
// Find the entry.
|
||||
InsetList::iterator it = par.insetlist.begin();
|
||||
InsetList::iterator end = par.insetlist.end();
|
||||
for (; it != end; ++it) {
|
||||
Inset * ins = it.getInset();
|
||||
if (ins->lyxCode() == Inset::OPTARG_CODE) {
|
||||
return static_cast<InsetOptArg *>(ins);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
|
||||
|
||||
Paragraph * TeXOnePar(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
ostream & os, TexRow & texrow,
|
||||
bool moving_arg)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXOnePar... " << pit << endl;
|
||||
Inset const * in = pit->inInset();
|
||||
bool further_blank_line = false;
|
||||
LyXLayout_ptr style;
|
||||
|
||||
// well we have to check if we are in an inset with unlimited
|
||||
// lenght (all in one row) if that is true then we don't allow
|
||||
// any special options in the paragraph and also we don't allow
|
||||
// any environment other then "Standard" to be valid!
|
||||
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
|
||||
style = pit->layout();
|
||||
|
||||
if (pit->params().startOfAppendix()) {
|
||||
os << "\\appendix\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (!pit->params().spacing().isDefault()
|
||||
&& (!pit->previous() || !pit->previous()->hasSameLayout(pit))) {
|
||||
os << pit->params().spacing().writeEnvirBegin() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (style->isCommand()) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (pit->params().pagebreakTop()) {
|
||||
os << "\\newpage";
|
||||
further_blank_line = true;
|
||||
}
|
||||
if (pit->params().spaceTop().kind() != VSpace::NONE) {
|
||||
os << pit->params().spaceTop().asLatexCommand(bparams);
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (pit->params().lineTop()) {
|
||||
os << "\\lyxline{\\" << pit->getFont(bparams, 0).latexSize() << '}'
|
||||
<< "\\vspace{-1\\parskip}";
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (further_blank_line) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
} else {
|
||||
style = bparams.getLyXTextClass().defaultLayout();
|
||||
}
|
||||
|
||||
Language const * language = pit->getParLanguage(bparams);
|
||||
Language const * doc_language = bparams.language;
|
||||
Language const * previous_language = pit->previous()
|
||||
? pit->previous()->getParLanguage(bparams) : doc_language;
|
||||
|
||||
if (language->babel() != previous_language->babel()
|
||||
// check if we already put language command in TeXEnvironment()
|
||||
&& !(style->isEnvironment()
|
||||
&& (!pit->previous() ||
|
||||
(pit->previous()->layout() != pit->layout() &&
|
||||
pit->previous()->getDepth() <= pit->getDepth())
|
||||
|| pit->previous()->getDepth() < pit->getDepth())))
|
||||
{
|
||||
if (!lyxrc.language_command_end.empty() &&
|
||||
previous_language->babel() != doc_language->babel())
|
||||
{
|
||||
os << subst(lyxrc.language_command_end, "$$lang",
|
||||
previous_language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (lyxrc.language_command_end.empty() ||
|
||||
language->babel() != doc_language->babel())
|
||||
{
|
||||
os << subst(lyxrc.language_command_begin, "$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
if (bparams.inputenc == "auto" &&
|
||||
language->encoding() != previous_language->encoding()) {
|
||||
os << "\\inputencoding{"
|
||||
<< language->encoding()->LatexName()
|
||||
<< "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
switch (style->latextype) {
|
||||
case LATEX_COMMAND:
|
||||
os << '\\' << style->latexname();
|
||||
|
||||
// Separate handling of optional argument inset.
|
||||
if (style->optionalargs == 1) {
|
||||
InsetOptArg * it = optArgInset(*pit);
|
||||
if (it)
|
||||
it->latexOptional(buf, os, false, false);
|
||||
}
|
||||
else
|
||||
os << style->latexparam();
|
||||
break;
|
||||
case LATEX_ITEM_ENVIRONMENT:
|
||||
case LATEX_LIST_ENVIRONMENT:
|
||||
os << "\\item ";
|
||||
break;
|
||||
case LATEX_BIB_ENVIRONMENT:
|
||||
// ignore this, the inset will write itself
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
bool need_par = pit->simpleTeXOnePar(buf, bparams, os, texrow, moving_arg);
|
||||
|
||||
// Make sure that \\par is done with the font of the last
|
||||
// character if this has another size as the default.
|
||||
// This is necessary because LaTeX (and LyX on the screen)
|
||||
// calculates the space between the baselines according
|
||||
// to this font. (Matthias)
|
||||
//
|
||||
// Is this really needed ? (Dekel)
|
||||
// We do not need to use to change the font for the last paragraph
|
||||
// or for a command.
|
||||
LyXFont const font =
|
||||
(pit->empty()
|
||||
? pit->getLayoutFont(bparams) : pit->getFont(bparams, pit->size() - 1));
|
||||
|
||||
bool is_command = style->isCommand();
|
||||
|
||||
if (style->resfont.size() != font.size() && pit->next() && !is_command) {
|
||||
if (!need_par)
|
||||
os << '{';
|
||||
os << "\\" << font.latexSize() << " \\par}";
|
||||
} else if (need_par) {
|
||||
os << "\\par}";
|
||||
} else if (is_command)
|
||||
os << '}';
|
||||
|
||||
switch (style->latextype) {
|
||||
case LATEX_ITEM_ENVIRONMENT:
|
||||
case LATEX_LIST_ENVIRONMENT:
|
||||
if (pit->next() && (pit->params().depth() < pit->next()->params().depth())) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
break;
|
||||
case LATEX_ENVIRONMENT:
|
||||
// if its the last paragraph of the current environment
|
||||
// skip it otherwise fall through
|
||||
if (pit->next()
|
||||
&& (pit->next()->layout() != pit->layout()
|
||||
|| pit->next()->params().depth() != pit->params().depth()))
|
||||
break;
|
||||
// fall through possible
|
||||
default:
|
||||
// we don't need it for the last paragraph!!!
|
||||
if (pit->next()) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
|
||||
further_blank_line = false;
|
||||
if (pit->params().lineBottom()) {
|
||||
os << "\\lyxline{\\" << font.latexSize() << '}';
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (pit->params().spaceBottom().kind() != VSpace::NONE) {
|
||||
os << pit->params().spaceBottom().asLatexCommand(bparams);
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (pit->params().pagebreakBottom()) {
|
||||
os << "\\newpage";
|
||||
further_blank_line = true;
|
||||
}
|
||||
|
||||
if (further_blank_line) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (!pit->params().spacing().isDefault()
|
||||
&& (!pit->next() || !pit->next()->hasSameLayout(pit))) {
|
||||
os << pit->params().spacing().writeEnvirEnd() << '\n';
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
// we don't need it for the last paragraph!!!
|
||||
if (pit->next()) {
|
||||
os << '\n';
|
||||
texrow.newline();
|
||||
} else {
|
||||
// Since \selectlanguage write the language to the aux file,
|
||||
// we need to reset the language at the end of footnote or
|
||||
// float.
|
||||
|
||||
if (language->babel() != doc_language->babel()) {
|
||||
if (lyxrc.language_command_end.empty())
|
||||
os << subst(lyxrc.language_command_begin,
|
||||
"$$lang",
|
||||
doc_language->babel())
|
||||
<< endl;
|
||||
else
|
||||
os << subst(lyxrc.language_command_end,
|
||||
"$$lang",
|
||||
language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
|
||||
lyxerr[Debug::LATEX] << "TeXOnePar...done " << pit->next() << endl;
|
||||
return pit->next();
|
||||
}
|
||||
|
@ -14,8 +14,10 @@
|
||||
|
||||
#include "support/types.h"
|
||||
|
||||
class Buffer;
|
||||
class BufferParams;
|
||||
class Paragraph;
|
||||
class TexRow;
|
||||
|
||||
///
|
||||
void breakParagraph(BufferParams const & bparams,
|
||||
@ -49,4 +51,20 @@ bool isFirstInSequence(Paragraph * par);
|
||||
int getEndLabel(Paragraph * para, BufferParams const & bparams);
|
||||
#endif
|
||||
|
||||
Paragraph * TeXDeeper(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
std::ostream & os, TexRow & texrow);
|
||||
|
||||
Paragraph * TeXEnvironment(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
std::ostream & os, TexRow & texrow);
|
||||
|
||||
Paragraph * TeXOnePar(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
Paragraph * pit,
|
||||
std::ostream & os, TexRow & texrow,
|
||||
bool moving_arg);
|
||||
|
||||
#endif // PARAGRAPH_FUNCS_H
|
||||
|
@ -79,7 +79,7 @@ Paragraph::Pimpl::Pimpl(Pimpl const & p, Paragraph * owner, bool same_ids)
|
||||
void Paragraph::Pimpl::clear()
|
||||
{
|
||||
text.clear();
|
||||
#warning changes ?
|
||||
#warning changes ?
|
||||
}
|
||||
|
||||
|
||||
@ -99,20 +99,20 @@ void Paragraph::Pimpl::trackChanges(Change::Type type)
|
||||
lyxerr[Debug::CHANGES] << "already tracking for par " << id_ << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
lyxerr[Debug::CHANGES] << "track changes for par "
|
||||
<< id_ << " type " << type << endl;
|
||||
changes_.reset(new Changes(type));
|
||||
changes_->set(type, 0, size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::untrackChanges()
|
||||
{
|
||||
changes_.reset(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::cleanChanges()
|
||||
{
|
||||
// if we're not tracking, we don't want to reset...
|
||||
@ -123,7 +123,7 @@ void Paragraph::Pimpl::cleanChanges()
|
||||
changes_->set(Change::INSERTED, 0, size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool Paragraph::Pimpl::isChanged(pos_type start, pos_type end) const
|
||||
{
|
||||
if (!tracking())
|
||||
@ -141,7 +141,7 @@ bool Paragraph::Pimpl::isChangeEdited(pos_type start, pos_type end) const
|
||||
return changes_->isChangeEdited(start, end);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::setChange(pos_type pos, Change::Type type)
|
||||
{
|
||||
if (!tracking())
|
||||
@ -150,7 +150,7 @@ void Paragraph::Pimpl::setChange(pos_type pos, Change::Type type)
|
||||
changes_->set(type, pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Change::Type Paragraph::Pimpl::lookupChange(pos_type pos) const
|
||||
{
|
||||
if (!tracking())
|
||||
@ -158,7 +158,7 @@ Change::Type Paragraph::Pimpl::lookupChange(pos_type pos) const
|
||||
|
||||
return changes_->lookup(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Change const Paragraph::Pimpl::lookupChangeFull(pos_type pos) const
|
||||
{
|
||||
@ -167,8 +167,8 @@ Change const Paragraph::Pimpl::lookupChangeFull(pos_type pos) const
|
||||
|
||||
return changes_->lookupFull(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::markErased()
|
||||
{
|
||||
lyx::Assert(tracking());
|
||||
@ -180,18 +180,18 @@ void Paragraph::Pimpl::markErased()
|
||||
changes_->reset(Change::DELETED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::acceptChange(pos_type start, pos_type end)
|
||||
{
|
||||
if (!tracking())
|
||||
return;
|
||||
|
||||
|
||||
if (!size()) {
|
||||
changes_.reset(new Changes(Change::UNCHANGED));
|
||||
return;
|
||||
}
|
||||
|
||||
lyxerr << "acceptchange" << endl;
|
||||
|
||||
lyxerr << "acceptchange" << endl;
|
||||
pos_type i = start;
|
||||
|
||||
for (; i < end; ++i) {
|
||||
@ -212,7 +212,7 @@ void Paragraph::Pimpl::acceptChange(pos_type start, pos_type end)
|
||||
}
|
||||
}
|
||||
|
||||
lyxerr << "endacceptchange" << endl;
|
||||
lyxerr << "endacceptchange" << endl;
|
||||
changes_->reset(Change::UNCHANGED);
|
||||
}
|
||||
|
||||
@ -221,12 +221,12 @@ void Paragraph::Pimpl::rejectChange(pos_type start, pos_type end)
|
||||
{
|
||||
if (!tracking())
|
||||
return;
|
||||
|
||||
|
||||
if (!size()) {
|
||||
changes_.reset(new Changes(Change::UNCHANGED));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
pos_type i = start;
|
||||
|
||||
for (; i < end; ++i) {
|
||||
@ -249,7 +249,7 @@ void Paragraph::Pimpl::rejectChange(pos_type start, pos_type end)
|
||||
changes_->reset(Change::UNCHANGED);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Paragraph::value_type Paragraph::Pimpl::getChar(pos_type pos) const
|
||||
{
|
||||
// This is in the critical path for loading!
|
||||
@ -339,7 +339,7 @@ bool Paragraph::Pimpl::erasePos(pos_type pos)
|
||||
|
||||
// only allow the actual removal if it was /new/ text
|
||||
if (changetype != Change::INSERTED) {
|
||||
if (text[pos] == Paragraph::META_INSET) {
|
||||
if (text[pos] == Paragraph::META_INSET) {
|
||||
Inset * i(owner_->getInset(pos));
|
||||
i->markErased();
|
||||
}
|
||||
@ -351,7 +351,7 @@ bool Paragraph::Pimpl::erasePos(pos_type pos)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::eraseIntern(pos_type pos)
|
||||
{
|
||||
// if it is an inset, delete the inset entry
|
||||
@ -401,7 +401,7 @@ void Paragraph::Pimpl::erase(pos_type pos)
|
||||
erasePos(pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool Paragraph::Pimpl::erase(pos_type start, pos_type end)
|
||||
{
|
||||
pos_type i = start;
|
||||
@ -413,13 +413,13 @@ bool Paragraph::Pimpl::erase(pos_type start, pos_type end)
|
||||
++i;
|
||||
} else {
|
||||
any_erased = true;
|
||||
}
|
||||
}
|
||||
--count;
|
||||
}
|
||||
return any_erased;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::simpleTeXBlanks(ostream & os, TexRow & texrow,
|
||||
pos_type const i,
|
||||
unsigned int & column,
|
||||
@ -480,7 +480,7 @@ bool Paragraph::Pimpl::isTextAt(string const & str, pos_type pos) const
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
ostream & os,
|
||||
@ -510,13 +510,13 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const * buf,
|
||||
// FIXME: remove this check
|
||||
if (!inset)
|
||||
break;
|
||||
|
||||
|
||||
if (inset->isTextInset()) {
|
||||
column += Changes::latexMarkChange(os, running_change,
|
||||
Change::UNCHANGED);
|
||||
running_change = Change::UNCHANGED;
|
||||
}
|
||||
|
||||
|
||||
bool close = false;
|
||||
int const len = os.tellp();
|
||||
//ostream::pos_type const len = os.tellp();
|
||||
@ -742,29 +742,6 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const * buf,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Paragraph * Paragraph::Pimpl::TeXDeeper(Buffer const * buf,
|
||||
BufferParams const & bparams,
|
||||
ostream & os, TexRow & texrow)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "TeXDeeper... " << this << endl;
|
||||
Paragraph * par = owner_;
|
||||
|
||||
while (par && par->params().depth() == owner_->params().depth()) {
|
||||
if (par->layout()->isEnvironment()) {
|
||||
par = par->TeXEnvironment(buf, bparams,
|
||||
os, texrow);
|
||||
} else {
|
||||
par = par->TeXOnePar(buf, bparams,
|
||||
os, texrow, false);
|
||||
}
|
||||
}
|
||||
lyxerr[Debug::LATEX] << "TeXDeeper...done " << par << endl;
|
||||
|
||||
return par;
|
||||
}
|
||||
|
||||
|
||||
void Paragraph::Pimpl::validate(LaTeXFeatures & features,
|
||||
LyXLayout const & layout) const
|
||||
{
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "counters.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
|
||||
class LyXLayout;
|
||||
|
||||
struct Paragraph::Pimpl {
|
||||
@ -51,24 +51,24 @@ struct Paragraph::Pimpl {
|
||||
bool isChanged(lyx::pos_type start, lyx::pos_type end) const;
|
||||
/// is there a non-addition in this range ?
|
||||
bool isChangeEdited(lyx::pos_type start, lyx::pos_type end) const;
|
||||
|
||||
|
||||
/// set change at pos
|
||||
void setChange(lyx::pos_type pos, Change::Type type);
|
||||
|
||||
|
||||
/// mark as erased
|
||||
void markErased();
|
||||
|
||||
|
||||
/// accept change
|
||||
void acceptChange(lyx::pos_type start, lyx::pos_type end);
|
||||
|
||||
/// reject change
|
||||
void rejectChange(lyx::pos_type start, lyx::pos_type end);
|
||||
|
||||
|
||||
/// are we tracking changes ?
|
||||
bool tracking() const {
|
||||
return changes_.get();
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
value_type getChar(lyx::pos_type pos) const;
|
||||
///
|
||||
@ -147,9 +147,6 @@ struct Paragraph::Pimpl {
|
||||
///
|
||||
FontList fontlist;
|
||||
|
||||
///
|
||||
Paragraph * TeXDeeper(Buffer const *, BufferParams const &,
|
||||
std::ostream &, TexRow & texrow);
|
||||
///
|
||||
void simpleTeXBlanks(std::ostream &, TexRow & texrow,
|
||||
lyx::pos_type const i,
|
||||
@ -187,7 +184,7 @@ private:
|
||||
|
||||
/// for recording and looking up changes in revision tracking mode
|
||||
boost::scoped_ptr<Changes> changes_;
|
||||
|
||||
|
||||
/// Who owns us?
|
||||
Paragraph * owner_;
|
||||
///
|
||||
|
Loading…
Reference in New Issue
Block a user