On Mon, Apr 16, 2018 at 04:03:44PM +0000, Scott Kostyshak wrote:

> I see. Thanks for the explanation. OK I will test whether they are
> needed with the example I gave or with the knitr example file. If it is
> not needed for both, I will remove it for that type of box. Let me know
> if there is any other test case that you think would be good to check.

Attached is a patch.

I first tested compilation of all box types for both the knitr manual
and for the verbatim example in current master. All compilations
succeeded. I then removed \cprotect for all box types, and only the
simple frame failed.

I then tested that with the attached patch, all compilations succeed.
(Note that I tested all compilations with formats pdf, pdf2, pdf3, pdf4,
and pdf5, and not surprisingly all formats give the same result).

Any objection to put this patch in?

Scott
From 7c018696f1d5a6e2dc257010edbcd09e5cc8c827 Mon Sep 17 00:00:00 2001
From: Scott Kostyshak <skost...@lyx.org>
Date: Wed, 18 Apr 2018 15:11:55 -0400
Subject: [PATCH] Use \cprotect only for "simple frame" boxes

Compilation succeeds with verbatim environments for the other types
of boxes without \cprotect.
---
 src/insets/InsetBox.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp
index 7dc5ed3..e543b44 100644
--- a/src/insets/InsetBox.cpp
+++ b/src/insets/InsetBox.cpp
@@ -407,10 +407,10 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const
 			os << "{\\fboxsep " << from_ascii(separation_string);
 		if (!params_.inner_box && !width_string.empty()) {
 			if (params_.framecolor != "black" || params_.backgroundcolor != "none") {
-				os << cprotect << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}{";
+				os << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}{";
 				os << "\\makebox";
 			} else
-				os << cprotect << "\\framebox";
+				os << "\\framebox";
 			// Special widths, see usrguide sec. 3.5
 			// FIXME UNICODE
 			if (params_.special != "none") {
@@ -425,7 +425,7 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const
 				os << "[" << params_.hor_pos << "]";
 		} else {
 			if (params_.framecolor != "black" || params_.backgroundcolor != "none")
-				os << cprotect << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}";
+				os << "\\fcolorbox{" << params_.framecolor << "}{" << params_.backgroundcolor << "}";
 			else
 				os << cprotect << "\\fbox";
 		}
@@ -434,12 +434,12 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const
 	case ovalbox:
 		if (!separation_string.empty() && separation_string != defaultSep)
 			os << "{\\fboxsep " << from_ascii(separation_string);
-		os << cprotect << "\\ovalbox{";
+		os << "\\ovalbox{";
 		break;
 	case Ovalbox:
 		if (!separation_string.empty() && separation_string != defaultSep)
 			os << "{\\fboxsep " << from_ascii(separation_string);
-		os << cprotect << "\\Ovalbox{";
+		os << "\\Ovalbox{";
 		break;
 	case Shadowbox:
 		if (thickness_string != defaultThick) {
@@ -461,7 +461,7 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const
 				&& separation_string == defaultSep
 				&& thickness_string == defaultThick)
 				os << "{\\shadowsize " << from_ascii(shadowsize_string);
-		os << cprotect << "\\shadowbox{";
+		os << "\\shadowbox{";
 		break;
 	case Shaded:
 		// must be set later because e.g. the width settings only work when
@@ -475,7 +475,7 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const
 		}
 		if (separation_string != defaultSep && thickness_string == defaultThick)
 			os << "{\\fboxsep " << from_ascii(separation_string);
-		os << cprotect << "\\doublebox{";
+		os << "\\doublebox{";
 		break;
 	}
 
-- 
2.7.4

Attachment: signature.asc
Description: PGP signature

Reply via email to