考试类别 + \xcolor + \tikz 冲突:颜色定义不兼容

考试类别 + \xcolor + \tikz 冲突:颜色定义不兼容

代码发出此警告:

Package xcolor Warning: Incompatible color definition on input line 97.

此数学工作表中颜色以 3 种方式使用:

  1. 画出黄色高亮框来包含最终答案

前任:\colorbox{yellow}{$x=\dfrac{\log{34}}

  1. 将颜色应用于某些指数和对数底数

前任:$\textcolor{red}{\cancel{log_4}}(5x+15)=\textcolor{red}{\cancel{log_4}}(35)$

  1. 使用 tikz,绘制蓝色箭头指示过渡到解决方案程序的下一步。

例如:$5^{x-3}=35 \tikz[baseline=-0.65ex]\draw[arr] (0,0) -- ++ (1,0); \log 5^{x-3} = \log 35$(h/t@zarko)

在搜索了几篇 tex.stack 帖子后,我尝试usepackage{xcolor}在 之前立即插入\usepackage{tikz}。此编辑未能删除警告消息。

非常感谢您为解决此问题所提供的帮助!

供参考:使用考试类,因为它提供 printanswers%printanswers(即不打印答案)命令。

姆韦

\documentclass[12pt]{exam}
\usepackage[a4paper,margin=0.5in,include head]{geometry}
\printanswers
% un-comment to print solutions.
\renewcommand{\solutiontitle}{}
\usepackage{amsmath}
\usepackage{cancel}
\usepackage{framed}
\usepackage{bm}
\usepackage{multicol}
\usepackage[nice]{nicefrac}
\usepackage{tasks}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{arr/.style = {blue,-{Triangle[angle=60:1pt 3]}, thick,
                       shorten <=2mm, shorten >=2mm}
          } 
\pagestyle{head}
\header{\textbf{ Algebra II: TEST 4 REVIEW (Unit 14: Logarithms)}}
{}
{} 
\newcommand{\pagetop}{%
 }
\newlength{\lwidth}% added <<<<<
\settowidth{\lwidth}{(99)\enspace} % added
\settasks{after-item-skip=1em,
    after-skip=2cm,
    label-width=\lwidth, % changed <<<<<<<<<
    item-indent=0pt,   % changed <<<<<<<<<<
    %label-format = \bfseries, 
    %add \bf to make numbers bold <<<<<<<<<<
    label=(\arabic*), % 
    label-offset = -\lwidth,% added <<<<<
    item-format = \hspace{\lwidth},% added <<<<<
    column-sep=2em,    % changed <<<<<<<<<  
}
\makeatletter
\renewcommand{\fullwidth}[1]{%
    \vbox{%     
        \leftskip=-\lwidth \rightskip=0pt
        \advance\linewidth\@totalleftmargin%
        \@totalleftmargin=0pt%
        #1}%
    \nobreak
}
\makeatother
\newlength{\SolutionSpace}
\ifthenelse{\boolean{printanswers}}
{\setlength{\SolutionSpace}{5cm}
    \colorsolutionboxes 
\definecolor{SolutionBoxColor}{gray}{0.8}}% solutions are printed
{\setlength{\SolutionSpace}{0cm}
    \colorsolutionboxes 
    \definecolor{SolutionBoxColor}{gray}{1}}% solutions are not being printed
%*********************************************
\begin{document}
%definition for bigskip = 1 line to replace all \bigskip
\def\bigskip{\vskip\bigskipamount}
\begin{tasks}
[style=enumerate](2)
\task![]\fullwidth{\textbf{Solve for $x$. If necessary, round answers to 2 decimal places.}}
%%% Prob #1
\task 
$2 \bm{\cdot}5^{x-3}-7=61$
\begin{solutionorbox}[\SolutionSpace]
$2 \bm{\cdot}5^{x-3}=68$\bigskip
$\dfrac{\cancel{2}\bm{\cdot}5^{x-3}}{\cancel{2}} =\dfrac{68}{2}$\bigskip
$5^{x-3}=35 \tikz[baseline=-0.65ex]\draw[arr] (0,0) -- ++ (1,0);
\log 5^{x-3} = \log 35$\bigskip
$(x-3)\log5=\log{34}$\bigskip
$\dfrac{(x-3)\cancel{\log5}}{\cancel{\log5}}=\dfrac{\log{34}}{\log5}$\bigskip
$x-3=\dfrac{\log{34}}{\log5}$\hphantom{(}\hphantom{(}\hphantom{(}
\colorbox{yellow}{$x=\dfrac{\log{34}}{\log5}+3\approx5.19$}
\end{solutionorbox}

%%% Prob #2
\task 
$\log_4(x+3)+\log_45=\log_4{35}$
\vspace{.25cm}
\begin{solutionorbox}[\SolutionSpace]
$\log_4(x+3)(5)=\log_4(35)$\bigskip
$\textcolor{red}{\cancel{log_4}}(5x+15)=\textcolor{red}{\cancel{log_4}}(35)$\bigskip
$5x+15=35$\bigskip
$5x=20$\hphantom{(}\hphantom{(}\hphantom{(}
\colorbox{yellow}{$x=4$}
\end{solutionorbox}
%%% Prob #3
\task 
$\log_4(3x+4)=3$\vspace{.25cm}
\begin{solutionorbox}[\SolutionSpace]
Hint: If $\log_{\textcolor{red}{a}}N=\textcolor{blue}{x}$, then $\textcolor{red}{a}^{\textcolor{blue}{x}}=N$.\bigskip
$4^3=3x+4 \tikz[baseline=-0.65ex]\draw[arr] (0,0) -- ++ (1,0);64=3x+4$\bigskip
$3x=60$\bigskip
\colorbox{yellow}{$x=20$}
\end{solutionorbox}

\end{tasks}
\end{document}

答案1

一个(非常)最小的工作示例是:

\documentclass{exam}
\usepackage{xcolor} 

\printanswers 
\colorsolutionboxes 
\definecolor{SolutionBoxColor}{gray}{0.8}

\begin{document} 
\begin{solutionorbox} 
Foo
\end{solutionorbox} 
\end{document}

您收到的警告实际上并不会造成任何伤害。您收到此警告的原因是该exam软件包使用了特定于该color软件包的命令语法。该xcolor软件包也能理解此语法,但它更倾向于使用不同的、较新的语法。

您可以通过在序言中添加几行来解决这个问题:

\documentclass{exam}
\usepackage{xcolor} 

\renewcommand{\colorfbox}[2]{%
  \colorlet{currentColor}{.}%
  {\color{#1}\fbox{\color{currentColor}#2}}%
}

\printanswers 
\colorsolutionboxes 
\definecolor{SolutionBoxColor}{gray}{0.8}

\begin{document} 
\begin{solutionorbox} 
Foo
\end{solutionorbox} 
\end{document}

(感谢 Ulrike Fischer 确认这一点!)


这是什么原因造成的?罪魁祸首是文件中的这个定义exam.cls(删除了注释):

\newcommand{\colorfbox}[2]{%
  \expandafter\let\csname\string\color@saved@color\endcsname\current@color%
  {\color{#1}\fbox{\color{saved@color}#2}}%
} 

它旨在围绕某物创建一个框,并以某种颜色绘制框的框架,同时将框的内容保持在框外部使用的颜色。如果color加载了包,则该定义使用的语法会很好地工作。

使用该xcolor包,可以更轻松地通过颜色名称访问当前颜色.。因此,上面的代码可以重写为:

\newcommand{\colorfbox}[2]{%
  \colorlet{currentColor}{.}%
  {\color{#1}\fbox{\color{currentColor}#2}}%
}

xcolor当加载包时,TeX 遇到以 开头的命令中存储的某些颜色定义时,会发出有关“不兼容的颜色定义”的警告\color@。 的原始定义\colorfbox定义了这样的命令,因此每次使用此命令时都会发出警告。 重写的代码解决了这个问题。

相关内容