From 5fe40522fe6b475fdff779fd26e89ae6bd1e8103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Sat, 13 Feb 2010 13:23:59 +0000 Subject: [PATCH] * InsetNomenclature.cpp: - handle unicode gracefully. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33462 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/InsetNomencl.cpp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/insets/InsetNomencl.cpp b/src/insets/InsetNomencl.cpp index c5ebfa2c27..90c7258a4d 100644 --- a/src/insets/InsetNomencl.cpp +++ b/src/insets/InsetNomencl.cpp @@ -18,6 +18,7 @@ #include "Buffer.h" #include "DispatchResult.h" #include "Font.h" +#include "Encoding.h" #include "FuncRequest.h" #include "FuncStatus.h" #include "InsetIterator.h" @@ -26,6 +27,7 @@ #include "Length.h" #include "LyX.h" #include "MetricsInfo.h" +#include "OutputParams.h" #include "output_xhtml.h" #include "sgml.h" @@ -58,8 +60,10 @@ ParamInfo const & InsetNomencl::findInfo(string const & /* cmdName */) static ParamInfo param_info_; if (param_info_.empty()) { param_info_.add("prefix", ParamInfo::LATEX_OPTIONAL); - param_info_.add("symbol", ParamInfo::LATEX_REQUIRED); - param_info_.add("description", ParamInfo::LATEX_REQUIRED); + param_info_.add("symbol", ParamInfo::LATEX_REQUIRED, + ParamInfo::HANDLING_LATEXIFY); + param_info_.add("description", ParamInfo::LATEX_REQUIRED, + ParamInfo::HANDLING_LATEXIFY); } return param_info_; } @@ -230,7 +234,7 @@ int InsetPrintNomencl::docbook(odocstream & os, OutputParams const &) const namespace { -docstring nomenclWidest(Buffer const & buffer) +docstring nomenclWidest(Buffer const & buffer, OutputParams const & runparams) { // nomenclWidest() determines and returns the widest used // nomenclature symbol in the document @@ -265,6 +269,22 @@ docstring nomenclWidest(Buffer const & buffer) } } // return the widest (or an empty) string + if (!symb.empty()) { + docstring latex_symb; + for (size_t n = 0; n < symb.size(); ++n) { + try { + latex_symb += runparams.encoding->latexChar(symb[n]); + } catch (EncodingException & /* e */) { + if (runparams.dryrun) { + latex_symb += "<" + _("LyX Warning: ") + + _("uncodable character") + " '"; + latex_symb += docstring(1, symb[n]); + latex_symb += "'>"; + } + } + } + return latex_symb; + } return symb; } } @@ -272,9 +292,10 @@ docstring nomenclWidest(Buffer const & buffer) int InsetPrintNomencl::latex(odocstream & os, OutputParams const & runparams_in) const { + OutputParams runparams = runparams_in; int lines = 0; if (getParam("set_width") == "auto") { - docstring widest = nomenclWidest(buffer()); + docstring widest = nomenclWidest(buffer(), runparams); // Set the label width via nomencl's command \nomlabelwidth. // This must be output before the command \printnomenclature if (!widest.empty()) { @@ -295,7 +316,6 @@ int InsetPrintNomencl::latex(odocstream & os, OutputParams const & runparams_in) return lines; } // output the command \printnomenclature - OutputParams runparams = runparams_in; os << getCommand(runparams); return lines; }