file format change due to r29770.

No automatic width calculation is done for old documents, because these might rely on settings in
nomencl.cfg.

A GUI to alter this is needed.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29775 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jürgen Spitzmüller 2009-05-22 08:31:43 +00:00
parent 7ba2bfb81d
commit 18cfe15b64
6 changed files with 71 additions and 25 deletions

View File

@ -1,6 +1,10 @@
LyX file-format changes
-----------------------
2009-04-26 Jürgen Spitzmüller <spitz@lyx.org>
* Format incremented to 359: param set_width for nomencl_print
CommandInset.
2009-04-26 Jürgen Spitzmüller <spitz@lyx.org>
* Format incremented to 358: support for custom bibtex and
makeindex commands.

View File

@ -660,6 +660,34 @@ def revert_custom_processors(document):
del document.header[i]
def convert_nomencl_width(document):
" Add set_width param to nomencl_print "
i = 0
while True:
i = find_token(document.body, "\\begin_inset CommandInset nomencl_print", i)
if i == -1:
break
document.body.insert(i + 2, "set_width \"none\"")
i = i + 1
def revert_nomencl_width(document):
" Remove set_width param from nomencl_print "
i = 0
while True:
i = find_token(document.body, "\\begin_inset CommandInset nomencl_print", i)
if i == -1:
break
j = find_end_of_inset(document.body, i)
l = find_token(document.body, "set_width", i, j)
if l == -1:
document.warning("Can't find set_width option for nomencl_print!")
i = j
continue
del document.body[l]
i = i + 1
##
# Conversion hub
#
@ -677,10 +705,12 @@ convert = [[346, []],
[355, []],
[356, []],
[357, []],
[358, []]
[358, []],
[359, [convert_nomencl_width]]
]
revert = [[357, [revert_custom_processors]],
revert = [[358, [revert_nomencl_width]],
[357, [revert_custom_processors]],
[356, [revert_ulinelatex]],
[355, [revert_uulinewave]],
[354, [revert_strikeout]],

View File

@ -125,7 +125,7 @@ namespace {
// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
int const LYX_FORMAT = 358; // jspitzm: customizable bibtex/makeindex calls
int const LYX_FORMAT = 359; // jspitzm: nomencl auto calculation
typedef map<string, bool> DepClean;
typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;

View File

@ -209,8 +209,11 @@ Inset * createInsetHelper(Buffer & buf, FuncRequest const & cmd)
return new InsetPrintIndex(icp);
}
case LFUN_NOMENCL_PRINT:
return new InsetPrintNomencl(InsetCommandParams(NOMENCL_PRINT_CODE));
case LFUN_NOMENCL_PRINT: {
InsetCommandParams icp(NOMENCL_PRINT_CODE);
icp["set_width"] = from_ascii("auto");
return new InsetPrintNomencl(icp);
}
case LFUN_TOC_INSERT:
return new InsetTOC(InsetCommandParams(TOC_CODE));

View File

@ -125,10 +125,15 @@ InsetPrintNomencl::InsetPrintNomencl(InsetCommandParams const & p)
ParamInfo const & InsetPrintNomencl::findInfo(string const & /* cmdName */)
{
// there are no parameters to give because the symbol width is set via
// nomencl's \nomlabelwidth in InsetPrintNomencl::latex and not as
// optional parameter of \printnomenclature
// The symbol width is set via nomencl's \nomlabelwidth in
// InsetPrintNomencl::latex and not as optional parameter of
// \printnomenclature
static ParamInfo param_info_;
if (param_info_.empty()) {
// how is the width set?
// values: none|auto
param_info_.add("set_width", ParamInfo::LYX_INTERNAL);
}
return param_info_;
}
@ -163,10 +168,11 @@ int InsetPrintNomencl::docbook(odocstream & os, OutputParams const &) const
}
namespace {
docstring nomenclWidest(Buffer const & buffer)
{
// nomenclWidest() determines and returns the widest used nomenclature
// symbol in the document
// nomenclWidest() determines and returns the widest used
// nomenclature symbol in the document
int w = 0;
docstring symb;
@ -199,20 +205,29 @@ docstring nomenclWidest(Buffer const & buffer)
symb = symb + "W";
return symb;
}
}
int InsetPrintNomencl::latex(odocstream & os, OutputParams const &) const
{
int lines = 0;
docstring widest = nomenclWidest(buffer());
// set the label width via nomencl's command \nomlabelwidth
// this must be output before the command \printnomenclature
if (!widest.empty()) {
// assure that the width is never below the predefined value of 1 cm
os << "\\settowidth{\\nomlabelwidth}{" << widest <<"}\n";
os << "\\ifthenelse{%\n \\lengthtest{\\nomlabelwidth < 1cm}}\n";
os << " {\\setlength{\\nomlabelwidth}{1cm}}\n {}\n";
++lines;
if (getParam("set_width") == "auto") {
docstring widest = nomenclWidest(buffer());
// set the label width via nomencl's command
// \nomlabelwidth. This must be output before the command
// \printnomenclature
if (!widest.empty()) {
// assure that the width is never below the
// predefined value of 1 cm
os << "\\settowidth{\\nomlabelwidth}{"
<< widest
<< "}\n";
os << "\\ifthenelse{%\n";
os << "\\lengthtest{\\nomlabelwidth < 1cm}}\n";
os << " {\\setlength{\\nomlabelwidth}{1cm}}\n";
os << " {}\n";
lines += 5;
}
}
// output the command \printnomenclature
os << getCommand();

View File

@ -80,14 +80,8 @@ public:
int latex(odocstream &, OutputParams const &) const;
private:
Inset * clone() const { return new InsetPrintNomencl(*this); }
///
friend docstring nomenclWidest(Buffer const & buffer);
};
/// return the widest symbol of all nomenclature entries of the document
docstring nomenclWidest(Buffer const &);
} // namespace lyx
#endif