Author: baum
Date: Sun Nov 13 17:11:45 2011
New Revision: 40186
URL: http://www.lyx.org/trac/changeset/40186
Log:
Fix bug #3036: font changes inside \markright do not escape outside their scope
Modified:
lyx-devel/trunk/lib/syntax.default
lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp
lyx-devel/trunk/src/tex2lyx/tex2lyx.h
lyx-devel/trunk/src/tex2lyx/text.cpp
Modified: lyx-devel/trunk/lib/syntax.default
==============================================================================
--- lyx-devel/trunk/lib/syntax.default Sun Nov 13 13:23:27 2011 (r40185)
+++ lyx-devel/trunk/lib/syntax.default Sun Nov 13 17:11:45 2011 (r40186)
@@ -370,6 +370,9 @@
% is some code that may occur in a .tex file created by LyX. The re-import
% works only because the first argument of \texorpdfstring is specified as
% translatable in this file.
+% If a command puts the contents of an argument inside an own group, use
+% "group" instead of "translate". Otherwise things like font changes would
+% survive the end of the group in LyX (bug 3036).
\abstractname
\Acrobatmenu{}{} % from the hyperref package
@@ -515,8 +518,8 @@
\makelabels
\maketitle
\MakeShortVerb{} % from doc.sty, argument must be verbatim
-\markboth{}{translate}
-\markright{translate}
+\markboth{group}{group}
+\markright{group}
\mathversion{}
\mbox{translate}
\mddefault
Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Sun Nov 13 13:23:27 2011
(r40185)
+++ lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Sun Nov 13 17:11:45 2011
(r40186)
@@ -355,6 +355,8 @@
string const arg = p.getArg('{', '}');
if (arg == "translate")
arguments.push_back(required);
+ else if (arg == "group")
+ arguments.push_back(req_group);
else if (arg == "item")
arguments.push_back(item);
else if (arg == "displaymath")
@@ -362,8 +364,11 @@
else
arguments.push_back(verbatim);
} else {
- p.getArg('[', ']');
- arguments.push_back(optional);
+ string const arg = p.getArg('[', ']');
+ if (arg == "group")
+ arguments.push_back(opt_group);
+ else
+ arguments.push_back(optional);
}
}
commands[command] = arguments;
Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.h
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/tex2lyx.h Sun Nov 13 13:23:27 2011
(r40185)
+++ lyx-devel/trunk/src/tex2lyx/tex2lyx.h Sun Nov 13 17:11:45 2011
(r40186)
@@ -116,9 +116,11 @@
enum ArgumentType {
required,
+ req_group,
verbatim,
item,
optional,
+ opt_group,
displaymath,
};
Modified: lyx-devel/trunk/src/tex2lyx/text.cpp
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/text.cpp Sun Nov 13 13:23:27 2011
(r40185)
+++ lyx-devel/trunk/src/tex2lyx/text.cpp Sun Nov 13 17:11:45 2011
(r40186)
@@ -674,10 +674,14 @@
for (size_t i = 0; i < no_arguments; ++i) {
switch (template_arguments[i]) {
case required:
+ case req_group:
// This argument contains regular LaTeX
handle_ert(os, ert + '{', context);
eat_whitespace(p, os, context, false);
- parse_text(p, os, FLAG_ITEM, outer, context);
+ if (template_arguments[i] == required)
+ parse_text(p, os, FLAG_ITEM, outer, context);
+ else
+ parse_text_snippet(p, os, FLAG_ITEM, outer,
context);
ert = "}";
break;
case item:
@@ -695,6 +699,7 @@
ert += '{' + p.verbatim_item() + '}';
break;
case optional:
+ case opt_group:
// true because we must not eat whitespace
// if an optional arg follows we must not strip the
// brackets from this one