From 343a9749abe4f32e67ef9aae9554ee4bd8dae1b4 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sun, 1 Oct 2023 10:12:52 +0200 Subject: [PATCH] No need to use \fcolorbox with explicit black frame and no background White background, however, is always treated explicit (think non-white page background) --- src/insets/InsetBox.cpp | 30 +++++++++++++++++++++--------- src/insets/InsetBox.h | 2 ++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp index c15ae86c98..8adf0f7fe0 100644 --- a/src/insets/InsetBox.cpp +++ b/src/insets/InsetBox.cpp @@ -430,9 +430,11 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const if (separation_string != defaultSep && thickness_string == defaultThick) os << "{\\fboxsep " << from_ascii(separation_string); if (!params_.inner_box && !width_string.empty()) { - if (params_.framecolor != "default" || params_.backgroundcolor != "none") { - os << maybeBeginL << "\\fcolorbox{" << getFrameColor() << "}{" << getBackgroundColor() << "}{"; - os << "\\makebox"; + if (useFColorBox()) { + os << maybeBeginL + << "\\fcolorbox{" << getFrameColor() + << "}{" << getBackgroundColor() + << "}{" << "\\makebox"; needEndL = !maybeBeginL.empty(); } else os << "\\framebox"; @@ -449,8 +451,10 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const if (params_.hor_pos != 'c') os << "[" << params_.hor_pos << "]"; } else { - if (params_.framecolor != "default" || params_.backgroundcolor != "none") { - os << maybeBeginL << "\\fcolorbox{" << getFrameColor() << "}{" << getBackgroundColor() << "}"; + if (useFColorBox()) { + os << maybeBeginL + << "\\fcolorbox{" << getFrameColor() + << "}{" << getBackgroundColor() << "}"; needEndL = !maybeBeginL.empty(); } else { if (!cprotect.empty() && contains(runparams.active_chars, '^')) { @@ -616,8 +620,7 @@ void InsetBox::latex(otexstream & os, OutputParams const & runparams) const break; case Boxed: os << "}"; - if (!params_.inner_box && !width_string.empty() - && (params_.framecolor != "default" || params_.backgroundcolor != "none")) + if (!params_.inner_box && !width_string.empty() && useFColorBox()) os << "}"; if (separation_string != defaultSep || thickness_string != defaultThick) os << "}"; @@ -810,8 +813,8 @@ void InsetBox::validate(LaTeXFeatures & features) const break; case Boxed: features.require("calc"); - if (params_.framecolor != "default" || params_.backgroundcolor != "none") - // \fcolorbox, which is part of (x)color, is used + if (useFColorBox()) + // \fcolorbox is provided by [x]color features.require("xcolor"); break; case ovalbox: @@ -892,6 +895,15 @@ string const InsetBox::getBackgroundColor() const } +bool InsetBox::useFColorBox() const +{ + // we only need an \fcolorbox if the framecolor is something else + // than black in the output or if the backgroundcolor is not none + // (also needed with white, consider non-white page coloring) + return getFrameColor() != "black" || params_.backgroundcolor != "none"; +} + + ///////////////////////////////////////////////////////////////////////// // // InsetBoxParams diff --git a/src/insets/InsetBox.h b/src/insets/InsetBox.h index 97c2a27750..f4a743667b 100644 --- a/src/insets/InsetBox.h +++ b/src/insets/InsetBox.h @@ -167,6 +167,8 @@ private: std::string const getFrameColor(bool const gui = false) const; /// std::string const getBackgroundColor() const; + /// + bool useFColorBox() const; /// friend class InsetBoxParams;